|
@@ -1204,3 +1204,293 @@ func (this *EtaBusinessController) OperateRecordList() {
|
|
|
br.Success = true
|
|
|
br.Msg = "获取成功"
|
|
|
}
|
|
|
+
|
|
|
+// EditSign
|
|
|
+// @Title 编辑签约
|
|
|
+// @Description 编辑签约
|
|
|
+// @Param request body eta_business.EtaBusinessEditSignReq true "type json string"
|
|
|
+// @Success 200 Ret=200 操作成功
|
|
|
+// @router /edit_sign [post]
|
|
|
+func (this *EtaBusinessController) EditSign() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ if br.ErrMsg == "" {
|
|
|
+ br.IsSendEmail = false
|
|
|
+ }
|
|
|
+ this.Data["json"] = br
|
|
|
+ this.ServeJSON()
|
|
|
+ }()
|
|
|
+ sysUser := this.SysUser
|
|
|
+ if sysUser == nil {
|
|
|
+ br.Msg = "请登录"
|
|
|
+ br.ErrMsg = "请登录,SysUser Is Empty"
|
|
|
+ br.Ret = 408
|
|
|
+ return
|
|
|
+ }
|
|
|
+ var req eta_business.EtaBusinessEditSignReq
|
|
|
+ if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
|
|
|
+ br.Msg = "参数解析异常!"
|
|
|
+ br.ErrMsg = "参数解析失败,Err:" + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if req.EtaBusinessContractId <= 0 {
|
|
|
+ br.Msg = "参数有误"
|
|
|
+ br.ErrMsg = "参数有误, 商家签约ID为空"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if req.SigningTime == "" {
|
|
|
+ br.Msg = "签约时间不可为空"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if req.ExpiredTime == "" {
|
|
|
+ br.Msg = "到期时间不可为空"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ signTime, e := time.ParseInLocation(utils.FormatDate, req.SigningTime, time.Local)
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "签约时间格式有误"
|
|
|
+ br.ErrMsg = "签约时间格式有误, Err: " + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ expiredTime, e := time.ParseInLocation(utils.FormatDate, req.ExpiredTime, time.Local)
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "到期时间格式有误"
|
|
|
+ br.ErrMsg = "到期时间格式有误, Err: " + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if !expiredTime.After(signTime) {
|
|
|
+ br.Msg = "到期时间不得早于签约时间"
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 权限校验
|
|
|
+ ok, e := etaBusinessService.CheckEtaBusinessOperateAuth(sysUser.RoleTypeCode)
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "操作失败"
|
|
|
+ br.ErrMsg = "操作权限校验失败, ErrMsg: " + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if !ok {
|
|
|
+ br.Msg = "无权操作"
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ contractOb := new(eta_business.EtaBusinessContract)
|
|
|
+ contract, e := contractOb.GetItemById(req.EtaBusinessContractId)
|
|
|
+ if e != nil {
|
|
|
+ if e.Error() == utils.ErrNoRow() {
|
|
|
+ br.Msg = "签约信息不存在, 请刷新页面"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ br.Msg = "操作失败"
|
|
|
+ br.ErrMsg = "获取商家签约信息失败, Err: " + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ businessOb := new(eta_business.EtaBusiness)
|
|
|
+ business, e := businessOb.GetItemById(contract.EtaBusinessId)
|
|
|
+ if e != nil {
|
|
|
+ if e.Error() == utils.ErrNoRow() {
|
|
|
+ br.Msg = "商家不存在, 请刷新页面"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ br.Msg = "操作失败"
|
|
|
+ br.ErrMsg = "获取商家信息失败, Err: " + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 续约不可早于当前生效合约的到期时间
|
|
|
+ if business.ContractId > 0 && business.ContractId != req.EtaBusinessContractId {
|
|
|
+ {
|
|
|
+ ob := new(eta_business.EtaBusinessContract)
|
|
|
+ item, e := ob.GetItemById(business.ContractId)
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "操作失败"
|
|
|
+ br.ErrMsg = "获取商家当前合同失败, Err: " + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if !signTime.After(item.ExpiredTime) {
|
|
|
+ br.Msg = "签约时间不可早于当前合同的到期时间"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取历史签约, 签约日期不可交叠
|
|
|
+ cond := fmt.Sprintf(` AND %s = ?`, eta_business.EtaBusinessContractColumns.EtaBusinessId)
|
|
|
+ pars := make([]interface{}, 0)
|
|
|
+ pars = append(pars, contract.EtaBusinessId)
|
|
|
+ contracts, e := contractOb.GetItemsByCondition(cond, pars, []string{}, "signing_time ASC")
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "操作失败"
|
|
|
+ br.ErrMsg = "获取商家签约列表失败, Err: " + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 校验签约时间是否重叠
|
|
|
+ isFirst := true // 是否为首次签约
|
|
|
+ changeFirst := false // 是否需要更新首次签约合同
|
|
|
+ if len(contracts) > 0 {
|
|
|
+ isFirst = false
|
|
|
+ for k, c := range contracts {
|
|
|
+ if c.EtaBusinessContractId == req.EtaBusinessContractId {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ pass := false
|
|
|
+ if expiredTime.Before(c.SigningTime) {
|
|
|
+ pass = true
|
|
|
+ }
|
|
|
+ if signTime.After(c.ExpiredTime) {
|
|
|
+ pass = true
|
|
|
+ }
|
|
|
+ if !pass {
|
|
|
+ br.Msg = "签约时间在存续期内, 请检查"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 若该合同签约时间早于第一份合同(业务上未限制所以可能会出现这种情况, contracts已排序), 则更新为首次签约合同
|
|
|
+ if k == 0 && signTime.Before(c.SigningTime) {
|
|
|
+ changeFirst = true
|
|
|
+ isFirst = true
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 新增签约
|
|
|
+ contract.SigningTime = signTime
|
|
|
+ contract.ExpiredTime = expiredTime
|
|
|
+ contract.ModifyTime = time.Now().Local()
|
|
|
+ if isFirst {
|
|
|
+ contract.IsFirst = 1
|
|
|
+ }
|
|
|
+ updateCols := []string{"SigningTime", "ExpiredTime", "ModifyTime"}
|
|
|
+ if e = contract.UpdateMaybeUpdateFirst(contract, changeFirst, updateCols); e != nil {
|
|
|
+ br.Msg = "操作失败"
|
|
|
+ br.ErrMsg = "编辑签约失败, Err: " + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 签约后续操作
|
|
|
+ go func() {
|
|
|
+ _ = etaBusinessService.UpdateEtaBusinessAfterSigning(business.EtaBusinessId)
|
|
|
+ }()
|
|
|
+
|
|
|
+ // 续约操作日志
|
|
|
+ if !isFirst {
|
|
|
+ go func() {
|
|
|
+ recordOb := new(eta_business.EtaBusinessOperationRecord)
|
|
|
+ recordOb.EtaBusinessId = business.EtaBusinessId
|
|
|
+ recordOb.SellerId = business.SellerId
|
|
|
+ recordOb.SysUserId = sysUser.AdminId
|
|
|
+ recordOb.SysRealName = sysUser.RealName
|
|
|
+ recordOb.OperationType = eta_business.EtaBusinessOperationTypeEditContract
|
|
|
+ recordOb.OperationRemark = fmt.Sprintf("%s编辑续约", sysUser.RealName)
|
|
|
+ recordOb.CreateTime = time.Now().Local()
|
|
|
+ _ = recordOb.Create()
|
|
|
+ }()
|
|
|
+ }
|
|
|
+
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "操作成功"
|
|
|
+}
|
|
|
+
|
|
|
+// RemoveSign
|
|
|
+// @Title 删除签约
|
|
|
+// @Description 删除签约
|
|
|
+// @Param request body eta_business.EtaBusinessRemoveSignReq true "type json string"
|
|
|
+// @Success 200 Ret=200 操作成功
|
|
|
+// @router /remove_sign [post]
|
|
|
+func (this *EtaBusinessController) RemoveSign() {
|
|
|
+ br := new(models.BaseResponse).Init()
|
|
|
+ defer func() {
|
|
|
+ if br.ErrMsg == "" {
|
|
|
+ br.IsSendEmail = false
|
|
|
+ }
|
|
|
+ this.Data["json"] = br
|
|
|
+ this.ServeJSON()
|
|
|
+ }()
|
|
|
+ sysUser := this.SysUser
|
|
|
+ if sysUser == nil {
|
|
|
+ br.Msg = "请登录"
|
|
|
+ br.ErrMsg = "请登录,SysUser Is Empty"
|
|
|
+ br.Ret = 408
|
|
|
+ return
|
|
|
+ }
|
|
|
+ var req eta_business.EtaBusinessRemoveSignReq
|
|
|
+ if e := json.Unmarshal(this.Ctx.Input.RequestBody, &req); e != nil {
|
|
|
+ br.Msg = "参数解析异常!"
|
|
|
+ br.ErrMsg = "参数解析失败,Err:" + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if req.EtaBusinessContractId <= 0 {
|
|
|
+ br.Msg = "参数有误"
|
|
|
+ br.ErrMsg = "参数有误, 商家签约ID为空"
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 权限校验
|
|
|
+ ok, e := etaBusinessService.CheckEtaBusinessOperateAuth(sysUser.RoleTypeCode)
|
|
|
+ if e != nil {
|
|
|
+ br.Msg = "操作失败"
|
|
|
+ br.ErrMsg = "操作权限校验失败, ErrMsg: " + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if !ok {
|
|
|
+ br.Msg = "无权操作"
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取商家信息
|
|
|
+ contractOb := new(eta_business.EtaBusinessContract)
|
|
|
+ contract, e := contractOb.GetItemById(req.EtaBusinessContractId)
|
|
|
+ if e != nil {
|
|
|
+ if e.Error() == utils.ErrNoRow() {
|
|
|
+ br.Msg = "签约信息不存在, 请刷新页面"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ br.Msg = "操作失败"
|
|
|
+ br.ErrMsg = "获取商家签约信息失败, Err: " + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取商家信息
|
|
|
+ businessOb := new(eta_business.EtaBusiness)
|
|
|
+ business, e := businessOb.GetItemById(contract.EtaBusinessId)
|
|
|
+ if e != nil {
|
|
|
+ if e.Error() == utils.ErrNoRow() {
|
|
|
+ br.Msg = "商家不存在, 请检查"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ br.Msg = "操作失败"
|
|
|
+ br.ErrMsg = "获取商家信息失败, Err: " + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 删除签约
|
|
|
+ if e = contract.Del(); e != nil {
|
|
|
+ br.Msg = "操作失败"
|
|
|
+ br.ErrMsg = "删除签约失败, Err: " + e.Error()
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ // 签约后续操作
|
|
|
+ go func() {
|
|
|
+ _ = etaBusinessService.UpdateEtaBusinessAfterSigning(business.EtaBusinessId)
|
|
|
+ }()
|
|
|
+
|
|
|
+ // 操作日志
|
|
|
+ go func() {
|
|
|
+ recordOb := new(eta_business.EtaBusinessOperationRecord)
|
|
|
+ recordOb.EtaBusinessId = business.EtaBusinessId
|
|
|
+ recordOb.SellerId = business.SellerId
|
|
|
+ recordOb.SysUserId = sysUser.AdminId
|
|
|
+ recordOb.SysRealName = sysUser.RealName
|
|
|
+ recordOb.OperationType = eta_business.EtaBusinessOperationTypeRemoveContract
|
|
|
+ recordOb.OperationRemark = fmt.Sprintf("%s删除签约", sysUser.RealName)
|
|
|
+ recordOb.CreateTime = time.Now().Local()
|
|
|
+ _ = recordOb.Create()
|
|
|
+ }()
|
|
|
+
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "操作成功"
|
|
|
+}
|