Explorar o código

UPDATE:新增参数验证

zoie hai 11 meses
pai
achega
86436c8ff9

+ 10 - 9
app/admin/model/address.go

@@ -4,15 +4,16 @@ import model2 "gas-cylinder-api/common/model"
 
 type Address struct {
 	model2.Model
-	CustomerId string  `json:"customerId" gorm:"size:32;"` // 客户id
-	Name       string  `json:"name" gorm:"size:32;"`       // 收货人名称
-	Phone      string  `json:"phone" gorm:"size:32;"`      // 联系电话
-	City       string  `json:"city" gorm:"size:6;"`        // 所在地市
-	Area       string  `json:"area" gorm:"size:6;"`        // 所属区/县
-	Address    string  `json:"address" gorm:"size:128"`    // 详细地址
-	Lng        float64 `json:"lng" gorm:"size:9;"`         // 经度
-	Lat        float64 `json:"lat" gorm:"size:9;"`         // 纬度
-	IsDefault  bool    `json:"isDefault" gorm:"size:128"`  // 默认
+	CustomerId string  `json:"customerId" gorm:"size:32;"`  // 客户id
+	Name       string  `json:"name" gorm:"size:32;"`        // 收货人名称
+	Phone      string  `json:"phone" gorm:"size:32;"`       // 联系电话
+	City       string  `json:"city" gorm:"size:6;"`         // 所在地市
+	Area       string  `json:"area" gorm:"size:6;"`         // 所属区/县
+	Address    string  `json:"address" gorm:"size:128"`     // 详细地址
+	Lng        float64 `json:"lng" gorm:"size:9;"`          // 经度
+	Lat        float64 `json:"lat" gorm:"size:9;"`          // 纬度
+	IsDefault  bool    `json:"isDefault" gorm:"size:128"`   // 默认
+	AddressImg string  `json:"addressImg" gorm:"size:255;"` // 现场图片
 	model2.ControlBy
 	model2.ModelTime
 }

+ 1 - 1
app/admin/model/operation_log.go

