orderHandler.go 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553
  1. package controller
  2. import (
  3. . "app.yhyue.com/moapp/jybase/api"
  4. "app.yhyue.com/moapp/jybase/common"
  5. "app.yhyue.com/moapp/jybase/date"
  6. "context"
  7. "fmt"
  8. "github.com/gogf/gf/v2/database/gdb"
  9. "github.com/gogf/gf/v2/errors/gerror"
  10. "github.com/gogf/gf/v2/frame/g"
  11. "github.com/gogf/gf/v2/net/ghttp"
  12. "github.com/gogf/gf/v2/os/gctx"
  13. "github.com/gogf/gf/v2/util/gconv"
  14. "github.com/pkg/errors"
  15. "jyOrderManager/internal/jyutil"
  16. "jyOrderManager/internal/logic/order"
  17. "jyOrderManager/internal/logic/product"
  18. "jyOrderManager/internal/model"
  19. "jyOrderManager/internal/service"
  20. "strings"
  21. "time"
  22. )
  23. var checkOrderProduct = func(ctx context.Context, orderCode string, param model.OrderParams, oldOrderRes ...g.Map) (productArr []product.JyProduct, removeOrderDetailIds []int64, masterKey string, priceFinal, priceOriginal, commissionCheck int, err error) {
  24. var (
  25. actProduct = map[string]map[string]product.JyProduct{}
  26. orderMap g.Map
  27. existsOrderDetailIds = map[int64]bool{}
  28. update = false
  29. )
  30. if len(oldOrderRes) > 0 {
  31. orderMap, update = oldOrderRes[0], true
  32. }
  33. // 订单参数基础校验
  34. if param.EmptyPhone != 1 && param.PersonPhone == "" {
  35. err = fmt.Errorf("订单参数异常")
  36. return
  37. }
  38. if update { //待审核和已完成订单禁止修改
  39. var orderDetailRes gdb.Result
  40. orderDetailRes, err = g.DB().Query(ctx, "SELECT id FROM jy_order_detail WHERE order_code=? and status =1", param.OrderCode)
  41. if err != nil || orderDetailRes.IsEmpty() {
  42. err = gerror.Wrapf(err, "为查询到订单明细")
  43. return
  44. }
  45. var (
  46. orderStatus = gconv.Int(orderMap["order_status"])
  47. auditStatus = gconv.Int(orderMap["audit_status"])
  48. )
  49. if auditStatus > 0 || orderStatus == 1 {
  50. err = errors.New("当前订单状态禁止修改")
  51. return
  52. }
  53. for _, m := range orderDetailRes.List() {
  54. existsOrderDetailIds[gconv.Int64(m["id"])] = true
  55. }
  56. }
  57. var (
  58. maxPrice int
  59. )
  60. //大会员超级订阅同订单不能多次购买
  61. hasVipCheckMap := map[string]bool{}
  62. for _, tParam := range param.ProductArr {
  63. orderDetailId := gconv.Int64(tParam["id"])
  64. if update {
  65. existsOrderDetailIds[orderDetailId] = false
  66. }
  67. //参数注入
  68. if param.EmptyPhone != 1 {
  69. tParam["phone"] = param.PersonPhone //开通手机号
  70. }
  71. tParam["order_code"] = orderCode //订单号
  72. tParam["reqSubject"] = param.BuySubject //购买主体
  73. tParam["reqCompanyName"] = param.CompanyName //公司名称
  74. var (
  75. productCode = gconv.String(tParam["product_code"])
  76. amount = gconv.Int(tParam["amount"])
  77. originalPrice = gconv.Int(tParam["original_price"])
  78. )
  79. var pItem *model.Product
  80. pItem, err = service.Product().GetProduct(productCode)
  81. if err != nil {
  82. err = fmt.Errorf("获取商品异常")
  83. return
  84. }
  85. productClass, pErr := service.Product().GetProductClassByProductCode(productCode)
  86. if pErr != nil {
  87. err = fmt.Errorf("获取商品类型异常")
  88. return
  89. }
  90. if productClass.State != 1 || pItem.State != 1 {
  91. err = fmt.Errorf("当前商品类型禁止购买")
  92. return
  93. }
  94. if productClass.Code == "dyh" || productClass.Code == "cjdy" {
  95. if hasVipCheckMap[productClass.Code] {
  96. err = fmt.Errorf("请勿重复选购会员商品")
  97. return
  98. }
  99. hasVipCheckMap[productClass.Code] = true
  100. }
  101. //计算销售费用
  102. if productClass.TopClass == "外采赠品" {
  103. commissionCheck += originalPrice
  104. }
  105. pFunc, pErr := product.JyProFunc.GetProductInitFuncByCode(productCode)
  106. if pErr != nil {
  107. err = gerror.Wrapf(pErr, "获取商品异常")
  108. return
  109. }
  110. pObj, pErr := pFunc(tParam)
  111. if pErr != nil {
  112. err = gerror.Wrap(pErr, fmt.Sprintf("获取%s商品异常", productCode))
  113. return
  114. }
  115. //获取价格最贵的商品作为主商品
  116. if amount >= maxPrice {
  117. maxPrice = amount
  118. masterKey = fmt.Sprintf("%s_%d", productCode, amount)
  119. }
  120. var (
  121. actCode = gconv.String(tParam["activityCode"]) //活动code
  122. checkCode = common.If(common.If(actCode != "", 2, 1).(int) == 2 || param.EmptyPhone == 1, 2, 1).(int) //1全额校验 2不校验是否满足购买需求(活动和暂无手机号)
  123. )
  124. if actCode != "" { //活动商品
  125. if _, ok := actProduct[actCode]; ok {
  126. actProduct[actCode][productCode] = pObj
  127. } else {
  128. actProduct[actCode] = map[string]product.JyProduct{productCode: pObj}
  129. }
  130. } else { //单个商品价格
  131. checkPrice, priceErr := pObj.GetPrice()
  132. if priceErr != nil {
  133. err = gerror.Wrapf(priceErr, "核算%s价格异常", productClass.ClassName)
  134. return
  135. }
  136. if checkPrice > -1 && gconv.Int(checkPrice) != originalPrice {
  137. err = gerror.Newf("核算%s价格异常", productClass.ClassName)
  138. return
  139. }
  140. if originalPrice := gconv.Int(originalPrice); originalPrice > 0 {
  141. priceOriginal += originalPrice
  142. }
  143. if amount > 0 {
  144. priceFinal += amount
  145. }
  146. }
  147. if err = pObj.Check(ctx, checkCode); err != nil {
  148. return
  149. }
  150. productArr = append(productArr, pObj)
  151. }
  152. if len(productArr) == 0 {
  153. err = fmt.Errorf("订单商品为空")
  154. return
  155. }
  156. // 活动商品校验完整,防止缺少增加商品
  157. if len(actProduct) > 0 {
  158. now := time.Now()
  159. for actCode, productList := range actProduct {
  160. act := service.Product().GetActivityByCode(actCode)
  161. //当前用户是否有权限
  162. if !service.Product().PowerCheck(act.Code, jyutil.GetUserDeptIdFromCtx(ctx)) {
  163. err = fmt.Errorf("没有创建%s活动的权限", act.Name)
  164. return
  165. }
  166. if act == nil {
  167. err = fmt.Errorf("未知活动code %s", actCode)
  168. return
  169. }
  170. if now.After(act.EndTime) || now.Before(act.StartTime) {
  171. err = fmt.Errorf("活动%s不在有效期", actCode)
  172. return
  173. }
  174. if len(productList) != len(act.Products) {
  175. err = fmt.Errorf("活动产品不完整 %s", actCode)
  176. return
  177. }
  178. if act.Price > 0 {
  179. priceOriginal += act.Price
  180. }
  181. if param.ActPrice["actCode"] > 0 {
  182. priceFinal += param.ActPrice["actCode"]
  183. }
  184. }
  185. }
  186. for orderDetailId, ok := range existsOrderDetailIds {
  187. if ok {
  188. removeOrderDetailIds = append(removeOrderDetailIds, orderDetailId)
  189. }
  190. }
  191. return
  192. }
  193. // SaveOrderHandler 创建订单
  194. func SaveOrderHandler(r *ghttp.Request) {
  195. rData, err := func() (interface{}, error) {
  196. var (
  197. param model.OrderParams
  198. ctx = r.Context()
  199. uMsg = jyutil.GetUserMsgFromCtx(ctx)
  200. userName = uMsg.EntUserName
  201. entUserId = uMsg.EntUserId
  202. masterKey string
  203. priceFinal, priceOriginal, commissionCheck int
  204. productArr []product.JyProduct
  205. orderCode = fmt.Sprintf("%s%s", time.Now().Format("150405"), common.GetRandom(6))
  206. )
  207. err := gconv.Struct(r.GetBody(), &param)
  208. if err != nil {
  209. return nil, gerror.Wrapf(err, "数据校验异常")
  210. }
  211. //产品参数校验
  212. productArr, _, masterKey, priceFinal, priceOriginal, commissionCheck, err = checkOrderProduct(ctx, orderCode, param)
  213. if err != nil {
  214. return nil, err
  215. }
  216. if priceFinal != param.ContractMoney || priceOriginal != param.OrderMoney {
  217. return nil, fmt.Errorf("价格核对异常")
  218. }
  219. if commissionCheck != param.ChannelCommission {
  220. return nil, fmt.Errorf("销售费用合算异常")
  221. }
  222. param.CompanyName = strings.TrimSpace(param.CompanyName)
  223. //数据库操作
  224. if err := g.DB().Transaction(ctx, func(ctx context.Context, tx gdb.TX) error {
  225. //todo 插入订单表
  226. if _, err := g.DB().Ctx(ctx).Insert(ctx, "dataexport_order", g.Map{
  227. "order_code": orderCode,
  228. "order_money": param.OrderMoney,
  229. "pay_money": param.ContractMoney,
  230. "pay_way": param.PayType,
  231. "product_type": getProductNameByMasterKey(masterKey),
  232. "order_status": 0,
  233. "user_phone": param.PersonPhone,
  234. "personPhone": param.ContactsPhone,
  235. "personName": param.ContactsName,
  236. "company_name": param.CompanyName,
  237. "is_backstage_order": 1,
  238. "commission": param.ChannelCommission,
  239. "order_channel": param.OrderChannel,
  240. "create_time": time.Now().Format("2006-01-02 15:04:05"),
  241. "create_person": userName,
  242. "last_update_person": userName,
  243. "salesperson_entUserId": entUserId,
  244. "signing_subject": param.PaybackCompany,
  245. "audit_status": common.If(param.Save == 1, 0, 1),
  246. "buy_subject": param.BuySubject,
  247. "payment_user": param.PaymentUser,
  248. "zero_type": param.ZeroOrderType,
  249. "remark": param.OrderRemark,
  250. "user_id": jyutil.GetCommonUserIdByPhone(ctx, param.PersonPhone, param.CompanyName, param.BuySubject),
  251. "last_update_time": date.NowFormat(date.Date_Full_Layout),
  252. "return_status": common.If(param.ContractMoney == 0, 1, 0),
  253. "product_count": len(param.ProductArr),
  254. }); err != nil {
  255. return gerror.Wrap(err, "插入订单表异常")
  256. }
  257. //todo 订单详情表
  258. for _, p := range productArr {
  259. //是否是主商品
  260. if err := p.SaveUpdate(ctx, masterKey); err != nil {
  261. return gerror.Wrapf(err, "插入商品明细异常")
  262. }
  263. }
  264. //todo 销售业绩
  265. if err := order.SaveOrUpdateSaleMoneyTmp(ctx, orderCode, userName, param.SaleMoney, param.ContractMoney-param.ChannelCommission); err != nil {
  266. return gerror.Wrapf(err, "销售业绩异常")
  267. }
  268. //todo 合同
  269. if err := order.SaveOrUpdateContract(ctx, orderCode, param.CompanyName, param.ContractMoney, param.Contract); err != nil {
  270. return gerror.Wrapf(err, "合同异常")
  271. }
  272. //todo 回款计划
  273. if err := order.SaveOrUpdateReturnPlant(ctx, orderCode, param.ContractMoney, param.ReturnPlant); err != nil {
  274. return gerror.Wrapf(err, "回款计划异常")
  275. }
  276. //todo 保证金
  277. if err := order.SaveDepositInfo(ctx, orderCode, userName, param.DepositPaymentAccount, param.DepositAmount); err != nil {
  278. return gerror.Wrapf(err, "保证金异常")
  279. }
  280. if param.Save == 2 {
  281. //todo 审核记录
  282. if _, err = g.DB().Save(ctx, "audit_records", map[string]interface{}{
  283. "operator": userName,
  284. "create_time": date.NowFormat(date.Date_Full_Layout),
  285. "operator_type": 1,
  286. "audit_status": 1,
  287. "order_code": orderCode,
  288. "audit_type": 2,
  289. }); err != nil {
  290. return gerror.Wrapf(err, "审核记录异常")
  291. }
  292. }
  293. return nil
  294. }); err != nil {
  295. return nil, gerror.Wrapf(err, "数据库操作异常")
  296. }
  297. return orderCode, nil
  298. }()
  299. if err != nil {
  300. g.Log().Errorf(r.Context(), "创建订单异常 %v", err)
  301. }
  302. r.Response.WriteJson(NewResult(rData, err))
  303. }
  304. // UpdateOrderHandler 订单修改
  305. func UpdateOrderHandler(r *ghttp.Request) {
  306. rData, err := func() (interface{}, error) {
  307. var (
  308. param model.OrderParams
  309. ctx = r.Context()
  310. uMsg = jyutil.GetUserMsgFromCtx(ctx)
  311. userName = uMsg.EntUserName
  312. entUserId = uMsg.EntUserId
  313. masterKey string
  314. priceFinal, priceOriginal int
  315. )
  316. err := gconv.Struct(r.GetBody(), &param)
  317. if err != nil {
  318. return nil, gerror.Wrapf(err, "数据校验异常")
  319. }
  320. if param.OrderCode == "" {
  321. return nil, gerror.New("缺少订单编号")
  322. }
  323. orderRes, err := g.DB().GetOne(ctx, "SELECT * FROM dataexport_order WHERE order_code=?", param.OrderCode)
  324. if err != nil || orderRes.IsEmpty() {
  325. err = gerror.Wrapf(err, "未知订单")
  326. return nil, err
  327. }
  328. //产品参数校验
  329. productArr, removeIds, masterKey, priceFinal, priceOriginal, commissionCheck, err := checkOrderProduct(ctx, param.OrderCode, param, orderRes.Map())
  330. if err != nil {
  331. return nil, err
  332. }
  333. if priceFinal != param.ContractMoney || priceOriginal != param.OrderMoney {
  334. return nil, fmt.Errorf("价格核对异常")
  335. }
  336. if commissionCheck != param.ChannelCommission {
  337. return nil, fmt.Errorf("销售费用合算异常")
  338. }
  339. param.CompanyName = strings.TrimSpace(param.CompanyName)
  340. //数据库操作
  341. if err := g.DB().Transaction(ctx, func(ctx context.Context, tx gdb.TX) error {
  342. var delDetailIds []string
  343. detailIds, _ := g.DB().Ctx(ctx).Query(ctx, "SELECT id FROM jy_order_detail WHERE order_code = ? and status =1", param.OrderCode)
  344. if !detailIds.IsEmpty() { //编辑订单存在删除老产品
  345. for _, idMap := range detailIds.List() {
  346. var isExist bool
  347. for _, jyProduct := range param.ProductArr {
  348. if gconv.String(idMap["id"]) == gconv.String(jyProduct["id"]) {
  349. isExist = true
  350. break
  351. }
  352. }
  353. if !isExist {
  354. delDetailIds = append(delDetailIds, gconv.String(idMap["id"]))
  355. }
  356. }
  357. }
  358. upOrder := g.Map{
  359. "order_money": param.OrderMoney,
  360. "pay_money": param.ContractMoney,
  361. "pay_way": param.PayType,
  362. "product_type": getProductNameByMasterKey(masterKey),
  363. "order_status": param.OrderStatus,
  364. "user_phone": param.PersonPhone,
  365. "personPhone": param.ContactsPhone,
  366. "company_name": param.CompanyName,
  367. "is_backstage_order": 1,
  368. "commission": param.ChannelCommission,
  369. "order_channel": param.OrderChannel,
  370. "create_person": userName,
  371. "last_update_person": userName,
  372. "salesperson_entUserId": entUserId,
  373. "signing_subject": param.PaybackCompany,
  374. "audit_status": common.If(param.Save == 1, 0, 1),
  375. "buy_subject": param.BuySubject,
  376. "payment_user": param.PaymentUser,
  377. "zero_type": param.ZeroOrderType,
  378. "last_update_time": date.NowFormat(date.Date_Full_Layout),
  379. "remark": param.OrderRemark,
  380. "user_id": jyutil.GetCommonUserIdByPhone(ctx, param.PersonPhone, param.CompanyName, param.BuySubject),
  381. "return_status": common.If(param.ContractMoney == 0, 1, 0),
  382. "product_count": len(param.ProductArr),
  383. }
  384. //退回单子重新编辑提交后更改审核状态
  385. if auditStatus := gconv.Int(orderRes.Map()["audit_status"]); auditStatus < 0 {
  386. newAuditStatus := SwitchAudit(auditStatus)
  387. upOrder["order_status"] = 0
  388. upOrder["audit_status"] = newAuditStatus
  389. //新增轨迹
  390. _, err = g.DB().Save(ctx, "audit_records", map[string]interface{}{
  391. "operator": uMsg.EntUserName,
  392. "create_time": date.NowFormat(date.Date_Full_Layout),
  393. "operator_type": 4,
  394. "audit_status": newAuditStatus,
  395. "order_code": param.OrderCode,
  396. "audit_type": 2,
  397. })
  398. if err != nil {
  399. return errors.New("新增审核轨迹失败")
  400. }
  401. }
  402. //编辑回退订单或未完成订单
  403. upOrder["last_update_time"] = date.NowFormat(date.Date_Full_Layout)
  404. upOrder["last_update_person"] = jyutil.GetUserMsgFromCtx(ctx).EntUserName
  405. if _, err = g.DB().Ctx(ctx).Update(ctx, "dataexport_order", upOrder, "order_code=? and order_status=0 ", param.OrderCode); err != nil {
  406. return gerror.Wrap(err, "修改订单表内容异常")
  407. }
  408. //todo 删除已经不存在的商品
  409. for _, id := range removeIds {
  410. if _, err := g.DB().Update(ctx, "jy_order_detail", g.Map{
  411. "status": 2,
  412. }, "id=? and order_code=?", id, param.OrderCode); err != nil {
  413. return gerror.Wrapf(err, "删除旧订单明细内容异常")
  414. }
  415. }
  416. //todo 订单详情表
  417. for _, p := range productArr {
  418. if err := p.SaveUpdate(ctx, masterKey); err != nil {
  419. return gerror.Wrapf(err, "插入商品明细异常")
  420. }
  421. }
  422. //todo 销售业绩 p610.管理后台创建订单,订单状态为已完成(不包含从未完成改成已完成,未提交的状态),“销售人员”、“销售业绩”、“销售渠道”不支持编辑;
  423. if gconv.Int(orderRes["order_status"]) == 0 {
  424. err = order.SaveOrUpdateSaleMoneyTmp(ctx, param.OrderCode, userName, param.SaleMoney, param.ContractMoney-param.ChannelCommission)
  425. if err != nil {
  426. return err
  427. }
  428. }
  429. //todo 合同
  430. if err := order.SaveOrUpdateContract(ctx, param.OrderCode, param.CompanyName, param.ContractMoney, param.Contract); err != nil {
  431. return gerror.Wrapf(err, "合同异常")
  432. }
  433. //todo 回款计划
  434. if err := order.SaveOrUpdateReturnPlant(ctx, param.OrderCode, param.ContractMoney, param.ReturnPlant); err != nil {
  435. return gerror.Wrapf(err, "回款计划异常")
  436. }
  437. //todo 保证金 param.DepositPaymentAccount, param.DepositAmount
  438. if err := order.EditDeposit(ctx, model.SDeposit{
  439. OrderCode: param.OrderCode,
  440. DepositAmount: param.DepositAmount,
  441. DepositPaymentAccount: param.DepositPaymentAccount,
  442. }); err != nil {
  443. return gerror.Wrapf(err, "保证金异常")
  444. }
  445. if len(delDetailIds) > 0 { //存在删除的订单
  446. g.DB().Ctx(ctx).Update(ctx, "dataexport_order", map[string]interface{}{
  447. "status": -1,
  448. "last_update_time": date.NowFormat(date.Date_Full_Layout),
  449. "last_update_person": jyutil.GetUserMsgFromCtx(ctx).EntUserName,
  450. }, fmt.Sprintf(" id in (%s)", strings.Join(delDetailIds, ",")))
  451. }
  452. return nil
  453. }); err != nil {
  454. return nil, gerror.Wrapf(err, "数据库操作异常")
  455. }
  456. return nil, err
  457. }()
  458. if err != nil {
  459. g.Log().Errorf(r.Context(), "订单修改异常 %v", err)
  460. }
  461. r.Response.WriteJson(NewResult(rData, err))
  462. }
  463. // GetContractPdfHandler 电子pdf合同
  464. func GetContractPdfHandler(r *ghttp.Request) {
  465. rData, err := func() (interface{}, error) {
  466. rj, err := r.GetJson()
  467. if err != nil {
  468. return nil, errors.Wrap(err, "请求参数格式异常")
  469. }
  470. var (
  471. orderCode = rj.Get("orderCode").String()
  472. onlyQuery = rj.Get("onlyQuery").String()
  473. ctx = r.Context()
  474. uMsg = jyutil.GetUserMsgFromCtx(ctx)
  475. userName = uMsg.EntUserName
  476. )
  477. pdfPath, err := order.GetContractPdf(gctx.New(), orderCode, userName, onlyQuery != "")
  478. if err != nil {
  479. return nil, err
  480. }
  481. return pdfPath, nil
  482. }()
  483. if err != nil {
  484. g.Log().Errorf(r.Context(), "生成电子pdf合同出错 %v", err)
  485. }
  486. r.Response.WriteJson(NewResult(rData, err))
  487. }
  488. func getProductNameByMasterKey(masterKey string) string {
  489. if arr := strings.Split(masterKey, "_"); len(arr) > 0 {
  490. var productCode = arr[0]
  491. mp, err := service.Product().GetProduct(productCode)
  492. if err != nil {
  493. return ""
  494. }
  495. mc, err := service.Product().GetProductClass(mp.ProductClassId)
  496. if err != nil {
  497. return ""
  498. }
  499. if mc.ClassName == "超级订阅" {
  500. return "VIP订阅"
  501. }
  502. return mc.ClassName
  503. }
  504. return ""
  505. }
  506. // 订单审核状态
  507. const (
  508. OrderUncommitted = 0 // 待提交
  509. OrderPending = 1 // 待审核
  510. OrderFirstPassed = 2 // 一审通过
  511. OrderPassed = 3 // 审核通过
  512. OrderSecondPassed = 4 // 审核通过
  513. OrderFirstReturn = -2 // 一审退回
  514. OrderSecondReturn = -3 // 二审退回
  515. OrderThreeReturn = -4 // 二审退回
  516. )
  517. // SwitchAudit 订单审核轨迹状态流转
  518. func SwitchAudit(auditStatus int) (saveAuditStatus int) {
  519. // 我的订单-编辑订单 只能编辑订单审核状态为已退回、待提交 不开通权限
  520. switch auditStatus {
  521. case OrderUncommitted:
  522. saveAuditStatus = OrderPending // 待一审
  523. case OrderFirstReturn:
  524. saveAuditStatus = OrderPending // 待一审
  525. case OrderSecondReturn:
  526. saveAuditStatus = OrderFirstPassed // 一审通过 待二审
  527. case OrderThreeReturn: //三审退回状态下,编辑订单后,审核状态是二审通过
  528. saveAuditStatus = OrderSecondPassed // 一审通过 待二审
  529. }
  530. return
  531. }