final_material_order_process.go 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731
  1. package final
  2. import (
  3. "errors"
  4. "fmt"
  5. "time"
  6. "zhiyuan/models"
  7. "zhiyuan/pkg/db"
  8. "zhiyuan/pkg/utils"
  9. "zhiyuan/services/admin"
  10. "github.com/gin-gonic/gin"
  11. )
  12. type FinalMaterialOrderProcess struct {
  13. ID int64 `json:"id" prop:"add:false"`
  14. OrderId int64 `json:"order_id" label:"订单ID" type:"int" prop:"add" search:"="`
  15. Type int64 `json:"type" label:"类型" type:"int" prop:"add" default:"0"`
  16. ChangeTypeId int64 `json:"change_type_id" label:"类型" type:"int" default:"0"`
  17. Explain string `json:"explain" label:"说明" type:"string" search:"like"`
  18. Pictures string `json:"pictures" label:"图片" type:"string" search:"like"`
  19. Signature string `json:"signature" label:"签名" type:"string"`
  20. CreatedId int64 `json:"created_id" label:"创建人员" type:"int" prop:"add:false" search:"="`
  21. Check int64 `json:"check" label:"审核状态" type:"int" prop:"add:false"`
  22. CheckMark string `json:"checkmark" label:"审核留言" type:"string" prop:"add:false"`
  23. CheckId int64 `json:"check_id" label:"审核人员" type:"int" prop:"add:false"`
  24. CheckAt int64 `json:"check_at" label:"审核时间" type:"int" prop:"add:false"`
  25. Check2 int64 `json:"check2" label:"审核状态" type:"int" prop:"add:false"`
  26. CheckMark2 string `json:"checkmark2" label:"审核留言" type:"string" prop:"add:false"`
  27. CheckId2 int64 `json:"check_id2" label:"审核人员" type:"int" prop:"add:false"`
  28. CheckAt2 int64 `json:"check_at2" label:"审核时间" type:"int" prop:"add:false"`
  29. Check3 int64 `json:"check3" label:"审核状态" type:"int" prop:"add:false"`
  30. CheckMark3 string `json:"checkmark3" label:"审核留言" type:"string" prop:"add:false"`
  31. CheckId3 int64 `json:"check_id3" label:"审核人员" type:"int" prop:"add:false"`
  32. CheckAt3 int64 `json:"check_at3" label:"审核时间" type:"int" prop:"add:false"`
  33. DeletedAt int64 `json:"deleted_at" prop:"add:false select:false"`
  34. CreatedAt int64 `json:"created_at" prop:"add:false"`
  35. UpdatedAt int64 `json:"updated_at" prop:"add:false"`
  36. db.BaseModel
  37. }
  38. func (FinalMaterialOrderProcess) TableName() string {
  39. return "zy_final_material_order_process"
  40. }
  41. func (model FinalMaterialOrderProcess) ListPrivilege(c *gin.Context, data map[string]interface{}, s *db.Select) bool {
  42. order_id, _ := db.ToInt64(data["order_id"])
  43. s.Where = append(s.Where, fmt.Sprintf("`%s`.`order_id` = %s", model.TableName(), s.Param(order_id)))
  44. return true
  45. }
  46. func (FinalMaterialOrderProcess) OnePrivilege(c *gin.Context, id int64) bool {
  47. return true
  48. }
  49. func (FinalMaterialOrderProcess) AddPrivilege(c *gin.Context, data map[string]interface{}, post map[string]interface{}) error {
  50. data["created_id"] = c.GetInt("adminID")
  51. typ, _ := db.ToInt64(data["type"])
  52. orderId, _ := db.ToInt64(data["order_id"])
  53. receipt_date, _ := db.ToInt64(post["receipt_date"])
  54. install_date, _ := db.ToInt64(post["install_date"])
  55. pictures := db.ToString(post["pictures"])
  56. signature := db.ToString(post["signature"])
  57. var model FinalMaterialOrder
  58. db.GetModel(map[string]interface{}{
  59. "id": orderId,
  60. "deleted_at": 0,
  61. }, &model)
  62. if model.ID == 0 {
  63. return errors.New("没有权限")
  64. }
  65. var supplier FinalSupplier
  66. db.GetModel(map[string]interface{}{
  67. "id": model.SupplierId,
  68. "deleted_at": 0,
  69. }, &supplier)
  70. var site FinalSite
  71. db.GetModel(map[string]interface{}{
  72. "id": model.SiteId,
  73. "deleted_at": 0,
  74. }, &site)
  75. if site.ID == 0 {
  76. return errors.New("没有权限")
  77. }
  78. datas := map[string]interface{}{}
  79. if typ > 0 && typ < 5 {
  80. if model.ProcessId != 0 || model.State != typ-1 {
  81. return errors.New("没有权限")
  82. }
  83. datas["state"] = typ
  84. if typ == 1 || typ == 3 {
  85. if int64(c.GetInt("adminID")) != supplier.AdminId {
  86. return errors.New("没有权限")
  87. }
  88. if typ == 1 {
  89. datas["stock_time"] = time.Now().Unix()
  90. } else {
  91. if pictures == "" {
  92. return errors.New("请上传出库单和现场照片")
  93. }
  94. datas["deliver_time"] = time.Now().Unix()
  95. }
  96. } else {
  97. if int64(c.GetInt("adminID")) != site.ManagerId {
  98. return errors.New("没有权限")
  99. }
  100. if typ == 2 {
  101. if receipt_date == 0 {
  102. return errors.New("请选择配送时间")
  103. }
  104. datas["notice_time"] = time.Now().Unix()
  105. datas["receipt_date"] = receipt_date
  106. } else {
  107. if signature == "" {
  108. return errors.New("请签名")
  109. }
  110. /*if pictures == "" {
  111. return errors.New("请上传质量监督本或确认截图")
  112. }*/
  113. if model.Type == 0 || supplier.Reduce == 1 {
  114. datas["state"] = 7
  115. } else if supplier.Install == 0 {
  116. datas["state"] = typ + 2
  117. }
  118. datas["accept_time"] = time.Now().Unix()
  119. }
  120. }
  121. } else if typ == 5 {
  122. } else if typ == 6 {
  123. if int64(c.GetInt("adminID")) != model.CreatedId {
  124. return errors.New("没有权限")
  125. }
  126. if model.ProcessId != 0 || model.State == 7 || model.State < 0 {
  127. return errors.New("没有权限")
  128. }
  129. } else if typ == 7 {
  130. if int64(c.GetInt("adminID")) != supplier.AdminId && int64(c.GetInt("adminID")) != site.ManagerId && !admin.CheckAuth([]string{"final:verify:audit"}, c.GetInt("adminID")) {
  131. return errors.New("没有权限")
  132. }
  133. if (model.ProcessId != 0 || model.State > 5 || model.State < 0) && !admin.CheckAuth([]string{"final:verify:audit"}, c.GetInt("adminID")) {
  134. return errors.New("没有权限")
  135. }
  136. if model.SettleId != 0 {
  137. return errors.New("没有权限")
  138. }
  139. carts := make([]FinalMaterialCart, 0)
  140. db.GetModel(map[string]interface{}{
  141. "admin_id": c.GetInt("adminID"),
  142. "process_id": 0,
  143. "deleted_at": 0,
  144. }, &carts)
  145. if len(carts) == 0 {
  146. return errors.New("没有权限")
  147. }
  148. } else if typ == 8 {
  149. if int64(c.GetInt("adminID")) != site.ManagerId {
  150. return errors.New("没有权限")
  151. }
  152. if model.ProcessId != 0 || model.State != 4 {
  153. return errors.New("没有权限")
  154. }
  155. if install_date == 0 {
  156. return errors.New("请选择配送时间")
  157. }
  158. datas["install_date"] = install_date
  159. datas["state"] = 5
  160. } else if typ == 9 {
  161. if int64(c.GetInt("adminID")) != supplier.AdminId {
  162. return errors.New("没有权限")
  163. }
  164. if model.ProcessId != 0 || model.State != 5 {
  165. return errors.New("没有权限")
  166. }
  167. if pictures == "" {
  168. return errors.New("请上传现场照片")
  169. }
  170. datas["install_time"] = time.Now().Unix()
  171. datas["state"] = 6
  172. } else if typ == 10 {
  173. if int64(c.GetInt("adminID")) != site.ManagerId {
  174. return errors.New("没有权限")
  175. }
  176. if model.ProcessId != 0 || model.State != 6 {
  177. return errors.New("没有权限")
  178. }
  179. if signature == "" {
  180. return errors.New("请签名")
  181. }
  182. if pictures == "" {
  183. return errors.New("请上传质量监督本或确认截图")
  184. }
  185. datas["state"] = 7
  186. datas["over_time"] = time.Now().Unix()
  187. } else if typ == 11 {
  188. if int64(c.GetInt("adminID")) != site.ManagerId {
  189. return errors.New("没有权限")
  190. }
  191. if model.ProcessId != 0 || model.State != 8 {
  192. return errors.New("没有权限")
  193. }
  194. datas["notice_measure_time"] = time.Now().Unix()
  195. datas["state"] = 9
  196. } else if typ == 12 {
  197. if int64(c.GetInt("adminID")) != supplier.AdminId {
  198. return errors.New("没有权限")
  199. }
  200. if model.ProcessId != 0 || model.State != 9 {
  201. return errors.New("没有权限")
  202. }
  203. carts := make([]FinalMaterialCart, 0)
  204. db.GetModel(map[string]interface{}{
  205. "admin_id": c.GetInt("adminID"),
  206. "process_id": 0,
  207. "deleted_at": 0,
  208. }, &carts)
  209. if len(carts) == 0 {
  210. return errors.New("没有权限")
  211. }
  212. if model.MeasureTime == 0 {
  213. datas["measure_time"] = time.Now().Unix()
  214. }
  215. datas["state"] = 10
  216. } else if typ == 14 {
  217. if int64(c.GetInt("adminID")) != supplier.AdminId {
  218. return errors.New("没有权限")
  219. }
  220. if model.ProcessId != 0 || model.State != 9 {
  221. return errors.New("没有权限")
  222. }
  223. } else {
  224. return errors.New("没有权限")
  225. }
  226. if len(datas) != 0 {
  227. err := db.UpdateModel(db.Type(model), orderId, datas)
  228. if err != nil {
  229. return errors.New("没有权限")
  230. }
  231. }
  232. return nil
  233. }
  234. func (FinalMaterialOrderProcess) AddAfter(c *gin.Context, id int64, post map[string]interface{}, data map[string]interface{}) {
  235. typ, _ := db.ToInt64(data["type"])
  236. orderId, _ := db.ToInt64(data["order_id"])
  237. datas := map[string]interface{}{}
  238. var order FinalMaterialOrder
  239. db.GetModel(map[string]interface{}{
  240. "id": orderId,
  241. "deleted_at": 0,
  242. }, &order)
  243. var site FinalSite
  244. db.GetModel(map[string]interface{}{
  245. "id": order.SiteId,
  246. "deleted_at": 0,
  247. }, &site)
  248. var process FinalMaterialOrderProcess
  249. db.GetModel(map[string]interface{}{
  250. "id": id,
  251. "deleted_at": 0,
  252. }, &process)
  253. var supplier FinalSupplier
  254. db.GetModel(map[string]interface{}{
  255. "id": order.SupplierId,
  256. "deleted_at": 0,
  257. }, &supplier)
  258. var manager models.Manager
  259. db.GetModel(map[string]interface{}{
  260. "id": site.ManagerId,
  261. "deleted_at": 0,
  262. }, &manager)
  263. name := ""
  264. adminInfo, _ := admin.GetInfoByID(int(process.CreatedId), nil, nil)
  265. if adminInfo != nil {
  266. name = adminInfo.Username
  267. }
  268. address := site.Address
  269. if site.Village != " " {
  270. address += " " + site.Village
  271. }
  272. if site.RoomNo != " " {
  273. address += " " + site.RoomNo
  274. }
  275. if typ == 1 {
  276. SendMaterialMessage(int(order.CreatedId), order.OrderNo, order.ID, address, name+"已备货")
  277. if site.ID != 0 && site.ManagerId != order.CreatedId {
  278. SendMaterialMessage(int(site.ManagerId), order.OrderNo, order.ID, address, name+"已备货")
  279. }
  280. } else if typ == 2 {
  281. if site.ID != 0 {
  282. SendMaterialMessage(int(supplier.AdminId), order.OrderNo, order.ID, address, name+"已通知配送,请按时安排配送")
  283. }
  284. } else if typ == 3 {
  285. if site.ID != 0 {
  286. SendMaterialMessage(int(site.ManagerId), order.OrderNo, order.ID, address, name+"已确认货物送达,请及时验收")
  287. }
  288. } else if typ == 4 {
  289. if site.ID != 0 {
  290. SendMaterialMessage(int(supplier.AdminId), order.OrderNo, order.ID, address, name+"已确认收货")
  291. }
  292. } else if typ == 5 {
  293. if process.CreatedId != site.ManagerId {
  294. SendMaterialMessage(int(site.ManagerId), order.OrderNo, order.ID, address, name+"在订单留言了")
  295. }
  296. if process.CreatedId != supplier.AdminId {
  297. SendMaterialMessage(int(supplier.AdminId), order.OrderNo, order.ID, address, name+"在订单留言了")
  298. }
  299. if process.CreatedId != order.CreatedId && order.CreatedId != site.ManagerId {
  300. SendMaterialMessage(int(order.CreatedId), order.OrderNo, order.ID, address, name+"在订单留言了")
  301. }
  302. } else if typ == 6 {
  303. if order.State < 2 && order.IsCustom == 0 || (order.State == 8 || order.State == 9) && order.IsCustom == 1 {
  304. datas["state"] = -1
  305. db.UpdateModel(db.Type(FinalMaterialOrder{}), orderId, datas)
  306. if process.CreatedId != site.ManagerId {
  307. SendMaterialMessage(int(site.ManagerId), order.OrderNo, order.ID, address, name+"已取消订单")
  308. }
  309. if process.CreatedId != supplier.AdminId {
  310. SendMaterialMessage(int(supplier.AdminId), order.OrderNo, order.ID, address, name+"已取消订单")
  311. }
  312. if process.CreatedId != order.CreatedId && order.CreatedId != site.ManagerId {
  313. SendMaterialMessage(int(order.CreatedId), order.OrderNo, order.ID, address, name+"已取消订单")
  314. }
  315. } else {
  316. datas["process_id"] = id
  317. db.UpdateModel(db.Type(FinalMaterialOrder{}), orderId, datas)
  318. /*if process.CreatedId == supplier.AdminId {
  319. SendMaterialMessage(int(order.CreatedId), order.OrderNo, order.ID, address, name+"取消订单,请确认")
  320. } else {
  321. SendMaterialMessage(int(supplier.AdminId), order.OrderNo, order.ID, address, name+"取消订单,请确认")
  322. }*/
  323. SendMaterialMessage(int(site.ManagerId), order.OrderNo, order.ID, address, name+"取消订单,请确认")
  324. SendMaterialMessage(int(supplier.AdminId), order.OrderNo, order.ID, address, name+"取消订单,请确认")
  325. /*if manager.AuditId != 0 {
  326. SendMaterialMessage(int(manager.AuditId), order.OrderNo, order.ID, address, name+"取消订单,请确认")
  327. } else {
  328. roleId := 24
  329. where := map[string]string{
  330. "where": "id>1 AND deleted_at=0 AND state=1",
  331. "_order_by": "id desc",
  332. }
  333. param := make(map[string]interface{})
  334. where["where"] = where["where"] + " AND FIND_IN_SET({{role_id}}, role_ids)"
  335. param["role_id"] = roleId
  336. where["where"] = where["where"] + " AND FIND_IN_SET({{shop_id}}, shop_ids)"
  337. param["shop_id"] = site.ShopId
  338. type AdminList struct {
  339. ID int `json:"id"`
  340. }
  341. adminList := make([]AdminList, 0)
  342. _, err := admin.GetAdminsRaw(where, param, &adminList)
  343. if err == nil {
  344. for _, v := range adminList {
  345. SendMaterialMessage(int(v.ID), order.OrderNo, order.ID, address, name+"取消订单,请确认")
  346. }
  347. }
  348. }*/
  349. }
  350. } else if typ == 7 {
  351. db.BuildUpdate(FinalMaterialCart{}.TableName(), map[string]interface{}{
  352. "admin_id": c.GetInt("adminID"),
  353. "process_id": 0,
  354. "deleted_at": 0,
  355. }, map[string]interface{}{
  356. "process_id": id,
  357. }, FinalMaterialCart{}.DB())
  358. if modifyOrderCheck(orderId, id) {
  359. carts := make([]FinalMaterialCart, 0)
  360. db.GetModel(map[string]interface{}{
  361. "process_id": process.ID,
  362. "deleted_at": 0,
  363. }, &carts)
  364. _, err := db.BuildUpdate(FinalMaterialOrderItem{}.TableName(), map[string]interface{}{
  365. "order_id": order.ID,
  366. "deleted_at": 0,
  367. }, map[string]interface{}{
  368. "deleted_at": time.Now().Unix(),
  369. }, FinalMaterialOrderItem{}.DB())
  370. if err != nil {
  371. return
  372. }
  373. total := float64(0)
  374. for _, v := range carts {
  375. _, err := db.InsertModel(db.Type(FinalMaterialOrderItem{}), map[string]interface{}{
  376. "order_id": order.ID,
  377. "mat_id": v.MatId,
  378. "price": v.Price,
  379. "num": v.Num,
  380. "total": v.Total,
  381. "remark": v.Remark,
  382. })
  383. if err != nil {
  384. return
  385. }
  386. total = utils.FloatAdd(total, v.Total, 2)
  387. }
  388. datas["total"] = total
  389. datas["process_id"] = 0
  390. db.UpdateModel(db.Type(FinalMaterialOrder{}), orderId, datas)
  391. SendMaterialMessage(int(process.CreatedId), order.OrderNo, order.ID, address, "订单已修改")
  392. } else {
  393. if admin.CheckAuth([]string{"final:verify:audit"}, c.GetInt("adminID")) || modifyOrderCheck1(orderId, id) {
  394. db.UpdateModel(db.Type(FinalMaterialOrderProcess{}), id, map[string]interface{}{
  395. "check_at": time.Now().Unix(),
  396. })
  397. } else {
  398. if manager.AuditId != 0 {
  399. SendMaterialMessage(int(manager.AuditId), order.OrderNo, order.ID, address, name+"修改订单,请确认")
  400. } else {
  401. roleId := 24
  402. where := map[string]string{
  403. "where": "id>1 AND deleted_at=0 AND state=1",
  404. "_order_by": "id desc",
  405. }
  406. param := make(map[string]interface{})
  407. where["where"] = where["where"] + " AND FIND_IN_SET({{role_id}}, role_ids)"
  408. param["role_id"] = roleId
  409. where["where"] = where["where"] + " AND FIND_IN_SET({{shop_id}}, shop_ids)"
  410. param["shop_id"] = site.ShopId
  411. type AdminList struct {
  412. ID int `json:"id"`
  413. }
  414. adminList := make([]AdminList, 0)
  415. _, err := admin.GetAdminsRaw(where, param, &adminList)
  416. if err == nil {
  417. for _, v := range adminList {
  418. SendMaterialMessage(int(v.ID), order.OrderNo, order.ID, address, name+"修改订单,请确认")
  419. }
  420. }
  421. }
  422. }
  423. datas["process_id"] = id
  424. db.UpdateModel(db.Type(FinalMaterialOrder{}), orderId, datas)
  425. SendMaterialMessage(int(order.CreatedId), order.OrderNo, order.ID, address, name+"修改订单,请确认")
  426. }
  427. } else if typ == 8 {
  428. if site.ID != 0 {
  429. SendMaterialMessage(int(supplier.AdminId), order.OrderNo, order.ID, address, name+"已通知安装,请及时安排")
  430. }
  431. } else if typ == 9 {
  432. if site.ID != 0 {
  433. SendMaterialMessage(int(site.ManagerId), order.OrderNo, order.ID, address, name+"已确认安装,请及时验收")
  434. }
  435. } else if typ == 10 {
  436. if site.ID != 0 {
  437. SendMaterialMessage(int(supplier.AdminId), order.OrderNo, order.ID, address, name+"已确认验收")
  438. SendMaterialMessage(int(site.ProjectLeaderId), order.OrderNo, order.ID, address, "订单已完成,请及时审核")
  439. }
  440. } else if typ == 11 {
  441. if site.ID != 0 {
  442. SendMaterialMessage(int(supplier.AdminId), order.OrderNo, order.ID, address, name+"已通知测量,请及时安排")
  443. }
  444. } else if typ == 12 {
  445. db.BuildUpdate(FinalMaterialCart{}.TableName(), map[string]interface{}{
  446. "admin_id": c.GetInt("adminID"),
  447. "process_id": 0,
  448. "deleted_at": 0,
  449. }, map[string]interface{}{
  450. "process_id": id,
  451. }, FinalMaterialCart{}.DB())
  452. if modifyOrderCheck(orderId, id) {
  453. carts := make([]FinalMaterialCart, 0)
  454. db.GetModel(map[string]interface{}{
  455. "process_id": process.ID,
  456. "deleted_at": 0,
  457. }, &carts)
  458. _, err := db.BuildUpdate(FinalMaterialOrderItem{}.TableName(), map[string]interface{}{
  459. "order_id": order.ID,
  460. "deleted_at": 0,
  461. }, map[string]interface{}{
  462. "deleted_at": time.Now().Unix(),
  463. }, FinalMaterialOrderItem{}.DB())
  464. if err != nil {
  465. return
  466. }
  467. total := float64(0)
  468. for _, v := range carts {
  469. _, err := db.InsertModel(db.Type(FinalMaterialOrderItem{}), map[string]interface{}{
  470. "order_id": order.ID,
  471. "mat_id": v.MatId,
  472. "price": v.Price,
  473. "num": v.Num,
  474. "total": v.Total,
  475. "remark": v.Remark,
  476. })
  477. if err != nil {
  478. return
  479. }
  480. total = utils.FloatAdd(total, v.Total, 2)
  481. }
  482. datas["total"] = total
  483. datas["state"] = 0
  484. datas["take_time"] = time.Now().Unix()
  485. datas["process_id"] = 0
  486. db.UpdateModel(db.Type(FinalMaterialOrder{}), orderId, datas)
  487. SendMaterialMessage(int(process.CreatedId), order.OrderNo, order.ID, address, "测量订单修改已通过审核,请及时安排备货")
  488. } else {
  489. if admin.CheckAuth([]string{"final:verify:audit"}, c.GetInt("adminID")) || modifyOrderCheck1(orderId, id) {
  490. db.UpdateModel(db.Type(FinalMaterialOrderProcess{}), id, map[string]interface{}{
  491. "check_at": time.Now().Unix(),
  492. })
  493. } else {
  494. if manager.AuditId != 0 {
  495. SendMaterialMessage(int(manager.AuditId), order.OrderNo, order.ID, address, name+"修改测量订单,请确认")
  496. } else {
  497. roleId := 24
  498. where := map[string]string{
  499. "where": "id>1 AND deleted_at=0 AND state=1",
  500. "_order_by": "id desc",
  501. }
  502. param := make(map[string]interface{})
  503. where["where"] = where["where"] + " AND FIND_IN_SET({{role_id}}, role_ids)"
  504. param["role_id"] = roleId
  505. where["where"] = where["where"] + " AND FIND_IN_SET({{shop_id}}, shop_ids)"
  506. param["shop_id"] = site.ShopId
  507. type AdminList struct {
  508. ID int `json:"id"`
  509. }
  510. adminList := make([]AdminList, 0)
  511. _, err := admin.GetAdminsRaw(where, param, &adminList)
  512. if err == nil {
  513. for _, v := range adminList {
  514. SendMaterialMessage(int(v.ID), order.OrderNo, order.ID, address, name+"修改测量订单,请确认")
  515. }
  516. }
  517. }
  518. }
  519. datas["process_id"] = id
  520. db.UpdateModel(db.Type(FinalMaterialOrder{}), orderId, datas)
  521. SendMaterialMessage(int(order.CreatedId), order.OrderNo, order.ID, address, name+"修改测量订单,请确认")
  522. }
  523. } else if typ == 14 {
  524. datas["process_id"] = id
  525. db.UpdateModel(db.Type(FinalMaterialOrder{}), orderId, datas)
  526. if site.ID != 0 {
  527. SendMaterialMessage(int(site.ManagerId), order.OrderNo, order.ID, address, name+"报备不具备测量条件,请审核")
  528. }
  529. }
  530. }
  531. func (FinalMaterialOrderProcess) EditPrivilege(c *gin.Context, id int64, data map[string]interface{}, post map[string]interface{}) error {
  532. return errors.New("没有权限")
  533. }
  534. func (FinalMaterialOrderProcess) DelPrivilege(c *gin.Context, id int64) error {
  535. return errors.New("没有权限")
  536. }
  537. func (FinalMaterialOrderProcess) Page() bool {
  538. return false
  539. }
  540. type FinalMaterialOrderProcessMobile struct {
  541. CreatedName string `json:"created_name" prop:"add:false select:created.username"`
  542. CreatedPhone string `json:"created_phone" prop:"add:false select:created.phone"`
  543. CreatedHeadimgurl string `json:"created_headimgurl" prop:"add:false select:created.headimgurl"`
  544. CheckName string `json:"check_name" prop:"add:false select:check.username"`
  545. CheckPhone string `json:"check_phone" prop:"add:false select:check.phone"`
  546. CheckHeadimgurl string `json:"check_headimgurl" prop:"add:false select:check.headimgurl"`
  547. CheckName2 string `json:"check_name2" prop:"add:false select:check2.username"`
  548. CheckPhone2 string `json:"check_phone2" prop:"add:false select:check2.phone"`
  549. CheckHeadimgurl2 string `json:"check_headimgurl2" prop:"add:false select:check2.headimgurl"`
  550. CheckName3 string `json:"check_name3" prop:"add:false select:check3.username"`
  551. CheckPhone3 string `json:"check_phone3" prop:"add:false select:check3.phone"`
  552. CheckHeadimgurl3 string `json:"check_headimgurl3" prop:"add:false select:check3.headimgurl"`
  553. FinalMaterialOrderProcess
  554. }
  555. func (model FinalMaterialOrderProcessMobile) GroupBy() string {
  556. return fmt.Sprintf("`%s`.`id`", model.TableName())
  557. }
  558. func (model FinalMaterialOrderProcessMobile) OrderBy() string {
  559. return fmt.Sprintf("`%s`.`created_at` desc", model.TableName())
  560. }
  561. func (model FinalMaterialOrderProcessMobile) LeftJoin(data map[string]interface{}, s *db.Select) []db.JoinModel {
  562. return []db.JoinModel{
  563. {
  564. Model: JoinAdmin{},
  565. As: "created",
  566. On: []string{"`created`.`id` = " + model.TableName() + ".`created_id`"},
  567. },
  568. {
  569. Model: JoinAdmin{},
  570. As: "check",
  571. On: []string{"`check`.`id` = " + model.TableName() + ".`check_id`"},
  572. },
  573. {
  574. Model: JoinAdmin{},
  575. As: "check2",
  576. On: []string{"`check2`.`id` = " + model.TableName() + ".`check_id2`"},
  577. },
  578. {
  579. Model: JoinAdmin{},
  580. As: "check3",
  581. On: []string{"`check3`.`id` = " + model.TableName() + ".`check_id3`"},
  582. },
  583. }
  584. }
  585. func (model FinalMaterialOrderProcessMobile) ListAfter(c *gin.Context, data map[string]interface{}, list []map[string]interface{}) []map[string]interface{} {
  586. ids := make([]int64, 0)
  587. idmap := make(map[int64]int)
  588. for i, v := range list {
  589. id, _ := db.ToInt64(v["id"])
  590. ids = append(ids, id)
  591. idmap[id] = i
  592. }
  593. datas, _ := db.GetModelMap(db.Type(FinalMaterialCartMobile{}), map[string]interface{}{
  594. fmt.Sprintf("`%s`.`process_id` in", FinalMaterialCartMobile{}.TableName()): ids,
  595. fmt.Sprintf("`%s`.`deleted_at`", FinalMaterialCartMobile{}.TableName()): 0,
  596. }, nil)
  597. for _, v := range datas {
  598. id, _ := db.ToInt64(v["process_id"])
  599. if n, ok := idmap[id]; ok {
  600. carts := make([]map[string]interface{}, 0)
  601. if is, ok := list[n]["carts"].([]map[string]interface{}); ok {
  602. carts = is
  603. }
  604. carts = append(carts, v)
  605. list[n]["carts"] = carts
  606. }
  607. }
  608. return list
  609. }
  610. func modifyOrderCheck(orderId int64, processId int64) bool {
  611. carts := make([]FinalMaterialCart, 0)
  612. db.GetModel(map[string]interface{}{
  613. "process_id": processId,
  614. "deleted_at": 0,
  615. }, &carts)
  616. items := make([]FinalMaterialOrderItem, 0)
  617. db.GetModel(map[string]interface{}{
  618. "order_id": orderId,
  619. "deleted_at": 0,
  620. }, &items)
  621. for _, cart := range carts {
  622. find := false
  623. for _, item := range items {
  624. if item.MatId == cart.MatId && item.ItemId == cart.ItemId && item.Price == cart.Price {
  625. //if cart.Num > item.Num {
  626. if cart.Num != item.Num {
  627. return false
  628. }
  629. find = true
  630. }
  631. }
  632. if !find {
  633. return false
  634. }
  635. }
  636. return true
  637. }
  638. func modifyOrderCheck1(orderId int64, processId int64) bool {
  639. carts := make([]FinalMaterialCart, 0)
  640. db.GetModel(map[string]interface{}{
  641. "process_id": processId,
  642. "deleted_at": 0,
  643. }, &carts)
  644. items := make([]FinalMaterialOrderItem, 0)
  645. db.GetModel(map[string]interface{}{
  646. "order_id": orderId,
  647. "deleted_at": 0,
  648. }, &items)
  649. for _, cart := range carts {
  650. find := false
  651. for _, item := range items {
  652. if item.MatId == cart.MatId && item.ItemId == cart.ItemId && item.Price == cart.Price {
  653. if cart.Num > item.Num {
  654. return false
  655. }
  656. find = true
  657. }
  658. }
  659. if !find {
  660. return false
  661. }
  662. }
  663. return true
  664. }