@@ -26,7 +26,7 @@ type OperationLog struct {
 	model2.Model
 	ProvOperationLog
 	State                int          `json:"state" gorm:"size:36;default:1"` // 1 - 新循环 2-已完成
-	OptUserObj           SysUserOmit  `json:"optUserObj" gorm:"foreignkey:OptUser;references:ProvUserId"`
+	OptUserObj           SysUserOmit  `json:"optUserObj" gorm:"->;foreignkey:OptUser;references:ProvUserId"`
 	ObjectUserObj        SysUserOmit  `json:"objectUserObj" gorm:"->;foreignkey:ObjectUser;references:ProvUserId"`
 	ObjectCustomerObj    CustomerOmit `json:"objectCustomerObj" gorm:"->;foreignkey:ObjectCustomer;references:Id"`
 	OptCustomerObj       CustomerOmit `json:"optCustomerObj" gorm:"->;foreignkey:OptCustomer;references:Id"`

+ 22 - 0
app/admin/service/car_info.go

@@ -15,6 +15,26 @@ type CarInfo struct {
 	service.Service
 }
 
+func CarInfoStartTransportTimeScopes(startTransportTime string) func(db *gorm.DB) *gorm.DB {
+
+	return func(db *gorm.DB) *gorm.DB {
+		if len(startTransportTime) == 0 {
+			return db
+		}
+		return db.Where("JSON_EXTRACT(prov_car_info, '$.transportTime') >= ? ", startTransportTime)
+	}
+}
+
+func CarInfoEndTransportTimeScopes(endTransportTime string) func(db *gorm.DB) *gorm.DB {
+
+	return func(db *gorm.DB) *gorm.DB {
+		if len(endTransportTime) == 0 {
+			return db
+		}
+		return db.Where("JSON_EXTRACT(prov_car_info, '$.transportTime') <= ? ", endTransportTime)
+	}
+}
+
 // GetPage 获取CarInfo列表
 func (e *CarInfo) GetPage(c *dto.CarInfoGetPageReq, list *[]model.CarInfo, count *int64, p *actions.DataPermission) error {
 	var err error
@@ -22,6 +42,8 @@ func (e *CarInfo) GetPage(c *dto.CarInfoGetPageReq, list *[]model.CarInfo, count
 
 	err = e.Orm.Model(&data).
 		Scopes(
+			CarInfoStartTransportTimeScopes(c.StartTransportTime),
+			CarInfoEndTransportTimeScopes(c.EndTransportTime),
 			cDto.MakeCondition(c.GetNeedSearch()),
 			cDto.Paginate(c.GetPageSize(), c.GetPageIndex()),
 			actions.Permission(data.TableName(), p),

+ 10 - 1
app/admin/service/customer.go

@@ -10,6 +10,7 @@ import (
 	"gogs.baozhida.cn/zoie/OAuth-core/pkg/utils"
 	"gogs.baozhida.cn/zoie/OAuth-core/service"
 	"gorm.io/gorm"
+	"strings"
 )
 
 type Customer struct {
@@ -214,7 +215,7 @@ func (e *Customer) Update(c *dto.CustomerUpdateReq, p *actions.DataPermission) e
 
 	var CustomerModel = model.Customer{}
 	// 查询客户是否存在
-	err = e.Orm.Scopes(actions.Permission(CustomerModel.TableName(), p)).
+	err = tx.Scopes(actions.Permission(CustomerModel.TableName(), p)).
 		Where("id = ?", c.GetId()).
 		First(&CustomerModel).Error
 	if err != nil {
@@ -224,6 +225,14 @@ func (e *Customer) Update(c *dto.CustomerUpdateReq, p *actions.DataPermission) e
 		}
 		return global.UpdateFailedErr
 	}
+	if strings.Contains(c.Id, "_") {
+		// 小程序下单用户
+		customer_id := strings.Split(c.Id, "_")[0]
+		if len(c.AddressImg) > 0 {
+			err = tx.Model(model.Address{}).Where("customer_id like ? and city = ? and area = ? and address = ?",
+				customer_id+"%", c.City, c.Area, c.Address).Update("address_img", c.AddressImg).Error
+		}
+	}
 	c.Generate(&CustomerModel)
 	// 检查数据完整性
 	dataIntegrity := CustomerCheckDataIntegrity(CustomerModel)

+ 3 - 3
app/admin/service/dto/address.go

@@ -24,9 +24,9 @@ type AddressInsertReq struct {
 	Id         int     `json:"id" comment:"编码" swaggerignore:"true"` // 编码
 	CustomerId string  `json:"customerId"  swaggerignore:"true"`     // 客户id
 	Name       string  `json:"name"`                                 // 收货人名称
-	Phone      string  `json:"phone"`                                // 联系电话
-	City       string  `json:"city"`                                 // 所在地市
-	Area       string  `json:"area"`                                 // 所属区/县
+	Phone      string  `json:"phone" vd:"len($)>0;msg:'手机号不能为空'"`    // 联系电话
+	City       string  `json:"city" vd:"len($)>0;msg:'所在地市不能为空'"`    // 所在地市
+	Area       string  `json:"area" vd:"len($)>0;msg:'所属区/县不能为空'"`   // 所属区/县
 	Address    string  `json:"address"`                              // 详细地址
 	IsDefault  bool    `json:"isDefault"`                            // 默认地址
 	Lng        float64 `json:"lng"`                                  // 经度

+ 3 - 3
app/admin/service/dto/applet_customer.go

@@ -2,9 +2,9 @@ package dto
 
 // 小程序客户登录
 type AppletCustomerLoginReq struct {
-	Phone      string `json:"phone"`      // 手机号
-	Password   string `json:"password"`   // 密码
-	VerifyCode string `json:"verifyCode"` // 验证码
+	Phone      string `json:"phone" vd:"len($)>0;msg:'手机号不能为空'"`   // 手机号
+	Password   string `json:"password" vd:"len($)>0;msg:'密码不能为空'"` // 密码
+	VerifyCode string `json:"verifyCode"`                          // 验证码
 }
 type AppletCustomerWxLoginReq struct {
 	Phone string `json:"phone"` // 手机号

+ 4 - 2
app/admin/service/dto/car_info.go

@@ -7,8 +7,10 @@ import (
 )
 
 type CarInfoGetPageReq struct {
-	dto.Pagination `search:"-"`
-	CarNo          string `form:"carNo" search:"type:contains;column:car_no;table:car_info"` // 角色名称
+	dto.Pagination     `search:"-"`
+	CarNo              string `form:"carNo" search:"type:contains;column:car_no;table:car_info"` // 角色名称
+	StartTransportTime string `form:"startTransportTime" search:"-"`                             // 角色名称
+	EndTransportTime   string `form:"endTransportTime" search:"-"`                               // 角色名称
 	CarInfoOrder
 }
 

+ 1 - 1
app/admin/service/dto/device.go

@@ -23,7 +23,7 @@ type DeviceInsertReq struct {
 	Id          int    `json:"id" comment:"编码" swaggerignore:"true"`              // 编码
 	ProvUserId  string `json:"provUserId" gorm:"size:32;"`                        // 省平台用户id
 	ProvCmpCode string `json:"provCmpCode" gorm:"size:48;"  swaggerignore:"true"` // 所属机构登记编
-	Sn          string `json:"sn" gorm:"size:128;"`                               // 设备sn
+	Sn          string `json:"sn" gorm:"size:128;" vd:"len($)>0;msg:'sn不能为空'"`    // 设备sn
 	Type        int    `json:"type" gorm:"size:32;"`                              // 1-手持枪 2-龙门
 	OptType     string `json:"optType"`                                           // 操作类型
 

+ 1 - 1
app/admin/service/dto/dispatch_cost.go

@@ -21,7 +21,7 @@ func (m *DispatchCostGetPageReq) GetNeedSearch() interface{} {
 
 type DispatchCostInsertReq struct {
 	Id               int     `json:"id" comment:"编码" swaggerignore:"true"` // 编码
-	Name             string  `json:"name"`                                 // 商品名称
+	Name             string  `json:"name" vd:"len($)>0;msg:'名称不能为空'"`      // 商品名称
 	Price            float64 `json:"price"`                                // 价格
 	Remark           string  `json:"remark"`                               // 备注
 	common.ControlBy `swaggerignore:"true"`

+ 1 - 1
app/admin/service/dto/fill_ckeck.go

@@ -22,7 +22,7 @@ func (m *FillCheckGetPageReq) GetNeedSearch() interface{} {
 type FillCheckInsertReq struct {
 	Id      int    `json:"id" comment:"编码" swaggerignore:"true"` // 编码
 	UserId  int    `swaggerignore:"true"`                        // 用户id
-	ChipUid string `json:"chipUid"`                              // 高频编码
+	ChipUid string `json:"chipUid" vd:"len($)>0;msg:'高频编码不能为空'"` // 高频编码
 	model.ProvFillCheck
 	common.ControlBy `swaggerignore:"true"`
 	common.DeptBy    `swaggerignore:"true"`

+ 2 - 2
app/admin/service/dto/fill_data.go

@@ -25,8 +25,8 @@ func (m *FillDataGetPageReq) GetNeedSearch() interface{} {
 
 type FillDataInsertReq struct {
 	Id               int    `json:"id" comment:"编码" swaggerignore:"true"` // 编码
-	ScanGunCode      string `json:"scanGunCode"`
-	ChipUid          string `json:"chipUid"`
+	ScanGunCode      string `json:"scanGunCode"`                          // 扫码枪编码
+	ChipUid          string `json:"chipUid" vd:"len($)>0;msg:'高频编码不能为空'"` // 高频编码
 	common.ControlBy `swaggerignore:"true"`
 	common.DeptBy    `swaggerignore:"true"`
 }

+ 9 - 9
app/admin/service/dto/gas_cylinder_spec.go

@@ -8,7 +8,7 @@ import (
 
 type GasCylinderSpecGetPageReq struct {
 	dto.Pagination `search:"-"`
-	Name           string `form:"name" search:"type:contains;column:name;table:gas_cylinder_spec"` // 商品名称
+	Name           string `form:"name" search:"type:contains;column:name;table:gas_cylinder_spec"` // 钢瓶规格名称
 	GasCylinderSpecOrder
 }
 type GasCylinderSpecOrder struct {
@@ -21,7 +21,7 @@ func (m *GasCylinderSpecGetPageReq) GetNeedSearch() interface{} {
 
 type GasCylinderSpecInsertReq struct {
 	Id               int    `json:"id" comment:"编码" swaggerignore:"true"` // 编码
-	Name             string `json:"name"`                                 // 商品名称
+	Name             string `json:"name" vd:"len($)>0;msg:'钢瓶规格名称不能为空'"`  // 钢瓶规格名称
 	Remark           string `json:"remark"`                               // 备注
 	common.ControlBy `swaggerignore:"true"`
 	common.DeptBy    `swaggerignore:"true"`
@@ -49,9 +49,9 @@ func (s *GasCylinderSpecInsertReq) GetId() interface{} {
 }
 
 type GasCylinderSpecUpdateReq struct {
-	Id               int    `json:"id" comment:"编码"` // 编码
-	Name             string `json:"name"`            // 商品名称
-	Remark           string `json:"remark"`          // 备注
+	Id               int    `json:"id" comment:"编码"`                     // 编码
+	Name             string `json:"name" vd:"len($)>0;msg:'钢瓶规格名称不能为空'"` // 钢瓶规格名称
+	Remark           string `json:"remark"`                              // 备注
 	common.ControlBy `swaggerignore:"true"`
 }
 
@@ -74,7 +74,7 @@ func (s *GasCylinderSpecUpdateReq) GetId() interface{} {
 }
 
 type GasCylinderSpecGetReq struct {
-	Id int `uri:"id"`
+	Id int `uri:"id" vd:"$>0;msg:'id不能为空'"`
 }
 
 func (s *GasCylinderSpecGetReq) GetId() interface{} {
@@ -82,7 +82,7 @@ func (s *GasCylinderSpecGetReq) GetId() interface{} {
 }
 
 type GasCylinderSpecDeleteReq struct {
-	Id               int `json:"id"`
+	Id               int `json:"id" vd:"$>0;msg:'id不能为空'"`
 	common.ControlBy `swaggerignore:"true"`
 }
 
@@ -92,8 +92,8 @@ func (s *GasCylinderSpecDeleteReq) GetId() interface{} {
 
 type AppletGasCylinderSpecGetPageReq struct {
 	dto.Pagination `search:"-"`
-	StoreId        int    `form:"storeId" search:"type:exact;column:dept_id;table:gas_cylinder_spec"`
-	Name           string `form:"name" search:"type:contains;column:name;table:gas_cylinder_spec"` // 商品名称
+	StoreId        int    `form:"storeId" search:"type:exact;column:dept_id;table:gas_cylinder_spec" vd:"$>0;msg:'门店id不能为空'"`
+	Name           string `form:"name" search:"type:contains;column:name;table:gas_cylinder_spec"` // 钢瓶规格名称
 	GasCylinderSpecOrder
 }
 

+ 10 - 10
app/admin/service/dto/goods.go

@@ -63,15 +63,15 @@ func (s *GoodsInsertReq) GetId() interface{} {
 }
 
 type GoodsUpdateReq struct {
-	Id               int         `json:"id" comment:"编码"` // 编码
-	Name             string      `json:"name"`            // 商品名称
-	Price            float64     `json:"price"`           // 价格
-	MediaType        string      `json:"mediaType"`       // 介质类型
-	IsShow           bool        `json:"isShow"`          // 是否显示
-	ShowStartTime    common.Time `json:"showStartTime"`   // 展示开始时间
-	ShowEndTime      common.Time `json:"showEndTime"`     // 展示结束时间
-	Img              string      `json:"img"`             // 图片
-	Remark           string      `json:"remark"`          // 备注
+	Id               int         `json:"id" comment:"编码"`                   // 编码
+	Name             string      `json:"name" vd:"len($)>0;msg:'商品名称不能为空'"` // 商品名称
+	Price            float64     `json:"price"`                             // 价格
+	MediaType        string      `json:"mediaType"`                         // 介质类型
+	IsShow           bool        `json:"isShow"`                            // 是否显示
+	ShowStartTime    common.Time `json:"showStartTime"`                     // 展示开始时间
+	ShowEndTime      common.Time `json:"showEndTime"`                       // 展示结束时间
+	Img              string      `json:"img"`                               // 图片
+	Remark           string      `json:"remark"`                            // 备注
 	common.ControlBy `swaggerignore:"true"`
 }
 
@@ -118,7 +118,7 @@ func (s *GoodsDeleteReq) GetId() interface{} {
 
 type AppletGoodsGetPageReq struct {
 	dto.Pagination `search:"-"`
-	StoreId        int    `form:"storeId" search:"type:exact;column:dept_id;table:goods"`
+	StoreId        int    `form:"storeId" search:"type:exact;column:dept_id;table:goods" vd:"$>0;msg:'门店id不能为空'"`
 	Name           string `form:"name" search:"type:contains;column:name;table:goods"`            // 商品名称
 	MediaType      string `form:"mediaType" search:"type:contains;column:media_type;table:goods"` // 介质类型
 	IsShow         int    `form:"isShow" search:"-"`                                              // 是否展示 1-展示 2-不展示

+ 2 - 0
app/admin/service/dto/order.go

@@ -71,6 +71,7 @@ type OrderAppletInsertReq struct {
 	Quantity         int         `json:"quantity"`                             // 数量
 	Source           int         `json:"source"`                               // 来源 1-坐席下单 2-小程序
 	Remark           string      `json:"remark"`
+	AddressImg       string      `json:"addressImg"`                 //  现场图片
 	State            int         `json:"state" swaggerignore:"true"` // 状态 已下单
 	OrderTime        common.Time `json:"orderTime" swaggerignore:"true"`
 	common.ControlBy `swaggerignore:"true"`
@@ -162,6 +163,7 @@ type OrderAppletUpdateReq struct {
 	SpecId           int     `json:"specId"`                               // 规格id
 	Quantity         int     `json:"quantity"`                             // 数量
 	Remark           string  `json:"remark"`
+	AddressImg       string  `json:"addressImg"` //  现场图片
 	common.ControlBy `swaggerignore:"true"`
 }
 

+ 5 - 3
app/admin/service/order.go

@@ -146,7 +146,7 @@ func (e *Order) AppletInsert(c *dto.OrderAppletInsertReq) error {
 					PrincipalPhone: customer.PrincipalPhone,
 					ShopName:       customer.Name,
 					Address:        c.Address,
-					AddressImg:     customer.AddressImg,
+					AddressImg:     c.AddressImg,
 					Lng:            c.Lng,
 					Lat:            c.Lat,
 					Type:           customer.Type,
@@ -162,6 +162,7 @@ func (e *Order) AppletInsert(c *dto.OrderAppletInsertReq) error {
 			}
 			dataIntegrity := CustomerCheckDataIntegrity(obj)
 			if dataIntegrity {
+				// TODO 同步省平台
 				obj.IsSyncProv = true
 			}
 			err = tx.Create(&obj).Error
@@ -180,12 +181,13 @@ func (e *Order) AppletInsert(c *dto.OrderAppletInsertReq) error {
 		storeCustomer.City = c.City
 		storeCustomer.Area = c.Area
 		storeCustomer.Address = c.Address
-		err = tx.Save(&storeCustomer).Error
+		storeCustomer.AddressImg = c.AddressImg
 		dataIntegrity := CustomerCheckDataIntegrity(storeCustomer)
 		if dataIntegrity {
+			// TODO 同步省平台 更新客户信息
 			storeCustomer.IsSyncProv = true
 		}
-		// TODO 更新客户信息
+		err = tx.Save(&storeCustomer).Error
 		if err != nil {
 			e.Log.Errorf("db error: %s", err)
 			return global.UpdateFailedErr

+ 1 - 1
common/middleware/handler/login.go

@@ -14,7 +14,7 @@ type Login struct {
 	Password   string `form:"Password" json:"password"`     // 密码
 	Phone      string `form:"Phone" json:"phone"`           // 手机号
 	VerifyCode string `form:"VerifyCode" json:"verifyCode"` // 验证码
-	Type       int    `form:"Type" json:"type"`             // 1-密码  2-短信验证码
+	Type       int    `form:"Type" json:"type"`             // 1-密码  2-钢瓶规格
 	Mobile     bool   `form:"Mobile" json:"mobile"`         // 是否手机登录
 }