FeeRefund.php 3.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. namespace app\finance\model;
  3. use think\Model;
  4. use think\facade\Db;
  5. class FeeRefund extends Model
  6. {
  7. public function datalist($param = [], $where = [], $whereOr = [])
  8. {
  9. $rows = empty($param['limit']) ? get_config('app.page_size') : $param['limit'];
  10. $order = empty($param['order']) ? 'id desc' : $param['order'];
  11. try {
  12. $list = self::where($where)
  13. ->where(function ($query) use ($whereOr) {
  14. if (!empty($whereOr)) {
  15. $query->whereOr($whereOr);
  16. }
  17. })
  18. ->order($order)
  19. ->paginate(['list_rows' => $rows])
  20. ->each(function ($item) {
  21. $item->check_status_str = check_status_name($item->check_status);
  22. $item->admin_name = Db::name('Admin')->where('id', $item->admin_id)->value('name');
  23. $item->department = Db::name('Department')->where('id', $item->did)->value('title');
  24. $item->create_time_str = to_date($item->create_time);
  25. });
  26. return $list;
  27. } catch (\Exception $e) {
  28. return ['code' => 1, 'data' => [], 'msg' => $e->getMessage()];
  29. }
  30. }
  31. public function add($param)
  32. {
  33. try {
  34. $param['create_time'] = time();
  35. $insertId = self::strict(false)->field(true)->insertGetId($param);
  36. add_log('add', $insertId, $param, '费用返还申请');
  37. } catch (\Exception $e) {
  38. return to_assign(1, '操作失败,原因:' . $e->getMessage());
  39. }
  40. return to_assign(0, '操作成功', ['return_id' => $insertId]);
  41. }
  42. public function edit($param)
  43. {
  44. try {
  45. $param['update_time'] = time();
  46. self::where('id', $param['id'])->strict(false)->field(true)->update($param);
  47. add_log('edit', $param['id'], $param, '费用返还申请');
  48. } catch (\Exception $e) {
  49. return to_assign(1, '操作失败,原因:' . $e->getMessage());
  50. }
  51. return to_assign(0, '操作成功', ['return_id' => $param['id']]);
  52. }
  53. public function getById($id)
  54. {
  55. $info = self::find($id);
  56. if (empty($info)) {
  57. return [];
  58. }
  59. $info['admin_name'] = Db::name('Admin')->where('id', $info['admin_id'])->value('name');
  60. $info['department'] = Db::name('Department')->where('id', $info['did'])->value('title');
  61. // 费项维度为多选,存逗号分隔的 value,翻译为名称拼接
  62. $info['fee_dimension_name'] = '';
  63. if ($info['fee_dimension'] !== '') {
  64. $values = array_filter(explode(',', $info['fee_dimension']), static fn($v) => $v !== '');
  65. if (!empty($values)) {
  66. $names = Db::name('FeeRefundCate')->where('type', 1)->where('value', 'in', $values)->where('delete_time', 0)->column('title');
  67. $info['fee_dimension_name'] = implode('、', $names);
  68. }
  69. }
  70. $info['refund_item_name'] = Db::name('FeeRefundCate')->where(['type' => 2, 'value' => $info['refund_item'], 'delete_time' => 0])->value('title') ?? '';
  71. $info['refund_reason_name'] = Db::name('FeeRefundCate')->where(['type' => 3, 'value' => $info['refund_reason'], 'delete_time' => 0])->value('title') ?? '';
  72. if (!empty($info['file_ids'])) {
  73. $info['file_array'] = Db::name('File')->where('id', 'in', $info['file_ids'])->select();
  74. }
  75. return $info;
  76. }
  77. public function delById($id, $type = 0)
  78. {
  79. try {
  80. if ($type == 0) {
  81. self::where('id', $id)->update(['delete_time' => time()]);
  82. } else {
  83. self::destroy($id);
  84. }
  85. add_log('delete', $id);
  86. } catch (\Exception $e) {
  87. return to_assign(1, '操作失败,原因:' . $e->getMessage());
  88. }
  89. return to_assign();
  90. }
  91. }