XingYuXian hai 1 ano
pai
achega
3f089c8201
Modificáronse 100 ficheiros con 12669 adicións e 12669 borrados
  1. 5 5
      .gitignore
  2. 7 7
      .idea/modules.xml
  3. 5 5
      .idea/vcs.xml
  4. 90 90
      .idea/workspace.xml
  5. 8 8
      .idea/youngee_m_api.iml
  6. 28 28
      apiclient_key.pem
  7. 18 18
      config/dev.yaml
  8. 47 47
      config/init.go
  9. 5 5
      config/mail.json
  10. 18 18
      config/pro.yaml
  11. 28 28
      consts/error_code.go
  12. 31 31
      consts/product.go
  13. 341 341
      consts/project.go
  14. 7 7
      consts/session.go
  15. 137 137
      db/Settle.go
  16. 21 21
      db/auto_default.go
  17. 22 22
      db/auto_task.go
  18. 320 320
      db/data.go
  19. 859 859
      db/default.go
  20. 155 155
      db/enterprise.go
  21. 438 438
      db/finance.go
  22. 299 299
      db/finish.go
  23. 44 44
      db/info_pricing_strategy.go
  24. 30 30
      db/init.go
  25. 279 279
      db/link.go
  26. 296 296
      db/logistics.go
  27. 111 111
      db/message.go
  28. 401 401
      db/number_info.go
  29. 2366 2366
      db/operate.go
  30. 29 29
      db/pay_record.go
  31. 137 137
      db/product.go
  32. 60 60
      db/product_photo.go
  33. 446 446
      db/project.go
  34. 74 74
      db/recruit_strategy.go
  35. 274 274
      db/script.go
  36. 269 269
      db/sectask.go
  37. 29 29
      db/sectask_logistics.go
  38. 1 1
      db/selection.go
  39. 307 307
      db/sketch.go
  40. 181 181
      db/talent.go
  41. 23 23
      db/talent_income.go
  42. 384 384
      db/task.go
  43. 24 24
      db/task_log.go
  44. 84 84
      db/terminate.go
  45. 428 428
      db/user.go
  46. 47 47
      db/youngee.go
  47. 23 23
      dockerfile
  48. 23 23
      go.mod
  49. 218 218
      go.sum
  50. 55 55
      handler/ConfirmWithdrawal.go
  51. 60 60
      handler/CreateSecTaskLogistics.go
  52. 61 61
      handler/GetSecTaskList.go
  53. 58 58
      handler/GetServiceFee.go
  54. 58 58
      handler/GetSpecialDataNumber.go
  55. 58 58
      handler/GetSpecialFinishData.go
  56. 58 58
      handler/GetSpecialInviteNumber.go
  57. 58 58
      handler/GetSpecialLinkNumber.go
  58. 58 58
      handler/GetSpecialReviewNumber.go
  59. 61 61
      handler/PassSecTaskCoop.go
  60. 61 61
      handler/RefuseSecTaskCoop.go
  61. 61 61
      handler/SettleSecTask.go
  62. 74 74
      handler/SpecialTaskDataList.go
  63. 64 64
      handler/SpecialTaskFinishDataList.go
  64. 77 77
      handler/SpecialTaskInviteList.go
  65. 69 69
      handler/SpecialTaskLinkList.go
  66. 73 73
      handler/SpecialTaskScriptList.go
  67. 69 69
      handler/SpecialTaskSketchList.go
  68. 61 61
      handler/SubmitSelection.go
  69. 60 60
      handler/UpdateSecTaskLogistics.go
  70. 58 58
      handler/accept_data.go
  71. 59 59
      handler/accept_link.go
  72. 89 89
      handler/accept_script.go
  73. 89 89
      handler/accept_sketch.go
  74. 57 57
      handler/account_income.go
  75. 62 62
      handler/account_info.go
  76. 49 49
      handler/base.go
  77. 57 57
      handler/confirmInvoice.go
  78. 58 58
      handler/creatblock.go
  79. 72 72
      handler/createSpecialLogistics.go
  80. 63 63
      handler/create_user.go
  81. 67 67
      handler/creator_list.go
  82. 58 58
      handler/data_number_info.go
  83. 89 89
      handler/data_opinion.go
  84. 58 58
      handler/default_number_info.go
  85. 55 55
      handler/deletePhotoUrl.go
  86. 56 56
      handler/delete_account.go
  87. 57 57
      handler/disabled_user.go
  88. 67 67
      handler/enterprise_user.go
  89. 58 58
      handler/findAllProduct.go
  90. 58 58
      handler/finish_number_info.go
  91. 56 56
      handler/getBankInfo.go
  92. 61 61
      handler/getCodeUrl.go
  93. 56 56
      handler/getEnterpriseBalance.go
  94. 55 55
      handler/getEnterpriseIds.go
  95. 55 55
      handler/getInvoiceNums.go
  96. 65 65
      handler/getProduceRecords.go
  97. 55 55
      handler/getRechargeNums.go
  98. 68 68
      handler/getSelectionInfo.go
  99. 72 72
      handler/getSpecialLogisticList.go
  100. 59 59
      handler/getSpecialLogisticNumber.go

+ 5 - 5
.gitignore

@@ -1,5 +1,5 @@
-.history/
-
-go.mod
-go.sum
-.idea
+.history/
+
+go.mod
+go.sum
+.idea

+ 7 - 7
.idea/modules.xml

@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="ProjectModuleManager">
-    <modules>
-      <module fileurl="file://$PROJECT_DIR$/.idea/youngee_m_api.iml" filepath="$PROJECT_DIR$/.idea/youngee_m_api.iml" />
-    </modules>
-  </component>
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/youngee_m_api.iml" filepath="$PROJECT_DIR$/.idea/youngee_m_api.iml" />
+    </modules>
+  </component>
 </project>

+ 5 - 5
.idea/vcs.xml

@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="VcsDirectoryMappings">
-    <mapping directory="" vcs="Git" />
-  </component>
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="Git" />
+  </component>
 </project>

+ 90 - 90
.idea/workspace.xml

@@ -1,91 +1,91 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="AutoImportSettings">
-    <option name="autoReloadType" value="ALL" />
-  </component>
-  <component name="ChangeListManager">
-    <list default="true" id="8dde75a1-d1c1-4fc1-81a0-4db9a43a6250" name="更改" comment="">
-      <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-<<<<<<< HEAD
-=======
-      <change beforePath="$PROJECT_DIR$/db/selection.go" beforeDir="false" afterPath="$PROJECT_DIR$/db/selection.go" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/model/http_model/UpdateSelectionRequest.go" beforeDir="false" afterPath="$PROJECT_DIR$/model/http_model/UpdateSelectionRequest.go" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/service/selection.go" beforeDir="false" afterPath="$PROJECT_DIR$/service/selection.go" afterDir="false" />
->>>>>>> new
-    </list>
-    <option name="SHOW_DIALOG" value="false" />
-    <option name="HIGHLIGHT_CONFLICTS" value="true" />
-    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
-    <option name="LAST_RESOLUTION" value="IGNORE" />
-  </component>
-  <component name="GOROOT" url="file://$PROJECT_DIR$/../../../develop_tools/Go" />
-  <component name="Git.Settings">
-    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
-  </component>
-  <component name="ProjectId" id="2Tjm1DDLYMIqFnaHsNVswDndQ90" />
-  <component name="ProjectViewState">
-    <option name="hideEmptyMiddlePackages" value="true" />
-    <option name="showLibraryContents" value="true" />
-  </component>
-<<<<<<< HEAD
-  <component name="PropertiesComponent">{
-  &quot;keyToString&quot;: {
-    &quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;,
-    &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
-    &quot;RunOnceActivity.go.formatter.settings.were.checked&quot;: &quot;true&quot;,
-    &quot;RunOnceActivity.go.migrated.go.modules.settings&quot;: &quot;true&quot;,
-    &quot;RunOnceActivity.go.modules.go.list.on.any.changes.was.set&quot;: &quot;true&quot;,
-    &quot;WebServerToolWindowFactoryState&quot;: &quot;false&quot;,
-    &quot;go.import.settings.migrated&quot;: &quot;true&quot;,
-    &quot;go.sdk.automatically.set&quot;: &quot;true&quot;,
-    &quot;last_opened_file_path&quot;: &quot;C:/Users/ls&quot;,
-    &quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
-    &quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;
-  }
-}</component>
-=======
-  <component name="PropertiesComponent"><![CDATA[{
-  "keyToString": {
-    "RunOnceActivity.OpenProjectViewOnStart": "true",
-    "RunOnceActivity.ShowReadmeOnStart": "true",
-    "RunOnceActivity.go.formatter.settings.were.checked": "true",
-    "RunOnceActivity.go.migrated.go.modules.settings": "true",
-    "RunOnceActivity.go.modules.go.list.on.any.changes.was.set": "true",
-    "WebServerToolWindowFactoryState": "false",
-    "go.import.settings.migrated": "true",
-    "go.sdk.automatically.set": "true",
-    "last_opened_file_path": "C:/Users/24678",
-    "node.js.detected.package.eslint": "true",
-    "node.js.selected.package.eslint": "(autodetect)"
-  }
-}]]></component>
-  <component name="RunManager">
-    <configuration default="true" type="GoApplicationRunConfiguration" factoryName="Go Application">
-      <module name="youngee_m_api" />
-      <working_directory value="$PROJECT_DIR$" />
-      <go_parameters value="-i" />
-      <kind value="FILE" />
-      <directory value="$PROJECT_DIR$" />
-      <filePath value="$PROJECT_DIR$" />
-      <method v="2" />
-    </configuration>
-    <configuration default="true" type="GoTestRunConfiguration" factoryName="Go Test">
-      <module name="youngee_m_api" />
-      <working_directory value="$PROJECT_DIR$" />
-      <go_parameters value="-i" />
-      <kind value="DIRECTORY" />
-      <directory value="$PROJECT_DIR$" />
-      <filePath value="$PROJECT_DIR$" />
-      <framework value="gotest" />
-      <method v="2" />
-    </configuration>
-  </component>
->>>>>>> new
-  <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="应用程序级" UseSingleDictionary="true" transferred="true" />
-  <component name="TypeScriptGeneratedFilesManager">
-    <option name="version" value="3" />
-  </component>
-  <component name="VgoProject">
-    <settings-migrated>true</settings-migrated>
-  </component>
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="AutoImportSettings">
+    <option name="autoReloadType" value="ALL" />
+  </component>
+  <component name="ChangeListManager">
+    <list default="true" id="8dde75a1-d1c1-4fc1-81a0-4db9a43a6250" name="更改" comment="">
+      <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
+<<<<<<< HEAD
+=======
+      <change beforePath="$PROJECT_DIR$/db/selection.go" beforeDir="false" afterPath="$PROJECT_DIR$/db/selection.go" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/model/http_model/UpdateSelectionRequest.go" beforeDir="false" afterPath="$PROJECT_DIR$/model/http_model/UpdateSelectionRequest.go" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/service/selection.go" beforeDir="false" afterPath="$PROJECT_DIR$/service/selection.go" afterDir="false" />
+>>>>>>> new
+    </list>
+    <option name="SHOW_DIALOG" value="false" />
+    <option name="HIGHLIGHT_CONFLICTS" value="true" />
+    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
+    <option name="LAST_RESOLUTION" value="IGNORE" />
+  </component>
+  <component name="GOROOT" url="file://$PROJECT_DIR$/../../../develop_tools/Go" />
+  <component name="Git.Settings">
+    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
+  </component>
+  <component name="ProjectId" id="2Tjm1DDLYMIqFnaHsNVswDndQ90" />
+  <component name="ProjectViewState">
+    <option name="hideEmptyMiddlePackages" value="true" />
+    <option name="showLibraryContents" value="true" />
+  </component>
+<<<<<<< HEAD
+  <component name="PropertiesComponent">{
+  &quot;keyToString&quot;: {
+    &quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;,
+    &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
+    &quot;RunOnceActivity.go.formatter.settings.were.checked&quot;: &quot;true&quot;,
+    &quot;RunOnceActivity.go.migrated.go.modules.settings&quot;: &quot;true&quot;,
+    &quot;RunOnceActivity.go.modules.go.list.on.any.changes.was.set&quot;: &quot;true&quot;,
+    &quot;WebServerToolWindowFactoryState&quot;: &quot;false&quot;,
+    &quot;go.import.settings.migrated&quot;: &quot;true&quot;,
+    &quot;go.sdk.automatically.set&quot;: &quot;true&quot;,
+    &quot;last_opened_file_path&quot;: &quot;C:/Users/ls&quot;,
+    &quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
+    &quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;
+  }
+}</component>
+=======
+  <component name="PropertiesComponent"><![CDATA[{
+  "keyToString": {
+    "RunOnceActivity.OpenProjectViewOnStart": "true",
+    "RunOnceActivity.ShowReadmeOnStart": "true",
+    "RunOnceActivity.go.formatter.settings.were.checked": "true",
+    "RunOnceActivity.go.migrated.go.modules.settings": "true",
+    "RunOnceActivity.go.modules.go.list.on.any.changes.was.set": "true",
+    "WebServerToolWindowFactoryState": "false",
+    "go.import.settings.migrated": "true",
+    "go.sdk.automatically.set": "true",
+    "last_opened_file_path": "C:/Users/24678",
+    "node.js.detected.package.eslint": "true",
+    "node.js.selected.package.eslint": "(autodetect)"
+  }
+}]]></component>
+  <component name="RunManager">
+    <configuration default="true" type="GoApplicationRunConfiguration" factoryName="Go Application">
+      <module name="youngee_m_api" />
+      <working_directory value="$PROJECT_DIR$" />
+      <go_parameters value="-i" />
+      <kind value="FILE" />
+      <directory value="$PROJECT_DIR$" />
+      <filePath value="$PROJECT_DIR$" />
+      <method v="2" />
+    </configuration>
+    <configuration default="true" type="GoTestRunConfiguration" factoryName="Go Test">
+      <module name="youngee_m_api" />
+      <working_directory value="$PROJECT_DIR$" />
+      <go_parameters value="-i" />
+      <kind value="DIRECTORY" />
+      <directory value="$PROJECT_DIR$" />
+      <filePath value="$PROJECT_DIR$" />
+      <framework value="gotest" />
+      <method v="2" />
+    </configuration>
+  </component>
+>>>>>>> new
+  <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="应用程序级" UseSingleDictionary="true" transferred="true" />
+  <component name="TypeScriptGeneratedFilesManager">
+    <option name="version" value="3" />
+  </component>
+  <component name="VgoProject">
+    <settings-migrated>true</settings-migrated>
+  </component>
 </project>

+ 8 - 8
.idea/youngee_m_api.iml

@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module type="WEB_MODULE" version="4">
-  <component name="Go" enabled="true" />
-  <component name="NewModuleRootManager">
-    <content url="file://$MODULE_DIR$" />
-    <orderEntry type="inheritedJdk" />
-    <orderEntry type="sourceFolder" forTests="false" />
-  </component>
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="WEB_MODULE" version="4">
+  <component name="Go" enabled="true" />
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
 </module>

+ 28 - 28
apiclient_key.pem

@@ -1,28 +1,28 @@
------BEGIN PRIVATE KEY-----
-MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDiS0mOMU85JaH1
-nRsOU57TfKP+3ma7TiEe2jQNHhF1UUW8i1+Hc1NeLe7dh29J5aEa/isu0RG2LHjY
-P73dzPkarAdhmW3ETsbBVazUw7RfhbPawR6EjBArRAojqHLXdSTFeDM6LtmwbWD2
-JEjiBKyTMtsbnap4ubLhR03huPn8V20Hbq3Zg+U8T4XtnK7jrac2SqkuybKheRX8
-OzaefU/nYbxKwyTqKCanAs96ZTFuEceW9Utoa4jb4bqdVVhbc2P5gyyssKfYkfDj
-Pdr2X3vg11qq7bhjQ+xLgUiWwXlqnKY0eHxvx0Zdh5PWdh0oYZtbuHrkPPJaf4zu
-Zkre9VnXAgMBAAECggEASPlaWP5Ru+4E0n29UdtpZm3VPMVff5tsVtSq4GgH3Ts+
-L9UKE1X/Vmmdk9au7recQmYgatKE0ah5t9KmWbZVxmIfZzvhB+MXeRU1zM7nhb5K
-B4srWjcIp8sjMeiKUCy4lO10J5kgHiLHl9iPoEM9m6JUwg0QAipwIvGpjdbm1paH
-esqCyZ2+fyTypO1mkpPOOB6caGwePE0Ppd/U5woPKPS0H5JnBdKPWBh/XYkBigOl
-fMRjJg9BDGPjxI1Rt+F6S359fgfXZJV1m74YVL9HxgfKi+WHdDTtj0094NBqizCg
-goeLZbz6aWYbOBmpFHrK8F2i/pYU658KLCtjjpvnQQKBgQD6JJGRqqF1OLVsjJ+E
-+8ts8IdC+OBYY9YHgLw5D2aFUrtJre9Fiktj0hupXPm+01kmc+5OupR3O/L8jhM6
-+NTe3fmIzNLk72GeZsiWFrZCN0fKjts421wwyhBrqW/qZN66a1kYA7fvr0ToRjL1
-jLhTqu0a8BGRyaxbqlebo/5FkQKBgQDnl8MYmJoYpJ36WK3Bd1j/9eczDmRXf4RW
-kZjIOeXBN4zHZsvlFtMtcaZAw3Z1KPbM4ncuKwl+pc7oNUfOAU/IOiBEiZR7zSYG
-D8g+UoXfZzv5mFQQBSagfY4Q0bigG1Zt/QPMoN5setiG6BJ+bwN7WfXNjRjyaXtZ
-ovUUniFU5wKBgQDrvu0mcL6MIG7zp7Brf3bf6+w+lRmylBzRo2VBDZ+chTUXooJ/
-cm/M2ubQ/lwtmThLAjWVI0jq+qftl+TNzleo12DmqcsUkfrZc5sVwL/ytfDGGU7I
-TgybusQxA1YDfR9gZ+1msZJ3pSJ3GjnKq93IlK2zlo+oa34yQd8hQzRP0QKBgQDQ
-5TkbNHq6g7HjoJ2KBocGyd2zVeX4bpMGKuouoNq2v86CBh0gFMiDEyItBKIS59JF
-2Hg78qHr1M+e8IBGNzSpnJSCfb6rNM55ZT7vyCvs6QdWCaq5kIvY86dzUFhCQqZh
-K3mD2A8Itn4cobQcyzHOz8RBlmXMMo0Ku0xpPoE+PQKBgEFcy2wvv/saKJ+3t2Cw
-4ckwskhsQ2CizlAlTCNmBzou+IYfcg3VxS7P0EA/ViUXHTOx1pjhS977FLqJxe08
-FU7a3mIzzehJA0VnsZC6lzCqSRxdE4bcEs9Opw+sJS7abJKRU2QeZSJEChqAMUhJ
-3oP15BVjOfW79TL/hp8fRZAt
------END PRIVATE KEY-----
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDiS0mOMU85JaH1
+nRsOU57TfKP+3ma7TiEe2jQNHhF1UUW8i1+Hc1NeLe7dh29J5aEa/isu0RG2LHjY
+P73dzPkarAdhmW3ETsbBVazUw7RfhbPawR6EjBArRAojqHLXdSTFeDM6LtmwbWD2
+JEjiBKyTMtsbnap4ubLhR03huPn8V20Hbq3Zg+U8T4XtnK7jrac2SqkuybKheRX8
+OzaefU/nYbxKwyTqKCanAs96ZTFuEceW9Utoa4jb4bqdVVhbc2P5gyyssKfYkfDj
+Pdr2X3vg11qq7bhjQ+xLgUiWwXlqnKY0eHxvx0Zdh5PWdh0oYZtbuHrkPPJaf4zu
+Zkre9VnXAgMBAAECggEASPlaWP5Ru+4E0n29UdtpZm3VPMVff5tsVtSq4GgH3Ts+
+L9UKE1X/Vmmdk9au7recQmYgatKE0ah5t9KmWbZVxmIfZzvhB+MXeRU1zM7nhb5K
+B4srWjcIp8sjMeiKUCy4lO10J5kgHiLHl9iPoEM9m6JUwg0QAipwIvGpjdbm1paH
+esqCyZ2+fyTypO1mkpPOOB6caGwePE0Ppd/U5woPKPS0H5JnBdKPWBh/XYkBigOl
+fMRjJg9BDGPjxI1Rt+F6S359fgfXZJV1m74YVL9HxgfKi+WHdDTtj0094NBqizCg
+goeLZbz6aWYbOBmpFHrK8F2i/pYU658KLCtjjpvnQQKBgQD6JJGRqqF1OLVsjJ+E
++8ts8IdC+OBYY9YHgLw5D2aFUrtJre9Fiktj0hupXPm+01kmc+5OupR3O/L8jhM6
++NTe3fmIzNLk72GeZsiWFrZCN0fKjts421wwyhBrqW/qZN66a1kYA7fvr0ToRjL1
+jLhTqu0a8BGRyaxbqlebo/5FkQKBgQDnl8MYmJoYpJ36WK3Bd1j/9eczDmRXf4RW
+kZjIOeXBN4zHZsvlFtMtcaZAw3Z1KPbM4ncuKwl+pc7oNUfOAU/IOiBEiZR7zSYG
+D8g+UoXfZzv5mFQQBSagfY4Q0bigG1Zt/QPMoN5setiG6BJ+bwN7WfXNjRjyaXtZ
+ovUUniFU5wKBgQDrvu0mcL6MIG7zp7Brf3bf6+w+lRmylBzRo2VBDZ+chTUXooJ/
+cm/M2ubQ/lwtmThLAjWVI0jq+qftl+TNzleo12DmqcsUkfrZc5sVwL/ytfDGGU7I
+TgybusQxA1YDfR9gZ+1msZJ3pSJ3GjnKq93IlK2zlo+oa34yQd8hQzRP0QKBgQDQ
+5TkbNHq6g7HjoJ2KBocGyd2zVeX4bpMGKuouoNq2v86CBh0gFMiDEyItBKIS59JF
+2Hg78qHr1M+e8IBGNzSpnJSCfb6rNM55ZT7vyCvs6QdWCaq5kIvY86dzUFhCQqZh
+K3mD2A8Itn4cobQcyzHOz8RBlmXMMo0Ku0xpPoE+PQKBgEFcy2wvv/saKJ+3t2Cw
+4ckwskhsQ2CizlAlTCNmBzou+IYfcg3VxS7P0EA/ViUXHTOx1pjhS977FLqJxe08
+FU7a3mIzzehJA0VnsZC6lzCqSRxdE4bcEs9Opw+sJS7abJKRU2QeZSJEChqAMUhJ
+3oP15BVjOfW79TL/hp8fRZAt
+-----END PRIVATE KEY-----

+ 18 - 18
config/dev.yaml

@@ -1,18 +1,18 @@
-mysql:
-  host: 139.9.53.143
-  port: 3306
-  user: talent
-  password: talentDB_123
-  database: youngmini
-
-redis:
-  host: 139.9.53.143
-  port: 6379
-  auth: younggeeRedis_123
-  database: 1
-
-server:
-  host: 0.0.0.0
-  port: 8400
-  session:
-    ttl: -1 # minute
+mysql:
+  host: 139.9.53.143
+  port: 3306
+  user: talent
+  password: talentDB_123
+  database: youngmini
+
+redis:
+  host: 139.9.53.143
+  port: 6379
+  auth: younggeeRedis_123
+  database: 1
+
+server:
+  host: 0.0.0.0
+  port: 8400
+  session:
+    ttl: -1 # minute

+ 47 - 47
config/init.go

@@ -1,47 +1,47 @@
-package config
-
-import (
-	"fmt"
-	"io/ioutil"
-	"os"
-	"youngee_m_api/db"
-	"youngee_m_api/model/system_model"
-	"youngee_m_api/redis"
-	"youngee_m_api/service"
-
-	"gopkg.in/yaml.v2"
-)
-
-func Init() *system_model.Server {
-	config := new(system_model.Config)
-	env := getEnv()
-	configPath := fmt.Sprintf("./config/%s.yaml", env)
-
-	file, err := ioutil.ReadFile(configPath)
-	if err != nil {
-		panic(err)
-	}
-	//yaml文件内容影射到结构体中
-	err = yaml.Unmarshal(file, config)
-	if err != nil {
-		panic(err)
-	}
-	loadExternelConfig(config)
-	return config.Server
-}
-
-func loadExternelConfig(config *system_model.Config) {
-	db.Init(config.Mysql)
-	redis.Init(config.Redis)
-	service.LoginAuthInit(config.Server.Session)
-	//service.SendCodeInit(config.Server.Session)
-	service.QrCodeInit(config.Server.Session)
-}
-
-func getEnv() string {
-	env := os.Getenv("youngee_env")
-	if env == "" {
-		env = "dev"
-	}
-	return env
-}
+package config
+
+import (
+	"fmt"
+	"io/ioutil"
+	"os"
+	"youngee_m_api/db"
+	"youngee_m_api/model/system_model"
+	"youngee_m_api/redis"
+	"youngee_m_api/service"
+
+	"gopkg.in/yaml.v2"
+)
+
+func Init() *system_model.Server {
+	config := new(system_model.Config)
+	env := getEnv()
+	configPath := fmt.Sprintf("./config/%s.yaml", env)
+
+	file, err := ioutil.ReadFile(configPath)
+	if err != nil {
+		panic(err)
+	}
+	//yaml文件内容影射到结构体中
+	err = yaml.Unmarshal(file, config)
+	if err != nil {
+		panic(err)
+	}
+	loadExternelConfig(config)
+	return config.Server
+}
+
+func loadExternelConfig(config *system_model.Config) {
+	db.Init(config.Mysql)
+	redis.Init(config.Redis)
+	service.LoginAuthInit(config.Server.Session)
+	//service.SendCodeInit(config.Server.Session)
+	service.QrCodeInit(config.Server.Session)
+}
+
+func getEnv() string {
+	env := os.Getenv("youngee_env")
+	if env == "" {
+		env = "dev"
+	}
+	return env
+}

+ 5 - 5
config/mail.json

@@ -1,6 +1,6 @@
-{
-    "stmp_server": "smtp.qq.com",
-    "stmp_port": "587",
-    "stmp_user_name": "2467835131@qq.com",
-    "stmp_auth_token": "fqvrcfvlugygdjdc"
+{
+    "stmp_server": "smtp.qq.com",
+    "stmp_port": "587",
+    "stmp_user_name": "2467835131@qq.com",
+    "stmp_auth_token": "fqvrcfvlugygdjdc"
 }

+ 18 - 18
config/pro.yaml

@@ -1,18 +1,18 @@
-mysql:
-  host: 192.168.0.165
-  port: 3306
-  user: test
-  password: testDB_123
-  database: youngmini
-
-redis:
-  host: 139.9.53.143
-  port: 6379
-  auth: younggeeRedis_123
-  database: 1
-
-server:
-  host: 0.0.0.0
-  port: 8400
-  session:
-    ttl: -1 #minute
+mysql:
+  host: 192.168.0.165
+  port: 3306
+  user: test
+  password: testDB_123
+  database: youngmini
+
+redis:
+  host: 139.9.53.143
+  port: 6379
+  auth: younggeeRedis_123
+  database: 1
+
+server:
+  host: 0.0.0.0
+  port: 8400
+  session:
+    ttl: -1 #minute

+ 28 - 28
consts/error_code.go

@@ -1,28 +1,28 @@
-package consts
-
-import "github.com/go-redis/redis/v8"
-
-var RedisNil = redis.Nil
-var errorCodeToastMap = map[int32]string{}
-
-const DefaultToast = ""
-
-const ErrorSuccess int32 = 0
-const ErrorNotLogin int32 = 4001
-const ErrorParamCheck int32 = 5001
-const ErrorInternal int32 = 5001
-
-func init() {
-	errorCodeToastMap[ErrorSuccess] = "请求成功"
-	errorCodeToastMap[ErrorNotLogin] = "请登录后操作"
-	errorCodeToastMap[ErrorParamCheck] = "参数有误"
-	errorCodeToastMap[ErrorInternal] = "请求错误"
-}
-
-func GetErrorToast(errorCode int32) string {
-	toast, contain := errorCodeToastMap[errorCode]
-	if contain {
-		return toast
-	}
-	return "网络错误,请稍后再试"
-}
+package consts
+
+import "github.com/go-redis/redis/v8"
+
+var RedisNil = redis.Nil
+var errorCodeToastMap = map[int32]string{}
+
+const DefaultToast = ""
+
+const ErrorSuccess int32 = 0
+const ErrorNotLogin int32 = 4001
+const ErrorParamCheck int32 = 5001
+const ErrorInternal int32 = 5001
+
+func init() {
+	errorCodeToastMap[ErrorSuccess] = "请求成功"
+	errorCodeToastMap[ErrorNotLogin] = "请登录后操作"
+	errorCodeToastMap[ErrorParamCheck] = "参数有误"
+	errorCodeToastMap[ErrorInternal] = "请求错误"
+}
+
+func GetErrorToast(errorCode int32) string {
+	toast, contain := errorCodeToastMap[errorCode]
+	if contain {
+		return toast
+	}
+	return "网络错误,请稍后再试"
+}

+ 31 - 31
consts/product.go

@@ -1,31 +1,31 @@
-package consts
-
-var projectTypeMap = map[int64]string{
-	1:  "3C及电器",
-	2:  "食品饮料",
-	3:  "服装配饰",
-	4:  "医疗",
-	5:  "房地产",
-	6:  "家居建材",
-	7:  "教育培训",
-	8:  "出行旅游",
-	9:  "游戏",
-	10: "互联网平台",
-	11: "汽车",
-	12: "文体娱乐",
-	13: "影视传媒",
-	14: "线下店铺",
-	15: "软件服务",
-	16: "美妆",
-	17: "母婴宠物",
-	18: "日化",
-	19: "其他",
-}
-
-func GetProjectTypes(projectType int64) string {
-	toast, contain := projectTypeMap[projectType]
-	if contain {
-		return toast
-	}
-	return "未知"
-}
+package consts
+
+var projectTypeMap = map[int64]string{
+	1:  "3C及电器",
+	2:  "食品饮料",
+	3:  "服装配饰",
+	4:  "医疗",
+	5:  "房地产",
+	6:  "家居建材",
+	7:  "教育培训",
+	8:  "出行旅游",
+	9:  "游戏",
+	10: "互联网平台",
+	11: "汽车",
+	12: "文体娱乐",
+	13: "影视传媒",
+	14: "线下店铺",
+	15: "软件服务",
+	16: "美妆",
+	17: "母婴宠物",
+	18: "日化",
+	19: "其他",
+}
+
+func GetProjectTypes(projectType int64) string {
+	toast, contain := projectTypeMap[projectType]
+	if contain {
+		return toast
+	}
+	return "未知"
+}

+ 341 - 341
consts/project.go

@@ -1,341 +1,341 @@
-package consts
-
-var projectStatusMap = map[int64]string{
-	1:  "创建中",
-	2:  "待审核",
-	3:  "审核通过",
-	4:  "招募中",
-	5:  "招募完毕",
-	6:  "待支付",
-	7:  "已支付",
-	8:  "失效",
-	9:  "执行中",
-	10: "已结案",
-}
-
-func GetProjectStatus(status int64) string {
-	toast, contain := projectStatusMap[status]
-	if contain {
-		return toast
-	}
-	return "未知"
-}
-
-var ProjectPlatformMap = map[int64]string{
-	1: "红book",
-	2: "抖音",
-	3: "微博",
-	4: "快手",
-	5: "b站",
-	6: "大众点评",
-	7: "知乎",
-}
-
-var TaskTypeMap = map[int64]string{
-	1: "实体商品寄拍",
-	2: "虚拟产品测评",
-	3: "线下探店打卡",
-	4: "悬赏任务",
-	5: "纯佣带货",
-}
-
-var ContentTypeMap = map[int]string{
-	1: "图文",
-	2: "视频",
-	3: "直播",
-}
-
-var ReasonMap = map[int]string{
-	1: "成团-新用户",
-	2: "成团-老用户",
-	3: "成单-申请成功",
-	4: "成单-结案完毕",
-}
-
-func GetReason(status int) string {
-	toast, contain := ReasonMap[status]
-	if contain {
-		return toast
-	}
-	return "未知"
-}
-
-func GetContentType(status int) string {
-	toast, contain := ContentTypeMap[status]
-	if contain {
-		return toast
-	}
-	return "未知"
-}
-
-func GetTaskType(status int64) string {
-	toast, contain := TaskTypeMap[status]
-	if contain {
-		return toast
-	}
-	return "未知"
-}
-
-func GetProjectPlatform(status int64) string {
-	toast, contain := ProjectPlatformMap[status]
-	if contain {
-		return toast
-	}
-	return "未知"
-}
-
-func GetyoungeeType(status int64) string {
-	toast, contain := ProjectPlatformMap[status]
-	if contain {
-		return toast
-	}
-	return "未知"
-}
-
-func GetTeamStage(status int64) string {
-	toast, contain := ProjectPlatformMap[status]
-	if contain {
-		return toast
-	}
-	return "未知"
-}
-
-func GetPointIncome(status int64) string {
-	toast, contain := ProjectPlatformMap[status]
-	if contain {
-		return toast
-	}
-	return "未知"
-}
-
-func GetMoneyIncome(status int64) string {
-	toast, contain := ProjectPlatformMap[status]
-	if contain {
-		return toast
-	}
-	return "未知"
-}
-
-var ProjectFormMap = map[int64]string{
-	1: "实体商品寄拍",
-	2: "虚拟产品测评",
-	3: "线下探店打卡",
-	4: "素材微原创",
-}
-
-func GetProjectForm(status int64) string {
-	toast, contain := ProjectFormMap[status]
-	if contain {
-		return toast
-	}
-	return "未知"
-}
-
-var ProjectContentTypeMap = map[int64]string{
-	1: "图文",
-	2: "视频",
-}
-
-func GetProjectContentType(status int64) string {
-	toast, contain := ProjectContentTypeMap[status]
-	if contain {
-		return toast
-	}
-	return "未知"
-}
-
-var UserRoleTypeMap = map[string]string{
-	"1": "超级管理员",
-	"2": "普通管理员",
-	"3": "企业用户",
-}
-
-func GetUserRoleType(status string) string {
-	toast, contain := UserRoleTypeMap[status]
-	if contain {
-		return toast
-	}
-	return "未知"
-}
-
-var UserStateTypeMap = map[string]string{
-	"0": "禁用",
-	"1": "正常",
-}
-
-func GetUserStateType(status string) string {
-	toast, contain := UserStateTypeMap[status]
-	if contain {
-		return toast
-	}
-	return "未知"
-}
-
-var CreatorIsBindAccount = map[int]string{
-	0: "否",
-	1: "是",
-}
-
-func GetCreatorIsBindAccountType(status int) string {
-	toast, contain := CreatorIsBindAccount[status]
-	if contain {
-		return toast
-	}
-	return "未知"
-}
-
-var ProjectType = map[int64]string{
-	1: "全流程项目",
-	2: "专项项目",
-}
-
-func GetProjectType(project_type int64) string {
-	toast, contain := ProjectType[project_type]
-	if contain {
-		return toast
-	}
-	return "未知"
-}
-
-var FeeForm = map[int64]string{
-	1: "产品置换",
-	2: "固定稿费",
-	3: "自报价",
-}
-
-func GetFeeForm(fee_form int64) string {
-	toast, contain := FeeForm[fee_form]
-	if contain {
-		return toast
-	}
-	return "未知"
-}
-
-var TaskStage = map[int]string{
-	1:  "已报名",
-	2:  "申请成功",
-	3:  "申请失败",
-	4:  "待发货",
-	5:  "已发货",
-	6:  "已签收",
-	7:  "待传脚本",
-	8:  "脚本待审",
-	9:  "待传初稿",
-	10: "初稿待审",
-	11: "待传链接",
-	12: "链接待审",
-	13: "待传数据",
-	14: "数据待审",
-	15: "已结案",
-	16: "解约",
-}
-
-func GetTaskStage(task_stage int) string {
-	toast, contain := TaskStage[task_stage]
-	if contain {
-		return toast
-	}
-	return "未知"
-}
-
-var BreakType = map[int]string{
-	1: "未传脚本",
-	2: "未传初稿",
-	3: "未传链接",
-	4: "未传数据",
-}
-
-func GetBreakType(breakType int) string {
-	toast, contain := BreakType[breakType]
-	if contain {
-		return toast
-	}
-	return "未知"
-}
-
-var HandleResult = map[int]string{
-	4: "驳回",
-	5: "解约",
-}
-
-func GetHandleResult(handleResult int) string {
-	toast, contain := HandleResult[handleResult]
-	if contain {
-		return toast
-	}
-	return "未知"
-}
-
-var RechargeMethod = map[int64]string{
-	1: "对公转账",
-	2: "支付宝",
-	3: "微信",
-}
-
-func GetRechargeMethod(method int64) string {
-	toast, contain := RechargeMethod[method]
-	if contain {
-		return toast
-	}
-	return "未知"
-}
-
-var KD100Flags = map[string]string{
-	"圆通":     "yuantong",
-	"韵达":     "yunda",
-	"申通":     "shentong",
-	"中通":     "zhongtong",
-	"顺丰":     "shunfeng",
-	"极兔":     "jtexpress",
-	"邮政":     "youzhengguonei",
-	"EMS":    "ems",
-	"京东":     "jd",
-	"邮政标准快递": "youzhengbk",
-	"丰网速运":   "fengwang",
-	"德邦快递":   "debangkuaidi",
-	"德邦":     "debangwuliu",
-	"丹鸟":     "danniao",
-	"飞豹快递":   "feibaokuaidi",
-	"中通快运":   "zhongtongkuaiyun",
-	"安能快运":   "annengwuliu",
-	"百世快递":   "huitongkuaidi",
-	"安得物流":   "annto",
-	"跨越速运":   "kuayue",
-	"特急送":    "lntjs",
-	"宅急送":    "zhaijisong",
-	"other":  "其它快递",
-}
-
-func GetKD(Kd string) string {
-	toast, contain := KD100Flags[Kd]
-	if contain {
-		return toast
-	}
-	return "未知"
-}
-
-var TaskModel = map[int]string{
-	1: "悬赏任务",
-	2: "纯佣带货",
-}
-
-func GetTaskModel(task int) string {
-	toast, contain := TaskModel[task]
-	if contain {
-		return toast
-	}
-	return "未知"
-}
-
-var SampleModel = map[int]string{
-	1: "免费领样",
-	2: "垫付领样",
-}
-
-func GetSampleModel(sample int) string {
-	toast, contain := SampleModel[sample]
-	if contain {
-		return toast
-	}
-	return "未知"
-}
+package consts
+
+var projectStatusMap = map[int64]string{
+	1:  "创建中",
+	2:  "待审核",
+	3:  "审核通过",
+	4:  "招募中",
+	5:  "招募完毕",
+	6:  "待支付",
+	7:  "已支付",
+	8:  "失效",
+	9:  "执行中",
+	10: "已结案",
+}
+
+func GetProjectStatus(status int64) string {
+	toast, contain := projectStatusMap[status]
+	if contain {
+		return toast
+	}
+	return "未知"
+}
+
+var ProjectPlatformMap = map[int64]string{
+	1: "红book",
+	2: "抖音",
+	3: "微博",
+	4: "快手",
+	5: "b站",
+	6: "大众点评",
+	7: "知乎",
+}
+
+var TaskTypeMap = map[int64]string{
+	1: "实体商品寄拍",
+	2: "虚拟产品测评",
+	3: "线下探店打卡",
+	4: "悬赏任务",
+	5: "纯佣带货",
+}
+
+var ContentTypeMap = map[int]string{
+	1: "图文",
+	2: "视频",
+	3: "直播",
+}
+
+var ReasonMap = map[int]string{
+	1: "成团-新用户",
+	2: "成团-老用户",
+	3: "成单-申请成功",
+	4: "成单-结案完毕",
+}
+
+func GetReason(status int) string {
+	toast, contain := ReasonMap[status]
+	if contain {
+		return toast
+	}
+	return "未知"
+}
+
+func GetContentType(status int) string {
+	toast, contain := ContentTypeMap[status]
+	if contain {
+		return toast
+	}
+	return "未知"
+}
+
+func GetTaskType(status int64) string {
+	toast, contain := TaskTypeMap[status]
+	if contain {
+		return toast
+	}
+	return "未知"
+}
+
+func GetProjectPlatform(status int64) string {
+	toast, contain := ProjectPlatformMap[status]
+	if contain {
+		return toast
+	}
+	return "未知"
+}
+
+func GetyoungeeType(status int64) string {
+	toast, contain := ProjectPlatformMap[status]
+	if contain {
+		return toast
+	}
+	return "未知"
+}
+
+func GetTeamStage(status int64) string {
+	toast, contain := ProjectPlatformMap[status]
+	if contain {
+		return toast
+	}
+	return "未知"
+}
+
+func GetPointIncome(status int64) string {
+	toast, contain := ProjectPlatformMap[status]
+	if contain {
+		return toast
+	}
+	return "未知"
+}
+
+func GetMoneyIncome(status int64) string {
+	toast, contain := ProjectPlatformMap[status]
+	if contain {
+		return toast
+	}
+	return "未知"
+}
+
+var ProjectFormMap = map[int64]string{
+	1: "实体商品寄拍",
+	2: "虚拟产品测评",
+	3: "线下探店打卡",
+	4: "素材微原创",
+}
+
+func GetProjectForm(status int64) string {
+	toast, contain := ProjectFormMap[status]
+	if contain {
+		return toast
+	}
+	return "未知"
+}
+
+var ProjectContentTypeMap = map[int64]string{
+	1: "图文",
+	2: "视频",
+}
+
+func GetProjectContentType(status int64) string {
+	toast, contain := ProjectContentTypeMap[status]
+	if contain {
+		return toast
+	}
+	return "未知"
+}
+
+var UserRoleTypeMap = map[string]string{
+	"1": "超级管理员",
+	"2": "普通管理员",
+	"3": "企业用户",
+}
+
+func GetUserRoleType(status string) string {
+	toast, contain := UserRoleTypeMap[status]
+	if contain {
+		return toast
+	}
+	return "未知"
+}
+
+var UserStateTypeMap = map[string]string{
+	"0": "禁用",
+	"1": "正常",
+}
+
+func GetUserStateType(status string) string {
+	toast, contain := UserStateTypeMap[status]
+	if contain {
+		return toast
+	}
+	return "未知"
+}
+
+var CreatorIsBindAccount = map[int]string{
+	0: "否",
+	1: "是",
+}
+
+func GetCreatorIsBindAccountType(status int) string {
+	toast, contain := CreatorIsBindAccount[status]
+	if contain {
+		return toast
+	}
+	return "未知"
+}
+
+var ProjectType = map[int64]string{
+	1: "全流程项目",
+	2: "专项项目",
+}
+
+func GetProjectType(project_type int64) string {
+	toast, contain := ProjectType[project_type]
+	if contain {
+		return toast
+	}
+	return "未知"
+}
+
+var FeeForm = map[int64]string{
+	1: "产品置换",
+	2: "固定稿费",
+	3: "自报价",
+}
+
+func GetFeeForm(fee_form int64) string {
+	toast, contain := FeeForm[fee_form]
+	if contain {
+		return toast
+	}
+	return "未知"
+}
+
+var TaskStage = map[int]string{
+	1:  "已报名",
+	2:  "申请成功",
+	3:  "申请失败",
+	4:  "待发货",
+	5:  "已发货",
+	6:  "已签收",
+	7:  "待传脚本",
+	8:  "脚本待审",
+	9:  "待传初稿",
+	10: "初稿待审",
+	11: "待传链接",
+	12: "链接待审",
+	13: "待传数据",
+	14: "数据待审",
+	15: "已结案",
+	16: "解约",
+}
+
+func GetTaskStage(task_stage int) string {
+	toast, contain := TaskStage[task_stage]
+	if contain {
+		return toast
+	}
+	return "未知"
+}
+
+var BreakType = map[int]string{
+	1: "未传脚本",
+	2: "未传初稿",
+	3: "未传链接",
+	4: "未传数据",
+}
+
+func GetBreakType(breakType int) string {
+	toast, contain := BreakType[breakType]
+	if contain {
+		return toast
+	}
+	return "未知"
+}
+
+var HandleResult = map[int]string{
+	4: "驳回",
+	5: "解约",
+}
+
+func GetHandleResult(handleResult int) string {
+	toast, contain := HandleResult[handleResult]
+	if contain {
+		return toast
+	}
+	return "未知"
+}
+
+var RechargeMethod = map[int64]string{
+	1: "对公转账",
+	2: "支付宝",
+	3: "微信",
+}
+
+func GetRechargeMethod(method int64) string {
+	toast, contain := RechargeMethod[method]
+	if contain {
+		return toast
+	}
+	return "未知"
+}
+
+var KD100Flags = map[string]string{
+	"圆通":     "yuantong",
+	"韵达":     "yunda",
+	"申通":     "shentong",
+	"中通":     "zhongtong",
+	"顺丰":     "shunfeng",
+	"极兔":     "jtexpress",
+	"邮政":     "youzhengguonei",
+	"EMS":    "ems",
+	"京东":     "jd",
+	"邮政标准快递": "youzhengbk",
+	"丰网速运":   "fengwang",
+	"德邦快递":   "debangkuaidi",
+	"德邦":     "debangwuliu",
+	"丹鸟":     "danniao",
+	"飞豹快递":   "feibaokuaidi",
+	"中通快运":   "zhongtongkuaiyun",
+	"安能快运":   "annengwuliu",
+	"百世快递":   "huitongkuaidi",
+	"安得物流":   "annto",
+	"跨越速运":   "kuayue",
+	"特急送":    "lntjs",
+	"宅急送":    "zhaijisong",
+	"other":  "其它快递",
+}
+
+func GetKD(Kd string) string {
+	toast, contain := KD100Flags[Kd]
+	if contain {
+		return toast
+	}
+	return "未知"
+}
+
+var TaskModel = map[int]string{
+	1: "悬赏任务",
+	2: "纯佣带货",
+}
+
+func GetTaskModel(task int) string {
+	toast, contain := TaskModel[task]
+	if contain {
+		return toast
+	}
+	return "未知"
+}
+
+var SampleModel = map[int]string{
+	1: "免费领样",
+	2: "垫付领样",
+}
+
+func GetSampleModel(sample int) string {
+	toast, contain := SampleModel[sample]
+	if contain {
+		return toast
+	}
+	return "未知"
+}

+ 7 - 7
consts/session.go

@@ -1,7 +1,7 @@
-package consts
-
-const SessionAuthSchema = "session_auth"
-const SessionRedisPrefix = "m_user:"
-const AuthSalt = "fa2tg4y"
-const BRole = "1"
-const BRole2 = "2"
+package consts
+
+const SessionAuthSchema = "session_auth"
+const SessionRedisPrefix = "m_user:"
+const AuthSalt = "fa2tg4y"
+const BRole = "1"
+const BRole2 = "2"

+ 137 - 137
db/Settle.go

@@ -1,137 +1,137 @@
-package db
-
-import (
-	"context"
-	"fmt"
-	"reflect"
-	"strings"
-
-	"youngee_m_api/model/common_model"
-	"youngee_m_api/model/gorm_model"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/pack"
-	"youngee_m_api/util"
-
-	"github.com/caixw/lib.go/conv"
-	"github.com/sirupsen/logrus"
-)
-
-// GetSpecialTaskSettleList 专项任务-查询上传链接的task list
-func GetSpecialTaskSettleList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.SpecialTaskSettleInfo, int64, error) {
-	db := GetReadDB(ctx)
-	// 查询Task表信息
-	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
-	// 根据Project条件过滤
-	conditionType := reflect.TypeOf(conditions).Elem()
-	conditionValue := reflect.ValueOf(conditions).Elem()
-	var platform_nickname string = ""
-	for i := 0; i < conditionType.NumField(); i++ {
-		field := conditionType.Field(i)
-		tag := field.Tag.Get("condition")
-		value := conditionValue.FieldByName(field.Name)
-
-		if tag == "settle_status" {
-			fmt.Printf("Data %+v", value.Interface() == int64(0))
-			if value.Interface() == int64(0) {
-				db = db.Where("task_stage = 15 and settle_status = 1")
-			} else {
-				db = db.Where("task_stage = 15 and settle_status = 2")
-			}
-			continue
-		} else if !util.IsBlank(value) {
-			if tag == "platform_nickname" {
-				platform_nickname = fmt.Sprintf("%v", value.Interface())
-				continue
-			} else if tag == "project_id" {
-				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-			}
-		}
-	}
-	var taskInfos []gorm_model.YoungeeTaskInfo
-	db = db.Model(gorm_model.YoungeeTaskInfo{})
-	// 查询总数
-	var totalTask int64
-	if err := db.Count(&totalTask).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetTaskSettleList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	db.Order("task_id").Find(&taskInfos)
-
-	// 查询任务id
-	var taskIds []string
-	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
-	for _, taskInfo := range taskInfos {
-		taskIds = append(taskIds, taskInfo.TaskId)
-		taskMap[taskInfo.TaskId] = taskInfo
-	}
-
-	// 查询链接
-	db1 := GetReadDB(ctx)
-	// db1 = db1.Debug().Model(gorm_model.YounggeeDataInfo{})
-	var LinkInfos []gorm_model.YounggeeLinkInfo
-	db1 = db1.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id IN ? AND is_submit= 1 AND is_ok = 1", taskIds)
-	err := db1.Find(&LinkInfos).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	LinkMap := make(map[string]gorm_model.YounggeeLinkInfo)
-	for _, LinkInfo := range LinkInfos {
-		LinkMap[LinkInfo.TaskID] = LinkInfo
-	}
-
-	// 查询数据
-	db2 := GetReadDB(ctx)
-	var DataInfos []gorm_model.YounggeeDataInfo
-	db2 = db2.Model(gorm_model.YounggeeDataInfo{}).Where("task_id IN ? AND is_submit= 1 AND is_ok = 1", taskIds)
-	err = db2.Find(&DataInfos).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	DataMap := make(map[string]gorm_model.YounggeeDataInfo)
-	for _, DataInfo := range DataInfos {
-		DataMap[DataInfo.TaskID] = DataInfo
-	}
-	// 查询总数
-	var totalData int64
-	if err := db2.Count(&totalData).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-
-	// 查询该页数据
-	limit := pageSize
-	offset := pageSize * pageNum // assert pageNum start with 0
-	err = db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetTaskSettleList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-
-	var TaskSettles []*http_model.SpecialTaskSettle
-	var taskSettles []*http_model.SpecialTaskSettleInfo
-	var newTaskSettles []*http_model.SpecialTaskSettleInfo
-	for _, taskId := range taskIds {
-		TaskSettle := new(http_model.SpecialTaskSettle)
-		TaskSettle.Talent = taskMap[taskId]
-		TaskSettle.Data = DataMap[taskId]
-		TaskSettle.Link = LinkMap[taskId]
-		TaskSettles = append(TaskSettles, TaskSettle)
-	}
-
-	taskSettles = pack.SpecialTaskSettleToTaskInfo(TaskSettles)
-
-	for _, v := range taskSettles {
-		if platform_nickname == "" {
-			newTaskSettles = append(newTaskSettles, v)
-		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
-			newTaskSettles = append(newTaskSettles, v)
-		} else if strings.Contains(conv.MustString(v.TaskID, ""), platform_nickname) {
-			newTaskSettles = append(newTaskSettles, v)
-		} else {
-			totalTask--
-		}
-	}
-	return newTaskSettles, totalTask, nil
-}
+package db
+
+import (
+	"context"
+	"fmt"
+	"reflect"
+	"strings"
+
+	"youngee_m_api/model/common_model"
+	"youngee_m_api/model/gorm_model"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/pack"
+	"youngee_m_api/util"
+
+	"github.com/caixw/lib.go/conv"
+	"github.com/sirupsen/logrus"
+)
+
+// GetSpecialTaskSettleList 专项任务-查询上传链接的task list
+func GetSpecialTaskSettleList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.SpecialTaskSettleInfo, int64, error) {
+	db := GetReadDB(ctx)
+	// 查询Task表信息
+	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
+	// 根据Project条件过滤
+	conditionType := reflect.TypeOf(conditions).Elem()
+	conditionValue := reflect.ValueOf(conditions).Elem()
+	var platform_nickname string = ""
+	for i := 0; i < conditionType.NumField(); i++ {
+		field := conditionType.Field(i)
+		tag := field.Tag.Get("condition")
+		value := conditionValue.FieldByName(field.Name)
+
+		if tag == "settle_status" {
+			fmt.Printf("Data %+v", value.Interface() == int64(0))
+			if value.Interface() == int64(0) {
+				db = db.Where("task_stage = 15 and settle_status = 1")
+			} else {
+				db = db.Where("task_stage = 15 and settle_status = 2")
+			}
+			continue
+		} else if !util.IsBlank(value) {
+			if tag == "platform_nickname" {
+				platform_nickname = fmt.Sprintf("%v", value.Interface())
+				continue
+			} else if tag == "project_id" {
+				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+			}
+		}
+	}
+	var taskInfos []gorm_model.YoungeeTaskInfo
+	db = db.Model(gorm_model.YoungeeTaskInfo{})
+	// 查询总数
+	var totalTask int64
+	if err := db.Count(&totalTask).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetTaskSettleList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	db.Order("task_id").Find(&taskInfos)
+
+	// 查询任务id
+	var taskIds []string
+	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
+	for _, taskInfo := range taskInfos {
+		taskIds = append(taskIds, taskInfo.TaskId)
+		taskMap[taskInfo.TaskId] = taskInfo
+	}
+
+	// 查询链接
+	db1 := GetReadDB(ctx)
+	// db1 = db1.Debug().Model(gorm_model.YounggeeDataInfo{})
+	var LinkInfos []gorm_model.YounggeeLinkInfo
+	db1 = db1.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id IN ? AND is_submit= 1 AND is_ok = 1", taskIds)
+	err := db1.Find(&LinkInfos).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	LinkMap := make(map[string]gorm_model.YounggeeLinkInfo)
+	for _, LinkInfo := range LinkInfos {
+		LinkMap[LinkInfo.TaskID] = LinkInfo
+	}
+
+	// 查询数据
+	db2 := GetReadDB(ctx)
+	var DataInfos []gorm_model.YounggeeDataInfo
+	db2 = db2.Model(gorm_model.YounggeeDataInfo{}).Where("task_id IN ? AND is_submit= 1 AND is_ok = 1", taskIds)
+	err = db2.Find(&DataInfos).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	DataMap := make(map[string]gorm_model.YounggeeDataInfo)
+	for _, DataInfo := range DataInfos {
+		DataMap[DataInfo.TaskID] = DataInfo
+	}
+	// 查询总数
+	var totalData int64
+	if err := db2.Count(&totalData).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+
+	// 查询该页数据
+	limit := pageSize
+	offset := pageSize * pageNum // assert pageNum start with 0
+	err = db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetTaskSettleList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+
+	var TaskSettles []*http_model.SpecialTaskSettle
+	var taskSettles []*http_model.SpecialTaskSettleInfo
+	var newTaskSettles []*http_model.SpecialTaskSettleInfo
+	for _, taskId := range taskIds {
+		TaskSettle := new(http_model.SpecialTaskSettle)
+		TaskSettle.Talent = taskMap[taskId]
+		TaskSettle.Data = DataMap[taskId]
+		TaskSettle.Link = LinkMap[taskId]
+		TaskSettles = append(TaskSettles, TaskSettle)
+	}
+
+	taskSettles = pack.SpecialTaskSettleToTaskInfo(TaskSettles)
+
+	for _, v := range taskSettles {
+		if platform_nickname == "" {
+			newTaskSettles = append(newTaskSettles, v)
+		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
+			newTaskSettles = append(newTaskSettles, v)
+		} else if strings.Contains(conv.MustString(v.TaskID, ""), platform_nickname) {
+			newTaskSettles = append(newTaskSettles, v)
+		} else {
+			totalTask--
+		}
+	}
+	return newTaskSettles, totalTask, nil
+}

+ 21 - 21
db/auto_default.go

@@ -1,21 +1,21 @@
-package db
-
-import (
-	"context"
-	log "github.com/sirupsen/logrus"
-	"youngee_m_api/model/gorm_model"
-)
-
-func GetLastAutoDefaultID() (int, error) {
-	db := GetReadDB(context.Background())
-	// 查找最后一个
-	LastDefault := gorm_model.InfoAutoDefaultHandle{}
-	result := db.Last(&LastDefault)
-	err := result.Error
-	if err != nil {
-		log.Println("DB GetLastAutoDefaultID:", err)
-		return 0, err
-	}
-	//fmt.Printf("auto task %+v %+v", result, LastTask)
-	return LastDefault.AutoDefaultID, nil
-}
+package db
+
+import (
+	"context"
+	log "github.com/sirupsen/logrus"
+	"youngee_m_api/model/gorm_model"
+)
+
+func GetLastAutoDefaultID() (int, error) {
+	db := GetReadDB(context.Background())
+	// 查找最后一个
+	LastDefault := gorm_model.InfoAutoDefaultHandle{}
+	result := db.Last(&LastDefault)
+	err := result.Error
+	if err != nil {
+		log.Println("DB GetLastAutoDefaultID:", err)
+		return 0, err
+	}
+	//fmt.Printf("auto task %+v %+v", result, LastTask)
+	return LastDefault.AutoDefaultID, nil
+}

+ 22 - 22
db/auto_task.go

@@ -1,22 +1,22 @@
-package db
-
-import (
-	"context"
-	"youngee_m_api/model/gorm_model"
-
-	log "github.com/sirupsen/logrus"
-)
-
-func GetLastAutoTaskID() (int32, error) {
-	db := GetReadDB(context.Background())
-	// 查找最后一个
-	LastTask := gorm_model.InfoAutoTask{}
-	result := db.Last(&LastTask)
-	err := result.Error
-	if err != nil {
-		log.Println("DB GetLastAutoTaskID:", err)
-		return 0, err
-	}
-	//fmt.Printf("auto task %+v %+v", result, LastTask)
-	return LastTask.AutoTaskID, nil
-}
+package db
+
+import (
+	"context"
+	"youngee_m_api/model/gorm_model"
+
+	log "github.com/sirupsen/logrus"
+)
+
+func GetLastAutoTaskID() (int32, error) {
+	db := GetReadDB(context.Background())
+	// 查找最后一个
+	LastTask := gorm_model.InfoAutoTask{}
+	result := db.Last(&LastTask)
+	err := result.Error
+	if err != nil {
+		log.Println("DB GetLastAutoTaskID:", err)
+		return 0, err
+	}
+	//fmt.Printf("auto task %+v %+v", result, LastTask)
+	return LastTask.AutoTaskID, nil
+}

+ 320 - 320
db/data.go

@@ -1,320 +1,320 @@
-package db
-
-import (
-	"context"
-	"fmt"
-	"github.com/caixw/lib.go/conv"
-	"github.com/sirupsen/logrus"
-	"reflect"
-	"strings"
-	"time"
-	"youngee_m_api/model/common_model"
-	"youngee_m_api/model/gorm_model"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/pack"
-	"youngee_m_api/util"
-)
-
-// GetTaskDataList 查询上传链接的task list
-func GetTaskDataList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskDataInfo, int64, error) {
-	db := GetReadDB(ctx)
-	// 查询Task表信息
-	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
-	// 根据Project条件过滤
-	conditionType := reflect.TypeOf(conditions).Elem()
-	conditionValue := reflect.ValueOf(conditions).Elem()
-	var platform_nickname string = ""
-	for i := 0; i < conditionType.NumField(); i++ {
-		field := conditionType.Field(i)
-		tag := field.Tag.Get("condition")
-		value := conditionValue.FieldByName(field.Name)
-
-		if tag == "data_status" {
-			fmt.Printf("Data %+v", value.Interface() == int64(0))
-			if value.Interface() == int64(0) {
-				db = db.Where("task_stage = 14")
-			} else {
-				db = db.Where("task_stage > 14 and task_stage <> 16")
-			}
-			continue
-		} else if !util.IsBlank(value) {
-			if tag == "platform_nickname" {
-				platform_nickname = fmt.Sprintf("%v", value.Interface())
-				continue
-			} else if tag == "project_id" || tag == "strategy_id" {
-				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-			}
-		}
-	}
-	var taskInfos []gorm_model.YoungeeTaskInfo
-	db = db.Model(gorm_model.YoungeeTaskInfo{})
-	// 查询总数
-	var totalTask int64
-	if err := db.Count(&totalTask).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetTaskDataList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	db.Order("task_id").Find(&taskInfos)
-
-	// 查询任务id
-	var taskIds []string
-	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
-	for _, taskInfo := range taskInfos {
-		taskIds = append(taskIds, taskInfo.TaskId)
-		taskMap[taskInfo.TaskId] = taskInfo
-	}
-
-	// 查询链接
-	db1 := GetReadDB(ctx)
-	// db1 = db1.Debug().Model(gorm_model.YounggeeDataInfo{})
-	var LinkInfos []gorm_model.YounggeeLinkInfo
-	db1 = db1.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id IN ? AND is_submit= 1 AND is_ok = 1", taskIds)
-	err := db1.Find(&LinkInfos).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	LinkMap := make(map[string]gorm_model.YounggeeLinkInfo)
-	for _, LinkInfo := range LinkInfos {
-		LinkMap[LinkInfo.TaskID] = LinkInfo
-	}
-
-	db2 := GetReadDB(ctx)
-	// db2 = db1.Debug().Model(gorm_model.YounggeeDataInfo{})
-
-	var DataInfos []gorm_model.YounggeeDataInfo
-	db2 = db2.Model(gorm_model.YounggeeDataInfo{}).Where("task_id IN ? AND is_submit = 1", taskIds)
-	fmt.Printf("conditions %+v", conditions)
-	if conditions.DataStatus == int64(0) {
-		db2 = db2.Where("is_review = 0")
-	} else {
-		db2 = db2.Where("is_ok = 1")
-	}
-	err = db2.Find(&DataInfos).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	DataMap := make(map[string]gorm_model.YounggeeDataInfo)
-	for _, DataInfo := range DataInfos {
-		DataMap[DataInfo.TaskID] = DataInfo
-	}
-	// 查询总数
-	var totalData int64
-	if err := db2.Count(&totalData).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	var misNum int64
-	if totalData > totalTask {
-		misNum = totalData - totalTask
-	} else {
-		misNum = totalTask - totalData
-	}
-	logrus.Println("totalData,totalTalent,misNum:", totalData, totalTask, misNum)
-
-	// 查询该页数据
-	limit := pageSize + misNum
-	offset := pageSize * pageNum // assert pageNum start with 0
-	err = db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetTaskDataList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-
-	var TaskDatas []*http_model.TaskData
-	var taskDatas []*http_model.TaskDataInfo
-	var newTaskDatas []*http_model.TaskDataInfo
-	for _, taskId := range taskIds {
-		TaskData := new(http_model.TaskData)
-		TaskData.Talent = taskMap[taskId]
-		TaskData.Data = DataMap[taskId]
-		TaskData.Link = LinkMap[taskId]
-		TaskDatas = append(TaskDatas, TaskData)
-	}
-
-	taskDatas = pack.TaskDataToTaskInfo(TaskDatas)
-
-	for _, v := range taskDatas {
-		if platform_nickname == "" {
-			newTaskDatas = append(newTaskDatas, v)
-		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
-			newTaskDatas = append(newTaskDatas, v)
-		} else if strings.Contains(conv.MustString(v.TaskID, ""), platform_nickname) {
-			newTaskDatas = append(newTaskDatas, v)
-		} else {
-			totalTask--
-		}
-	}
-	// return fulltaskData, total, nil
-	return newTaskDatas, totalTask, nil
-}
-
-// DataOpinion 提交意见
-func DataOpinion(ctx context.Context, TaskID string, ReviseOpinion string) error {
-	db := GetReadDB(ctx)
-	err := db.Model(gorm_model.YounggeeDataInfo{}).Where("task_id = ? and is_review = 0", TaskID).Updates(map[string]interface{}{"revise_opinion": ReviseOpinion, "reject_at": time.Now(), "is_review": 1}).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[Data db] Update YounggeeDataInfo error,err:%+v", err)
-		return err
-	}
-	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeTaskInfo{DataStatus: 3}).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[Data db] Update YoungeeTaskInfo error,err:%+v", err)
-		return err
-	}
-	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeTaskInfo{TaskStage: 13}).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[Data db] Update YoungeeTaskInfo error,err:%+v", err)
-		return err
-	}
-	return nil
-}
-
-// AcceptData 同意数据-结案
-func AcceptData(ctx context.Context, TaskIDs []string) error {
-	db := GetReadDB(ctx)
-	err := db.Model(gorm_model.YounggeeDataInfo{}).Where("task_id in ?  and is_review = 0", TaskIDs).Updates(map[string]interface{}{"is_ok": 1, "is_review": 1, "agree_at": time.Now()}).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[Data db] Update YounggeeDataInfo error,err:%+v", err)
-		return err
-	}
-	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{DataStatus: 5, TaskStage: 15, CompleteStatus: 2}).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[Data db] Update YoungeeTaskInfo error,err:%+v", err)
-		return err
-	}
-	return nil
-}
-
-// GetSpecialTaskDataList 专项任务-查询上传链接的task list
-func GetSpecialTaskDataList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.SpecialTaskDataInfo, int64, error) {
-	db := GetReadDB(ctx)
-	// 查询Task表信息
-	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
-	// 根据Project条件过滤
-	conditionType := reflect.TypeOf(conditions).Elem()
-	conditionValue := reflect.ValueOf(conditions).Elem()
-	var platform_nickname string = ""
-	for i := 0; i < conditionType.NumField(); i++ {
-		field := conditionType.Field(i)
-		tag := field.Tag.Get("condition")
-		value := conditionValue.FieldByName(field.Name)
-
-		if tag == "data_status" {
-			fmt.Printf("Data %+v", value.Interface() == int64(0))
-			if value.Interface() == int64(0) {
-				db = db.Where("task_stage = 14")
-			} else {
-				db = db.Where("task_stage > 14 and task_stage <> 16")
-			}
-			continue
-		} else if !util.IsBlank(value) {
-			if tag == "platform_nickname" {
-				platform_nickname = fmt.Sprintf("%v", value.Interface())
-				continue
-			} else if tag == "project_id" {
-				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-			}
-		}
-	}
-	var taskInfos []gorm_model.YoungeeTaskInfo
-	db = db.Model(gorm_model.YoungeeTaskInfo{})
-	// 查询总数
-	var totalTask int64
-	if err := db.Count(&totalTask).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetTaskDataList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	db.Order("task_id").Find(&taskInfos)
-
-	// 查询任务id
-	var taskIds []string
-	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
-	for _, taskInfo := range taskInfos {
-		taskIds = append(taskIds, taskInfo.TaskId)
-		taskMap[taskInfo.TaskId] = taskInfo
-	}
-
-	// 查询链接
-	db1 := GetReadDB(ctx)
-	// db1 = db1.Debug().Model(gorm_model.YounggeeDataInfo{})
-	var LinkInfos []gorm_model.YounggeeLinkInfo
-	db1 = db1.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id IN ? AND is_submit= 1 AND is_ok = 1", taskIds)
-	err := db1.Find(&LinkInfos).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	LinkMap := make(map[string]gorm_model.YounggeeLinkInfo)
-	for _, LinkInfo := range LinkInfos {
-		LinkMap[LinkInfo.TaskID] = LinkInfo
-	}
-
-	db2 := GetReadDB(ctx)
-	var DataInfos []gorm_model.YounggeeDataInfo
-	db2 = db2.Model(gorm_model.YounggeeDataInfo{}).Where("task_id IN ? AND is_submit = 1", taskIds)
-	if conditions.DataStatus == int64(0) {
-		db2 = db2.Where("is_review = 0")
-	} else {
-		db2 = db2.Where("is_ok = 1")
-	}
-	err = db2.Find(&DataInfos).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	DataMap := make(map[string]gorm_model.YounggeeDataInfo)
-	for _, DataInfo := range DataInfos {
-		DataMap[DataInfo.TaskID] = DataInfo
-	}
-	// 查询总数
-	var totalData int64
-	if err := db2.Count(&totalData).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	var misNum int64
-	if totalData > totalTask {
-		misNum = totalData - totalTask
-	} else {
-		misNum = totalTask - totalData
-	}
-	logrus.Println("totalData,totalTalent,misNum:", totalData, totalTask, misNum)
-
-	// 查询该页数据
-	limit := pageSize + misNum
-	offset := pageSize * pageNum // assert pageNum start with 0
-	err = db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetTaskDataList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-
-	var TaskDatas []*http_model.SpecialTaskData
-	var taskDatas []*http_model.SpecialTaskDataInfo
-	var newTaskDatas []*http_model.SpecialTaskDataInfo
-	for _, taskId := range taskIds {
-		TaskData := new(http_model.SpecialTaskData)
-		TaskData.Talent = taskMap[taskId]
-		TaskData.Data = DataMap[taskId]
-		TaskData.Link = LinkMap[taskId]
-		TaskDatas = append(TaskDatas, TaskData)
-	}
-
-	taskDatas = pack.SpecialTaskDataToTaskInfo(TaskDatas)
-
-	for _, v := range taskDatas {
-		if platform_nickname == "" {
-			newTaskDatas = append(newTaskDatas, v)
-		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
-			newTaskDatas = append(newTaskDatas, v)
-		} else if strings.Contains(conv.MustString(v.TaskID, ""), platform_nickname) {
-			newTaskDatas = append(newTaskDatas, v)
-		} else {
-			totalTask--
-		}
-	}
-	// return fulltaskData, total, nil
-	return newTaskDatas, totalTask, nil
-}
+package db
+
+import (
+	"context"
+	"fmt"
+	"github.com/caixw/lib.go/conv"
+	"github.com/sirupsen/logrus"
+	"reflect"
+	"strings"
+	"time"
+	"youngee_m_api/model/common_model"
+	"youngee_m_api/model/gorm_model"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/pack"
+	"youngee_m_api/util"
+)
+
+// GetTaskDataList 查询上传链接的task list
+func GetTaskDataList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskDataInfo, int64, error) {
+	db := GetReadDB(ctx)
+	// 查询Task表信息
+	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
+	// 根据Project条件过滤
+	conditionType := reflect.TypeOf(conditions).Elem()
+	conditionValue := reflect.ValueOf(conditions).Elem()
+	var platform_nickname string = ""
+	for i := 0; i < conditionType.NumField(); i++ {
+		field := conditionType.Field(i)
+		tag := field.Tag.Get("condition")
+		value := conditionValue.FieldByName(field.Name)
+
+		if tag == "data_status" {
+			fmt.Printf("Data %+v", value.Interface() == int64(0))
+			if value.Interface() == int64(0) {
+				db = db.Where("task_stage = 14")
+			} else {
+				db = db.Where("task_stage > 14 and task_stage <> 16")
+			}
+			continue
+		} else if !util.IsBlank(value) {
+			if tag == "platform_nickname" {
+				platform_nickname = fmt.Sprintf("%v", value.Interface())
+				continue
+			} else if tag == "project_id" || tag == "strategy_id" {
+				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+			}
+		}
+	}
+	var taskInfos []gorm_model.YoungeeTaskInfo
+	db = db.Model(gorm_model.YoungeeTaskInfo{})
+	// 查询总数
+	var totalTask int64
+	if err := db.Count(&totalTask).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetTaskDataList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	db.Order("task_id").Find(&taskInfos)
+
+	// 查询任务id
+	var taskIds []string
+	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
+	for _, taskInfo := range taskInfos {
+		taskIds = append(taskIds, taskInfo.TaskId)
+		taskMap[taskInfo.TaskId] = taskInfo
+	}
+
+	// 查询链接
+	db1 := GetReadDB(ctx)
+	// db1 = db1.Debug().Model(gorm_model.YounggeeDataInfo{})
+	var LinkInfos []gorm_model.YounggeeLinkInfo
+	db1 = db1.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id IN ? AND is_submit= 1 AND is_ok = 1", taskIds)
+	err := db1.Find(&LinkInfos).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	LinkMap := make(map[string]gorm_model.YounggeeLinkInfo)
+	for _, LinkInfo := range LinkInfos {
+		LinkMap[LinkInfo.TaskID] = LinkInfo
+	}
+
+	db2 := GetReadDB(ctx)
+	// db2 = db1.Debug().Model(gorm_model.YounggeeDataInfo{})
+
+	var DataInfos []gorm_model.YounggeeDataInfo
+	db2 = db2.Model(gorm_model.YounggeeDataInfo{}).Where("task_id IN ? AND is_submit = 1", taskIds)
+	fmt.Printf("conditions %+v", conditions)
+	if conditions.DataStatus == int64(0) {
+		db2 = db2.Where("is_review = 0")
+	} else {
+		db2 = db2.Where("is_ok = 1")
+	}
+	err = db2.Find(&DataInfos).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	DataMap := make(map[string]gorm_model.YounggeeDataInfo)
+	for _, DataInfo := range DataInfos {
+		DataMap[DataInfo.TaskID] = DataInfo
+	}
+	// 查询总数
+	var totalData int64
+	if err := db2.Count(&totalData).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	var misNum int64
+	if totalData > totalTask {
+		misNum = totalData - totalTask
+	} else {
+		misNum = totalTask - totalData
+	}
+	logrus.Println("totalData,totalTalent,misNum:", totalData, totalTask, misNum)
+
+	// 查询该页数据
+	limit := pageSize + misNum
+	offset := pageSize * pageNum // assert pageNum start with 0
+	err = db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetTaskDataList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+
+	var TaskDatas []*http_model.TaskData
+	var taskDatas []*http_model.TaskDataInfo
+	var newTaskDatas []*http_model.TaskDataInfo
+	for _, taskId := range taskIds {
+		TaskData := new(http_model.TaskData)
+		TaskData.Talent = taskMap[taskId]
+		TaskData.Data = DataMap[taskId]
+		TaskData.Link = LinkMap[taskId]
+		TaskDatas = append(TaskDatas, TaskData)
+	}
+
+	taskDatas = pack.TaskDataToTaskInfo(TaskDatas)
+
+	for _, v := range taskDatas {
+		if platform_nickname == "" {
+			newTaskDatas = append(newTaskDatas, v)
+		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
+			newTaskDatas = append(newTaskDatas, v)
+		} else if strings.Contains(conv.MustString(v.TaskID, ""), platform_nickname) {
+			newTaskDatas = append(newTaskDatas, v)
+		} else {
+			totalTask--
+		}
+	}
+	// return fulltaskData, total, nil
+	return newTaskDatas, totalTask, nil
+}
+
+// DataOpinion 提交意见
+func DataOpinion(ctx context.Context, TaskID string, ReviseOpinion string) error {
+	db := GetReadDB(ctx)
+	err := db.Model(gorm_model.YounggeeDataInfo{}).Where("task_id = ? and is_review = 0", TaskID).Updates(map[string]interface{}{"revise_opinion": ReviseOpinion, "reject_at": time.Now(), "is_review": 1}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Data db] Update YounggeeDataInfo error,err:%+v", err)
+		return err
+	}
+	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeTaskInfo{DataStatus: 3}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Data db] Update YoungeeTaskInfo error,err:%+v", err)
+		return err
+	}
+	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeTaskInfo{TaskStage: 13}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Data db] Update YoungeeTaskInfo error,err:%+v", err)
+		return err
+	}
+	return nil
+}
+
+// AcceptData 同意数据-结案
+func AcceptData(ctx context.Context, TaskIDs []string) error {
+	db := GetReadDB(ctx)
+	err := db.Model(gorm_model.YounggeeDataInfo{}).Where("task_id in ?  and is_review = 0", TaskIDs).Updates(map[string]interface{}{"is_ok": 1, "is_review": 1, "agree_at": time.Now()}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Data db] Update YounggeeDataInfo error,err:%+v", err)
+		return err
+	}
+	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{DataStatus: 5, TaskStage: 15, CompleteStatus: 2}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Data db] Update YoungeeTaskInfo error,err:%+v", err)
+		return err
+	}
+	return nil
+}
+
+// GetSpecialTaskDataList 专项任务-查询上传链接的task list
+func GetSpecialTaskDataList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.SpecialTaskDataInfo, int64, error) {
+	db := GetReadDB(ctx)
+	// 查询Task表信息
+	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
+	// 根据Project条件过滤
+	conditionType := reflect.TypeOf(conditions).Elem()
+	conditionValue := reflect.ValueOf(conditions).Elem()
+	var platform_nickname string = ""
+	for i := 0; i < conditionType.NumField(); i++ {
+		field := conditionType.Field(i)
+		tag := field.Tag.Get("condition")
+		value := conditionValue.FieldByName(field.Name)
+
+		if tag == "data_status" {
+			fmt.Printf("Data %+v", value.Interface() == int64(0))
+			if value.Interface() == int64(0) {
+				db = db.Where("task_stage = 14")
+			} else {
+				db = db.Where("task_stage > 14 and task_stage <> 16")
+			}
+			continue
+		} else if !util.IsBlank(value) {
+			if tag == "platform_nickname" {
+				platform_nickname = fmt.Sprintf("%v", value.Interface())
+				continue
+			} else if tag == "project_id" {
+				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+			}
+		}
+	}
+	var taskInfos []gorm_model.YoungeeTaskInfo
+	db = db.Model(gorm_model.YoungeeTaskInfo{})
+	// 查询总数
+	var totalTask int64
+	if err := db.Count(&totalTask).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetTaskDataList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	db.Order("task_id").Find(&taskInfos)
+
+	// 查询任务id
+	var taskIds []string
+	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
+	for _, taskInfo := range taskInfos {
+		taskIds = append(taskIds, taskInfo.TaskId)
+		taskMap[taskInfo.TaskId] = taskInfo
+	}
+
+	// 查询链接
+	db1 := GetReadDB(ctx)
+	// db1 = db1.Debug().Model(gorm_model.YounggeeDataInfo{})
+	var LinkInfos []gorm_model.YounggeeLinkInfo
+	db1 = db1.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id IN ? AND is_submit= 1 AND is_ok = 1", taskIds)
+	err := db1.Find(&LinkInfos).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	LinkMap := make(map[string]gorm_model.YounggeeLinkInfo)
+	for _, LinkInfo := range LinkInfos {
+		LinkMap[LinkInfo.TaskID] = LinkInfo
+	}
+
+	db2 := GetReadDB(ctx)
+	var DataInfos []gorm_model.YounggeeDataInfo
+	db2 = db2.Model(gorm_model.YounggeeDataInfo{}).Where("task_id IN ? AND is_submit = 1", taskIds)
+	if conditions.DataStatus == int64(0) {
+		db2 = db2.Where("is_review = 0")
+	} else {
+		db2 = db2.Where("is_ok = 1")
+	}
+	err = db2.Find(&DataInfos).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	DataMap := make(map[string]gorm_model.YounggeeDataInfo)
+	for _, DataInfo := range DataInfos {
+		DataMap[DataInfo.TaskID] = DataInfo
+	}
+	// 查询总数
+	var totalData int64
+	if err := db2.Count(&totalData).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	var misNum int64
+	if totalData > totalTask {
+		misNum = totalData - totalTask
+	} else {
+		misNum = totalTask - totalData
+	}
+	logrus.Println("totalData,totalTalent,misNum:", totalData, totalTask, misNum)
+
+	// 查询该页数据
+	limit := pageSize + misNum
+	offset := pageSize * pageNum // assert pageNum start with 0
+	err = db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetTaskDataList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+
+	var TaskDatas []*http_model.SpecialTaskData
+	var taskDatas []*http_model.SpecialTaskDataInfo
+	var newTaskDatas []*http_model.SpecialTaskDataInfo
+	for _, taskId := range taskIds {
+		TaskData := new(http_model.SpecialTaskData)
+		TaskData.Talent = taskMap[taskId]
+		TaskData.Data = DataMap[taskId]
+		TaskData.Link = LinkMap[taskId]
+		TaskDatas = append(TaskDatas, TaskData)
+	}
+
+	taskDatas = pack.SpecialTaskDataToTaskInfo(TaskDatas)
+
+	for _, v := range taskDatas {
+		if platform_nickname == "" {
+			newTaskDatas = append(newTaskDatas, v)
+		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
+			newTaskDatas = append(newTaskDatas, v)
+		} else if strings.Contains(conv.MustString(v.TaskID, ""), platform_nickname) {
+			newTaskDatas = append(newTaskDatas, v)
+		} else {
+			totalTask--
+		}
+	}
+	// return fulltaskData, total, nil
+	return newTaskDatas, totalTask, nil
+}

+ 859 - 859
db/default.go

@@ -1,859 +1,859 @@
-package db
-
-import (
-	"context"
-	"fmt"
-	"reflect"
-	"strings"
-	"time"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/common_model"
-	"youngee_m_api/model/gorm_model"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/pack"
-	"youngee_m_api/util"
-
-	"github.com/caixw/lib.go/conv"
-	"github.com/sirupsen/logrus"
-	"gorm.io/gorm"
-)
-
-func CountDefaultNum(ctx context.Context) (error, *http_model.CountNumOfDefaultsResponse) {
-	db := GetReadDB(ctx)
-	var contractInfos []gorm_model.YoungeeContractInfo
-	err := db.Debug().Model(gorm_model.YoungeeContractInfo{}).Where("default_status = 3").Find(&contractInfos).Error
-	if err != nil {
-		return err, nil
-	}
-	DraftDefaultNum, ScriptDefaultNum, LinkDefaultNum, DataDefaultNum := 0, 0, 0, 0
-	for _, contractInfo := range contractInfos {
-		if contractInfo.BreakType == 1 {
-			ScriptDefaultNum++
-		} else if contractInfo.BreakType == 2 {
-			DraftDefaultNum++
-		} else if contractInfo.BreakType == 3 {
-			LinkDefaultNum++
-		} else {
-			DataDefaultNum++
-		}
-	}
-	data := &http_model.CountNumOfDefaultsResponse{}
-	data.ScriptDefaultNum = int32(ScriptDefaultNum)
-	data.DraftDefaultNum = int32(DraftDefaultNum)
-	data.LinkDefaultNum = int32(LinkDefaultNum)
-	data.DataDefaultNum = int32(DataDefaultNum)
-	return nil, data
-}
-
-func BreachPending(ctx context.Context, pageSize, pageNum int32, req *http_model.BreachPendingRequest) (*http_model.BreachPendingData, error) {
-	db := GetReadDB(ctx)
-	var contractInfos []*gorm_model.YoungeeContractInfo
-	db = db.Model(gorm_model.YoungeeContractInfo{}).Where("default_status = 3")
-	if req.DefaultType != 0 {
-		db = db.Where("break_type = ?", req.DefaultType)
-	}
-	if req.TaskId != "" {
-		db = db.Debug().Where("task_id = ?", req.TaskId)
-	}
-	var findProjectIds []int64
-	if req.ProjectName != "" {
-		db1 := GetReadDB(ctx)
-		db1.Model(gorm_model.ProjectInfo{}).Select("project_id").Where("project_name = ?", req.ProjectName).Find(&findProjectIds)
-		var findTaskIds []int
-		db2 := GetReadDB(ctx)
-		db2.Model(gorm_model.YoungeeTaskInfo{}).Select("task_id").Where("project_id IN ?", findProjectIds).Find(&findTaskIds)
-		db = db.Where("task_id IN ?", findTaskIds)
-	}
-	// 查询总数
-	var total int64
-	if err := db.Count(&total).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[BreachPending] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	// 查询该页数据
-	limit := pageSize
-	offset := pageSize * pageNum // assert pageNum start with 0
-	err := db.Order("terminate_at").Limit(int(limit)).Offset(int(offset)).Find(&contractInfos).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[BreachPending] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	var taskIds []string
-	for _, contractInfo := range contractInfos {
-		taskIds = append(taskIds, contractInfo.TaskID)
-	}
-	taskIds = util.RemoveStrRepByMap(taskIds)
-	taskIdToProjectMap := make(map[string]string)
-	taskIdToTalentIdMap := make(map[string]string)
-	taskIdToTaskInfoMap := make(map[string]gorm_model.YoungeeTaskInfo)
-	var projectIds []string
-	for _, taskId := range taskIds {
-		db1 := GetReadDB(ctx)
-		var taskInfo gorm_model.YoungeeTaskInfo
-		db1.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Find(&taskInfo)
-		taskIdToProjectMap[taskId] = taskInfo.ProjectId
-		taskIdToTalentIdMap[taskId] = taskInfo.TalentId
-		taskIdToTaskInfoMap[taskId] = taskInfo
-		projectIds = append(projectIds, taskInfo.ProjectId)
-	}
-	projectIds = util.RemoveStrRepByMap(projectIds)
-	var enterpriseIds []string
-	projectIdToProjectInfoMap := make(map[string]gorm_model.ProjectInfo)
-	for _, projectId := range projectIds {
-		db1 := GetReadDB(ctx)
-		projectInfo := gorm_model.ProjectInfo{}
-		db1.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectId).Find(&projectInfo)
-		projectIdToProjectInfoMap[projectInfo.ProjectID] = projectInfo
-		enterpriseIds = append(enterpriseIds, projectInfo.EnterpriseID)
-	}
-	enterpriseIds = util.RemoveStrRepByMap(enterpriseIds)
-	enterpriseIdToUserId := make(map[string]int64)
-	var userIds []int64
-	for _, enterpriseId := range enterpriseIds {
-		db1 := GetReadDB(ctx)
-		var userId int64
-		db1.Model(gorm_model.Enterprise{}).Select("user_id").Where("enterprise_id = ?", enterpriseId).Find(&userId)
-		enterpriseIdToUserId[enterpriseId] = userId
-		userIds = append(userIds, userId)
-	}
-	userIdToUserPhone := make(map[int64]string)
-	for _, userId := range userIds {
-		db1 := GetReadDB(ctx)
-		var userPhone string
-		db1.Model(gorm_model.YounggeeUser{}).Select("phone").Where("id = ?", userId).Find(&userPhone)
-		userIdToUserPhone[userId] = userPhone
-	}
-	talentIdToTalentPhoneMap := make(map[string]string)
-	for _, v := range taskIdToTalentIdMap {
-		if len(talentIdToTalentPhoneMap) == 0 {
-			db1 := GetReadDB(ctx)
-			var talentPhoneNumber string
-			db1.Model(gorm_model.YoungeeTalentInfo{}).Select("talent_phone_number").Where("id = ?", v).Find(&talentPhoneNumber)
-			talentIdToTalentPhoneMap[v] = talentPhoneNumber
-		}
-		if _, ok := talentIdToTalentPhoneMap[v]; !ok {
-			db1 := GetReadDB(ctx)
-			var talentPhoneNumber string
-			db1.Model(gorm_model.YoungeeTalentInfo{}).Select("talent_phone_number").Where("id = ?", v).Find(&talentPhoneNumber)
-			talentIdToTalentPhoneMap[v] = talentPhoneNumber
-		}
-	}
-	taskIdToDefaultInfo := make(map[string]string)
-	if req.DefaultType == 4 {
-		for _, taskId := range taskIds {
-			db1 := GetReadDB(ctx)
-			var link string
-			db1.Debug().Model(gorm_model.YounggeeLinkInfo{}).Select("link_url").Where("task_id = ? AND is_ok = 1", taskId).Find(&link)
-			taskIdToDefaultInfo[taskId] = link
-		}
-	}
-	var BreachPendingPreviews []*http_model.BreachPendingPreview
-	for _, contractInfo := range contractInfos {
-		fmt.Println(contractInfo.TerminateAt)
-		BreachPendingPreview := new(http_model.BreachPendingPreview)
-		BreachPendingPreview.ContractId = int32(contractInfo.ContractID)
-		BreachPendingPreview.ProjectId = taskIdToProjectMap[contractInfo.TaskID]
-		BreachPendingPreview.UserId = projectIdToProjectInfoMap[taskIdToProjectMap[contractInfo.TaskID]].EnterpriseID
-		BreachPendingPreview.ProjectName = projectIdToProjectInfoMap[taskIdToProjectMap[contractInfo.TaskID]].ProjectName
-		BreachPendingPreview.UserPhone = userIdToUserPhone[enterpriseIdToUserId[projectIdToProjectInfoMap[taskIdToProjectMap[contractInfo.TaskID]].EnterpriseID]]
-		BreachPendingPreview.TaskId = contractInfo.TaskID
-		BreachPendingPreview.TalentId = taskIdToTalentIdMap[contractInfo.TaskID]
-		BreachPendingPreview.TalentPhone = talentIdToTalentPhoneMap[taskIdToTalentIdMap[contractInfo.TaskID]]
-		BreachPendingPreview.LinkInfo = taskIdToDefaultInfo[contractInfo.TaskID]
-		BreachPendingPreview.Price = taskIdToTaskInfoMap[contractInfo.TaskID].AllPayment
-		BreachPendingPreview.SettlementAmount = taskIdToTaskInfoMap[contractInfo.TaskID].RealPayment
-		BreachPendingPreview.DefaultAt = conv.MustString(contractInfo.BreakAt, "")[0:19]
-		BreachPendingPreview.TerminateAt = conv.MustString(contractInfo.TerminateAt, "")[0:19]
-		BreachPendingPreviews = append(BreachPendingPreviews, BreachPendingPreview)
-	}
-	var BreachPendingData http_model.BreachPendingData
-	BreachPendingData.BreachPendingPreview = BreachPendingPreviews
-	BreachPendingData.Total = total
-	return &BreachPendingData, nil
-}
-
-func ContractBreach(ctx context.Context, req *http_model.ContractBreachRequest) error {
-	db := GetReadDB(ctx)
-	var breakType int
-	db.Model(gorm_model.YoungeeContractInfo{}).Select("break_type").Where("contract_id IN ?", req.ContractIds).Find(&breakType)
-	t := time.Now()
-	err := db.Debug().Where("contract_id IN ?", req.ContractIds).Updates(&gorm_model.YoungeeContractInfo{DefaultStatus: int(req.DefaultStatus), HandleAt: &t}).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[ContractBreach] error query mysql total, err:%+v", err)
-		return err
-	}
-	var taskIds []string
-	db.Model(gorm_model.YoungeeContractInfo{}).Select("task_id").Where("contract_id IN ?", req.ContractIds).Find(&taskIds)
-	for _, taskId := range taskIds {
-		if req.DefaultStatus == 5 {
-			var taskInfo gorm_model.YoungeeTaskInfo
-			var enterpriseId string
-
-			db1 := GetReadDB(ctx)
-			db1.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Find(&taskInfo)
-
-			db2 := GetReadDB(ctx)
-			db2.Model(gorm_model.ProjectInfo{}).Select("enterprise_id").Where("project_id = ?", taskInfo.ProjectId).Find(&enterpriseId)
-
-			db3 := GetReadDB(ctx)
-			err := db3.Model(gorm_model.Enterprise{}).Where("enterprise_id = ?", enterpriseId).Updates(
-				map[string]interface{}{
-					"frozen_balance":    gorm.Expr("frozen_balance - ?", taskInfo.RealPayment),
-					"available_balance": gorm.Expr("available_balance + ?", taskInfo.RealPayment)}).Error
-			if err != nil {
-				logrus.WithContext(ctx).Errorf("[ContractBreach] error update Enterprise, err:%+v", err)
-				return err
-			}
-
-			db = GetReadDB(ctx)
-			db = db.Model(gorm_model.RecruitStrategy{}).Where("project_id = ? and strategy_id = ?", taskInfo.ProjectId, taskInfo.StrategyId)
-			err = db.Updates(map[string]interface{}{
-				"total_offer": gorm.Expr("total_offer + ?", taskInfo.RealPayment)}).Error
-			if err != nil {
-				logrus.WithContext(ctx).Errorf("[ContractBreach] error update RecruitStrategy, err:%+v", err)
-				return err
-			}
-
-			err = CreateTaskLog(context.Background(), taskInfo.TaskId, "解约时间")
-			if err != nil {
-				logrus.WithContext(context.Background()).Errorf("[ContractBreach] call CreateTaskLog error,err:%+v", err)
-			}
-
-			db4 := GetReadDB(ctx)
-			if breakType == 1 {
-				err = db4.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Updates(
-					map[string]interface{}{
-						"cur_default_type":  2,
-						"task_stage":        16,
-						"script_break_rate": 0}).Error
-				taskInfo.ScriptBreakRate = 0
-			} else if breakType == 2 {
-				err = db4.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Updates(
-					map[string]interface{}{
-						"cur_default_type":  4,
-						"task_stage":        16,
-						"sketch_break_rate": 0}).Error
-				taskInfo.SketchBreakRate = 0
-			} else if breakType == 3 {
-				err = db4.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Updates(
-					map[string]interface{}{
-						"cur_default_type": 6,
-						"task_stage":       16,
-						"link_break_rate":  0}).Error
-				taskInfo.LinkBreakRate = 0
-			} else if breakType == 4 {
-				err = db4.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Updates(
-					map[string]interface{}{
-						"cur_default_type": 8,
-						"task_stage":       16,
-						"data_break_rate":  0}).Error
-				taskInfo.DataBreakRate = 0
-			}
-			if err != nil {
-				logrus.WithContext(ctx).Errorf("[ContractBreach] error update YoungeeTaskInfo, err:%+v", err)
-				return err
-			}
-			settleAmount := taskInfo.TaskReward * (1.0 - float64(taskInfo.LinkBreakRate+taskInfo.DataBreakRate+taskInfo.SketchBreakRate+taskInfo.ScriptBreakRate+taskInfo.ErrBreakRate)/100)
-			if settleAmount <= 0 {
-				settleAmount = 0.0
-			}
-			db5 := GetReadDB(ctx)
-			err = db5.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Updates(
-				map[string]interface{}{"settle_amount": settleAmount, "withdraw_status": 2, "complete_status": 4, "complete_date": time.Now()}).Error
-			if err != nil {
-				logrus.WithContext(ctx).Errorf("[ContractBreach] error update YoungeeTaskInfo, err:%+v", err)
-				return err
-			}
-
-			err = SetProjectFinish(context.Background(), taskInfo.ProjectId)
-			if err != nil {
-				logrus.WithContext(ctx).Errorf("[ContractBreach] call SetProjectFinish error, err:%+v", err)
-				return err
-			}
-		} else {
-			db4 := GetReadDB(ctx)
-			if breakType == 1 {
-				err = db4.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Updates(gorm_model.YoungeeTaskInfo{CurDefaultType: 1}).Error
-			} else if breakType == 2 {
-				err = db4.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Updates(gorm_model.YoungeeTaskInfo{CurDefaultType: 3}).Error
-			} else if breakType == 3 {
-				err = db4.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Updates(gorm_model.YoungeeTaskInfo{CurDefaultType: 5}).Error
-			} else if breakType == 4 {
-				err = db4.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Updates(gorm_model.YoungeeTaskInfo{CurDefaultType: 7}).Error
-			}
-			if err != nil {
-				logrus.WithContext(ctx).Errorf("[ContractBreach] error update YoungeeTaskInfo, err:%+v", err)
-				return err
-			}
-		}
-	}
-	if req.DefaultStatus == 5 {
-		err = SetTalentIncome(context.Background(), taskIds)
-		if err != nil {
-			logrus.WithContext(ctx).Errorf("[ContractBreach] call SetTalentIncome error, err:%+v", err)
-			return err
-		}
-	}
-	return nil
-}
-
-func GetSketchInfoByTaskId(ctx context.Context, request *http_model.GetSketchInfoByTaskIdRequest) (*http_model.SketchInfoResponse, error) {
-	db := GetReadDB(ctx)
-	var sketchInfo gorm_model.YounggeeSketchInfo
-	db.Debug().Model(gorm_model.YounggeeSketchInfo{}).Where("task_id = ? AND is_ok = 1", request.TaskId).Find(&sketchInfo)
-	db2 := GetReadDB(ctx)
-	sketchPhotoInfo := gorm_model.YounggeeSketchPhoto{}
-	db2.Debug().Model(gorm_model.YounggeeSketchPhoto{}).Where("sketch_id = ?", sketchInfo.SketchID).Find(&sketchPhotoInfo)
-	data := new(http_model.SketchInfoResponse)
-	data.Type = int32(sketchPhotoInfo.Symbol)
-	data.PhotoUrl = sketchPhotoInfo.PhotoUrl
-	data.Content = sketchInfo.Content
-	data.Title = sketchInfo.Title
-	return data, nil
-}
-
-func BreachHandled(ctx context.Context, pageSize, pageNum int32, req *http_model.BreachHandledRequest, conditions *common_model.BreachHandledConditions) (*http_model.BreachHandledData, error) {
-	db := GetReadDB(ctx)
-	var contractInfos []*gorm_model.YoungeeContractInfo
-	db = db.Model(gorm_model.YoungeeContractInfo{}).Where("default_status = 4 OR default_status = 5")
-	// 根据Project条件过滤
-	conditionType := reflect.TypeOf(conditions).Elem()
-	conditionValue := reflect.ValueOf(conditions).Elem()
-	for i := 0; i < conditionType.NumField(); i++ {
-		field := conditionType.Field(i)
-		tag := field.Tag.Get("condition")
-		value := conditionValue.FieldByName(field.Name)
-		if !util.IsBlank(value) {
-			db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-		}
-	}
-	if req.TaskId != "" {
-		db = db.Where("task_id = ?", req.TaskId)
-	}
-	var findProjectIds []string
-	if req.ProjectName != "" {
-		db1 := GetReadDB(ctx)
-		db1.Model(gorm_model.ProjectInfo{}).Select("project_id").Where("project_name = ?", req.ProjectName).Find(&findProjectIds)
-		var findTaskIds []string
-		db2 := GetReadDB(ctx)
-		db2.Model(gorm_model.YoungeeTaskInfo{}).Select("task_id").Where("project_id IN ?", findProjectIds).Find(&findTaskIds)
-		db = db.Where("task_id IN ?", findTaskIds)
-	}
-	// 查询总数
-	var total int64
-	if err := db.Count(&total).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[BreachHandled] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	// 查询该页数据
-	limit := pageSize
-	offset := pageSize * pageNum // assert pageNum start with 0
-	err := db.Order("terminate_at").Limit(int(limit)).Offset(int(offset)).Find(&contractInfos).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[BreachHandled] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-
-	var taskIds []string
-	for _, contractInfo := range contractInfos {
-		taskIds = append(taskIds, contractInfo.TaskID)
-	}
-	taskIds = util.RemoveStrRepByMap(taskIds)
-	taskIdToProjectMap := make(map[string]string)
-	taskIdToTalentIdMap := make(map[string]string)
-	taskIdToTaskInfoMap := make(map[string]gorm_model.YoungeeTaskInfo)
-	var projectIds []string
-	for _, taskId := range taskIds {
-		db1 := GetReadDB(ctx)
-		var taskInfo gorm_model.YoungeeTaskInfo
-		db1.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Find(&taskInfo)
-		taskIdToProjectMap[taskId] = taskInfo.ProjectId
-		taskIdToTalentIdMap[taskId] = taskInfo.TalentId
-		taskIdToTaskInfoMap[taskId] = taskInfo
-		projectIds = append(projectIds, taskInfo.ProjectId)
-	}
-	projectIds = util.RemoveStrRepByMap(projectIds)
-	var enterpriseIds []string
-	projectIdToProjectInfoMap := make(map[string]gorm_model.ProjectInfo)
-	for _, projectId := range projectIds {
-		db1 := GetReadDB(ctx)
-		projectInfo := gorm_model.ProjectInfo{}
-		db1.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectId).Find(&projectInfo)
-		projectIdToProjectInfoMap[projectInfo.ProjectID] = projectInfo
-		enterpriseIds = append(enterpriseIds, projectInfo.EnterpriseID)
-	}
-	enterpriseIds = util.RemoveStrRepByMap(enterpriseIds)
-	enterpriseIdToUserId := make(map[string]int64)
-	var userIds []int64
-	for _, enterpriseId := range enterpriseIds {
-		db1 := GetReadDB(ctx)
-		var userId int64
-		db1.Model(gorm_model.Enterprise{}).Select("user_id").Where("enterprise_id = ?", enterpriseId).Find(&userId)
-		enterpriseIdToUserId[enterpriseId] = userId
-		userIds = append(userIds, userId)
-	}
-	userIdToUserPhone := make(map[int64]string)
-	for _, userId := range userIds {
-		db1 := GetReadDB(ctx)
-		var userPhone string
-		db1.Model(gorm_model.YounggeeUser{}).Select("phone").Where("id = ?", userId).Find(&userPhone)
-		userIdToUserPhone[userId] = userPhone
-	}
-	talentIdToTalentPhoneMap := make(map[string]string)
-	for _, v := range taskIdToTalentIdMap {
-		if len(talentIdToTalentPhoneMap) == 0 {
-			db1 := GetReadDB(ctx)
-			var talentPhoneNumber string
-			db1.Model(gorm_model.YoungeeTalentInfo{}).Select("talent_phone_number").Where("id = ?", v).Find(&talentPhoneNumber)
-			talentIdToTalentPhoneMap[v] = talentPhoneNumber
-		}
-		if _, ok := talentIdToTalentPhoneMap[v]; !ok {
-			db1 := GetReadDB(ctx)
-			var talentPhoneNumber string
-			db1.Model(gorm_model.YoungeeTalentInfo{}).Select("talent_phone_number").Where("id = ?", v).Find(&talentPhoneNumber)
-			talentIdToTalentPhoneMap[v] = talentPhoneNumber
-		}
-	}
-	var BreachHandledPreviews []*http_model.BreachHandledPreview
-	for _, contractInfo := range contractInfos {
-		BreachHandledPreview := new(http_model.BreachHandledPreview)
-		BreachHandledPreview.ContractId = int32(contractInfo.ContractID)
-		BreachHandledPreview.ProjectId = taskIdToProjectMap[contractInfo.TaskID]
-		BreachHandledPreview.UserId = projectIdToProjectInfoMap[taskIdToProjectMap[contractInfo.TaskID]].EnterpriseID
-		BreachHandledPreview.ProjectName = projectIdToProjectInfoMap[taskIdToProjectMap[contractInfo.TaskID]].ProjectName
-		BreachHandledPreview.UserPhone = userIdToUserPhone[enterpriseIdToUserId[projectIdToProjectInfoMap[taskIdToProjectMap[contractInfo.TaskID]].EnterpriseID]]
-		BreachHandledPreview.TaskId = contractInfo.TaskID
-		BreachHandledPreview.TalentId = taskIdToTalentIdMap[contractInfo.TaskID]
-		BreachHandledPreview.TalentPhone = talentIdToTalentPhoneMap[taskIdToTalentIdMap[contractInfo.TaskID]]
-		BreachHandledPreview.TerminateReason = consts.GetBreakType(contractInfo.BreakType)
-		BreachHandledPreview.HandleResult = consts.GetHandleResult(contractInfo.DefaultStatus)
-		BreachHandledPreview.HandleAt = conv.MustString(contractInfo.HandleAt, "")[0:19]
-		BreachHandledPreviews = append(BreachHandledPreviews, BreachHandledPreview)
-	}
-	var BreachHandledData http_model.BreachHandledData
-	BreachHandledData.BreachHandledPreview = BreachHandledPreviews
-	BreachHandledData.Total = total
-	return &BreachHandledData, nil
-}
-
-func GetTaskDefaultReviewList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskDefaultReviewInfo, int64, error) {
-	db := GetReadDB(ctx)
-	// 查询Task表信息
-	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
-	// 根据Project条件过滤
-	conditionType := reflect.TypeOf(conditions).Elem()
-	conditionValue := reflect.ValueOf(conditions).Elem()
-	var platform_nickname string = ""
-	for i := 0; i < conditionType.NumField(); i++ {
-		field := conditionType.Field(i)
-		tag := field.Tag.Get("condition")
-		value := conditionValue.FieldByName(field.Name)
-		if tag == "default_status" {
-			fmt.Printf("default %+v", value.Interface() == int64(0))
-			if value.Interface() == int64(0) {
-				db = db.Where("cur_default_type = 1")
-			} else if value.Interface() == int64(1) {
-				db = db.Where("cur_default_type = 3")
-			} else if value.Interface() == int64(2) {
-				db = db.Where("cur_default_type = 5")
-			}
-			continue
-		} else if !util.IsBlank(value) {
-			if tag == "platform_nickname" {
-				platform_nickname = fmt.Sprintf("%v", value.Interface())
-				continue
-			} else if tag == "project_id" || tag == "strategy_id" {
-				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-			}
-		}
-	}
-	var taskInfos []gorm_model.YoungeeTaskInfo
-	db = db.Model(gorm_model.YoungeeTaskInfo{})
-	// 查询总数
-	var totalTask int64
-	if err := db.Count(&totalTask).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	db.Order("task_id").Find(&taskInfos)
-
-	// 查询任务id
-	var taskIds []string
-	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
-	for _, taskInfo := range taskInfos {
-		taskIds = append(taskIds, taskInfo.TaskId)
-		taskMap[taskInfo.TaskId] = taskInfo
-	}
-	db1 := GetReadDB(ctx)
-	db1 = db1.Debug().Model(gorm_model.YoungeeContractInfo{})
-
-	var DefaultReviewInfos []gorm_model.YoungeeContractInfo
-	db1 = db1.Model(gorm_model.YoungeeContractInfo{}).Where("task_id IN ? AND (default_status = 1 OR default_status = 4)", taskIds)
-	err := db1.Find(&DefaultReviewInfos).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	DefaultReviewMap := make(map[string]gorm_model.YoungeeContractInfo)
-	for _, DefaultReviewInfo := range DefaultReviewInfos {
-		DefaultReviewMap[DefaultReviewInfo.TaskID] = DefaultReviewInfo
-	}
-	// 查询总数
-	var totalDefaultReview int64
-	if err := db1.Count(&totalDefaultReview).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-
-	// 查询该页数据
-	limit := pageSize
-	offset := pageSize * pageNum // assert pageNum start with 0
-	err = db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
-
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-
-	var TaskDefaultReviews []*http_model.TaskDefaultReview
-	var taskDefaultReviews []*http_model.TaskDefaultReviewInfo
-	var newTaskDefaultReviews []*http_model.TaskDefaultReviewInfo
-	for _, taskId := range taskIds {
-		TaskDefaultReview := new(http_model.TaskDefaultReview)
-		TaskDefaultReview.Talent = taskMap[taskId]
-		TaskDefaultReview.Default = DefaultReviewMap[taskId]
-		TaskDefaultReviews = append(TaskDefaultReviews, TaskDefaultReview)
-	}
-
-	taskDefaultReviews = pack.TaskDefaultReviewToTaskInfo(TaskDefaultReviews)
-
-	for _, v := range taskDefaultReviews {
-		if platform_nickname == "" {
-			newTaskDefaultReviews = append(newTaskDefaultReviews, v)
-		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
-			newTaskDefaultReviews = append(newTaskDefaultReviews, v)
-		} else if strings.Contains(conv.MustString(v.TaskID, ""), platform_nickname) {
-			newTaskDefaultReviews = append(newTaskDefaultReviews, v)
-		} else {
-			totalTask--
-		}
-	}
-	return newTaskDefaultReviews, totalTask, nil
-}
-
-func GetTaskDefaultDataList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskDefaultDataInfo, int64, error) {
-	db := GetReadDB(ctx)
-	// 查询Task表信息
-	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
-	// 根据Project条件过滤
-	conditionType := reflect.TypeOf(conditions).Elem()
-	conditionValue := reflect.ValueOf(conditions).Elem()
-	var platform_nickname string = ""
-	for i := 0; i < conditionType.NumField(); i++ {
-		field := conditionType.Field(i)
-		tag := field.Tag.Get("condition")
-		value := conditionValue.FieldByName(field.Name)
-		if tag == "default_status" {
-			if value.Interface() == int64(3) {
-				db = db.Where("cur_default_type = 7")
-			}
-			continue
-		} else if !util.IsBlank(value) {
-			if tag == "platform_nickname" {
-				platform_nickname = fmt.Sprintf("%v", value.Interface())
-				continue
-			} else if tag == "project_id" || tag == "strategy_id" {
-				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-			}
-		}
-	}
-	var taskInfos []gorm_model.YoungeeTaskInfo
-	db = db.Model(gorm_model.YoungeeTaskInfo{})
-	// 查询总数
-	var totalTask int64
-	if err := db.Count(&totalTask).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	db.Order("task_id").Find(&taskInfos)
-
-	// 查询任务id
-	var taskIds []string
-	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
-	for _, taskInfo := range taskInfos {
-		taskIds = append(taskIds, taskInfo.TaskId)
-		taskMap[taskInfo.TaskId] = taskInfo
-	}
-	db1 := GetReadDB(ctx)
-	db1 = db1.Debug().Model(gorm_model.YoungeeContractInfo{})
-
-	var DefaultDataInfos []gorm_model.YoungeeContractInfo
-	db1 = db1.Model(gorm_model.YoungeeContractInfo{}).Where("task_id IN ? AND (default_status = 1 OR default_status = 4)", taskIds)
-	err := db1.Find(&DefaultDataInfos).Error
-	DefaultDataMap := make(map[string]gorm_model.YoungeeContractInfo)
-	for _, DefaultDataInfo := range DefaultDataInfos {
-		DefaultDataMap[DefaultDataInfo.TaskID] = DefaultDataInfo
-	}
-
-	var LinkInfos []gorm_model.YounggeeLinkInfo
-	db2 := GetReadDB(ctx)
-	db2 = db2.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id IN ? AND is_ok = 1", taskIds).Find(&LinkInfos)
-	LinkMap := make(map[string]gorm_model.YounggeeLinkInfo)
-	for _, LinkInfo := range LinkInfos {
-		LinkMap[LinkInfo.TaskID] = LinkInfo
-	}
-
-	// 查询总数
-	var totalDefaultData int64
-	if err := db2.Count(&totalDefaultData).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-
-	// 查询该页数据
-	limit := pageSize
-	offset := pageSize * pageNum // assert pageNum start with 0
-	err = db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
-
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-
-	var TaskDefaultDatas []*http_model.TaskDefaultData
-	var taskDefaultDatas []*http_model.TaskDefaultDataInfo
-	var newTaskDefaultDatas []*http_model.TaskDefaultDataInfo
-	for _, taskId := range taskIds {
-		TaskDefaultData := new(http_model.TaskDefaultData)
-		TaskDefaultData.Talent = taskMap[taskId]
-		TaskDefaultData.Default = DefaultDataMap[taskId]
-		TaskDefaultData.Link = LinkMap[taskId]
-		TaskDefaultDatas = append(TaskDefaultDatas, TaskDefaultData)
-	}
-
-	taskDefaultDatas = pack.TaskDefaultDataToTaskInfo(TaskDefaultDatas)
-
-	for _, v := range taskDefaultDatas {
-		if platform_nickname == "" {
-			newTaskDefaultDatas = append(newTaskDefaultDatas, v)
-		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
-			newTaskDefaultDatas = append(newTaskDefaultDatas, v)
-		} else if strings.Contains(conv.MustString(v.TaskID, ""), platform_nickname) {
-			newTaskDefaultDatas = append(newTaskDefaultDatas, v)
-		} else {
-			totalTask--
-		}
-	}
-	return newTaskDefaultDatas, totalTask, nil
-}
-
-func GetTaskTerminatingList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskTerminatingInfo, int64, error) {
-	db := GetReadDB(ctx)
-	var taskIds1 []string
-	var totalTerminating int64
-	var TerminatingInfos []gorm_model.YoungeeContractInfo
-	db = db.Model(gorm_model.YoungeeContractInfo{})
-	err := db.Where("default_status = 3 AND project_id = ?", projectID).Find(&TerminatingInfos).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetTaskTerminatingList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	TerminatingMap := make(map[string]gorm_model.YoungeeContractInfo)
-	for _, TerminatingInfo := range TerminatingInfos {
-		taskIds1 = append(taskIds1, TerminatingInfo.TaskID)
-		TerminatingMap[TerminatingInfo.TaskID] = TerminatingInfo
-	}
-
-	if err := db.Count(&totalTerminating).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetTaskTerminatingList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-
-	db1 := GetReadDB(ctx)
-	// 查询Task表信息
-	db1 = db1.Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2 and task_id in ?", taskIds1)
-	// 根据Project条件过滤
-	conditionType := reflect.TypeOf(conditions).Elem()
-	conditionValue := reflect.ValueOf(conditions).Elem()
-	var platform_nickname string = ""
-	for i := 0; i < conditionType.NumField(); i++ {
-		field := conditionType.Field(i)
-		tag := field.Tag.Get("condition")
-		value := conditionValue.FieldByName(field.Name)
-		if tag == "default_status" {
-			if value.Interface() == int64(4) {
-				db1 = db1.Where("cur_default_type = 9")
-			}
-			continue
-		} else if !util.IsBlank(value) {
-			if tag == "platform_nickname" {
-				platform_nickname = fmt.Sprintf("%v", value.Interface())
-				continue
-			} else if tag == "project_id" || tag == "strategy_id" {
-				if tag == "strategy_id" {
-					fmt.Println("strategy_id:", value.Interface())
-				}
-				db1 = db1.Debug().Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-			}
-		}
-	}
-	var taskInfos []gorm_model.YoungeeTaskInfo
-	// db1 = db1.Model(gorm_model.YoungeeTaskInfo{})
-	// 查询总数
-	var totalTask int64
-	if err := db1.Count(&totalTask).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetTaskTerminatingList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	db1.Order("task_id").Find(&taskInfos)
-
-	// 查询任务id
-	var taskIds []string
-	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
-	for _, taskInfo := range taskInfos {
-		taskIds = append(taskIds, taskInfo.TaskId)
-		taskMap[taskInfo.TaskId] = taskInfo
-	}
-	var misNum int64
-	if totalTerminating > totalTask {
-		misNum = totalTerminating - totalTask
-	} else {
-		misNum = totalTask - totalTerminating
-	}
-	//logrus.Println("totalTerminating,totalTalent,misNum:", totalTerminating, totalTask, misNum)
-
-	// 查询该页数据
-	limit := pageSize + misNum
-	offset := pageSize * pageNum // assert pageNum start with 0
-	err = db1.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
-
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetTaskTerminatingList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-
-	var TaskTerminatings []*http_model.TaskTerminating
-	var taskTerminatings []*http_model.TaskTerminatingInfo
-	var newTaskTerminatings []*http_model.TaskTerminatingInfo
-	for _, taskId := range taskIds {
-		TaskTerminating := new(http_model.TaskTerminating)
-		TaskTerminating.Talent = taskMap[taskId]
-		TaskTerminating.Default = TerminatingMap[taskId]
-		TaskTerminatings = append(TaskTerminatings, TaskTerminating)
-	}
-
-	taskTerminatings = pack.TaskTerminatingToTaskInfo(TaskTerminatings)
-
-	for _, v := range taskTerminatings {
-		if platform_nickname == "" {
-			newTaskTerminatings = append(newTaskTerminatings, v)
-		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
-			newTaskTerminatings = append(newTaskTerminatings, v)
-		} else if strings.Contains(conv.MustString(v.TaskID, ""), platform_nickname) {
-			newTaskTerminatings = append(newTaskTerminatings, v)
-		} else {
-			totalTask--
-		}
-	}
-	return newTaskTerminatings, totalTask, nil
-}
-
-func GetTaskTerminatedList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskTerminatedInfo, int64, error) {
-	db := GetReadDB(ctx)
-	// 查询Task表信息
-	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
-	// 根据Project条件过滤
-	conditionType := reflect.TypeOf(conditions).Elem()
-	conditionValue := reflect.ValueOf(conditions).Elem()
-	var platformNickname string = ""
-	for i := 0; i < conditionType.NumField(); i++ {
-		field := conditionType.Field(i)
-		tag := field.Tag.Get("condition")
-		value := conditionValue.FieldByName(field.Name)
-		if tag == "default_status" {
-			fmt.Printf("default %+v", value.Interface() == int64(0))
-			if value.Interface() == int64(5) {
-				db = db.Where("complete_status = 4")
-			}
-			continue
-		} else if !util.IsBlank(value) {
-			if tag == "platform_nickname" {
-				platformNickname = fmt.Sprintf("%v", value.Interface())
-				continue
-			} else if tag == "project_id" || tag == "strategy_id" {
-				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-			}
-		}
-	}
-	var taskInfos []gorm_model.YoungeeTaskInfo
-	db = db.Model(gorm_model.YoungeeTaskInfo{})
-	// 查询总数
-	var totalTask int64
-	if err := db.Count(&totalTask).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetTaskTerminatedList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	db.Order("task_id").Find(&taskInfos)
-
-	// 查询任务id
-	var taskIds []string
-	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
-	for _, taskInfo := range taskInfos {
-		taskIds = append(taskIds, taskInfo.TaskId)
-		taskMap[taskInfo.TaskId] = taskInfo
-	}
-	db1 := GetReadDB(ctx)
-	db1 = db1.Debug().Model(gorm_model.YoungeeContractInfo{})
-	var TerminatedInfos []gorm_model.YoungeeContractInfo
-	db1 = db1.Model(gorm_model.YoungeeContractInfo{}).Where("task_id IN ? AND (default_status = 1 OR default_status = 5)", taskIds)
-	err1 := db1.Find(&TerminatedInfos).Error
-	if err1 != nil {
-		logrus.WithContext(ctx).Errorf("[GetTaskTerminatedList] error query mysql find, err:%+v", err1)
-		return nil, 0, err1
-	}
-	TerminatedMap := make(map[string]gorm_model.YoungeeContractInfo)
-	for _, TerminatedInfo := range TerminatedInfos {
-		fmt.Printf("TerminatedInfo%#v", TerminatedInfo)
-		TerminatedMap[TerminatedInfo.TaskID] = TerminatedInfo
-	}
-	// 查询总数
-	var totalTerminated int64
-	if err := db1.Count(&totalTerminated).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetTaskTerminatedList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	// 查询该页数据
-	limit := pageSize
-	offset := pageSize * pageNum // assert pageNum start with 0
-	err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
-
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetTaskTerminatedList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-
-	var TaskTerminateds []*http_model.TaskTerminated
-	var taskTerminateds []*http_model.TaskTerminatedInfo
-	var newTaskTerminateds []*http_model.TaskTerminatedInfo
-	for _, taskId := range taskIds {
-		TaskTerminated := new(http_model.TaskTerminated)
-		TaskTerminated.Talent = taskMap[taskId]
-		TaskTerminated.Default = TerminatedMap[taskId]
-		TaskTerminateds = append(TaskTerminateds, TaskTerminated)
-	}
-
-	taskTerminateds = pack.TaskTerminatedToTaskInfo(TaskTerminateds)
-
-	for _, v := range taskTerminateds {
-		if platformNickname == "" {
-			newTaskTerminateds = append(newTaskTerminateds, v)
-		} else if strings.Contains(v.PlatformNickname, platformNickname) {
-			newTaskTerminateds = append(newTaskTerminateds, v)
-		} else if strings.Contains(conv.MustString(v.TaskID, ""), platformNickname) {
-			newTaskTerminateds = append(newTaskTerminateds, v)
-		} else {
-			totalTask--
-		}
-	}
-	return newTaskTerminateds, totalTask, nil
-}
+package db
+
+import (
+	"context"
+	"fmt"
+	"reflect"
+	"strings"
+	"time"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/common_model"
+	"youngee_m_api/model/gorm_model"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/pack"
+	"youngee_m_api/util"
+
+	"github.com/caixw/lib.go/conv"
+	"github.com/sirupsen/logrus"
+	"gorm.io/gorm"
+)
+
+func CountDefaultNum(ctx context.Context) (error, *http_model.CountNumOfDefaultsResponse) {
+	db := GetReadDB(ctx)
+	var contractInfos []gorm_model.YoungeeContractInfo
+	err := db.Debug().Model(gorm_model.YoungeeContractInfo{}).Where("default_status = 3").Find(&contractInfos).Error
+	if err != nil {
+		return err, nil
+	}
+	DraftDefaultNum, ScriptDefaultNum, LinkDefaultNum, DataDefaultNum := 0, 0, 0, 0
+	for _, contractInfo := range contractInfos {
+		if contractInfo.BreakType == 1 {
+			ScriptDefaultNum++
+		} else if contractInfo.BreakType == 2 {
+			DraftDefaultNum++
+		} else if contractInfo.BreakType == 3 {
+			LinkDefaultNum++
+		} else {
+			DataDefaultNum++
+		}
+	}
+	data := &http_model.CountNumOfDefaultsResponse{}
+	data.ScriptDefaultNum = int32(ScriptDefaultNum)
+	data.DraftDefaultNum = int32(DraftDefaultNum)
+	data.LinkDefaultNum = int32(LinkDefaultNum)
+	data.DataDefaultNum = int32(DataDefaultNum)
+	return nil, data
+}
+
+func BreachPending(ctx context.Context, pageSize, pageNum int32, req *http_model.BreachPendingRequest) (*http_model.BreachPendingData, error) {
+	db := GetReadDB(ctx)
+	var contractInfos []*gorm_model.YoungeeContractInfo
+	db = db.Model(gorm_model.YoungeeContractInfo{}).Where("default_status = 3")
+	if req.DefaultType != 0 {
+		db = db.Where("break_type = ?", req.DefaultType)
+	}
+	if req.TaskId != "" {
+		db = db.Debug().Where("task_id = ?", req.TaskId)
+	}
+	var findProjectIds []int64
+	if req.ProjectName != "" {
+		db1 := GetReadDB(ctx)
+		db1.Model(gorm_model.ProjectInfo{}).Select("project_id").Where("project_name = ?", req.ProjectName).Find(&findProjectIds)
+		var findTaskIds []int
+		db2 := GetReadDB(ctx)
+		db2.Model(gorm_model.YoungeeTaskInfo{}).Select("task_id").Where("project_id IN ?", findProjectIds).Find(&findTaskIds)
+		db = db.Where("task_id IN ?", findTaskIds)
+	}
+	// 查询总数
+	var total int64
+	if err := db.Count(&total).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[BreachPending] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	// 查询该页数据
+	limit := pageSize
+	offset := pageSize * pageNum // assert pageNum start with 0
+	err := db.Order("terminate_at").Limit(int(limit)).Offset(int(offset)).Find(&contractInfos).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[BreachPending] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	var taskIds []string
+	for _, contractInfo := range contractInfos {
+		taskIds = append(taskIds, contractInfo.TaskID)
+	}
+	taskIds = util.RemoveStrRepByMap(taskIds)
+	taskIdToProjectMap := make(map[string]string)
+	taskIdToTalentIdMap := make(map[string]string)
+	taskIdToTaskInfoMap := make(map[string]gorm_model.YoungeeTaskInfo)
+	var projectIds []string
+	for _, taskId := range taskIds {
+		db1 := GetReadDB(ctx)
+		var taskInfo gorm_model.YoungeeTaskInfo
+		db1.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Find(&taskInfo)
+		taskIdToProjectMap[taskId] = taskInfo.ProjectId
+		taskIdToTalentIdMap[taskId] = taskInfo.TalentId
+		taskIdToTaskInfoMap[taskId] = taskInfo
+		projectIds = append(projectIds, taskInfo.ProjectId)
+	}
+	projectIds = util.RemoveStrRepByMap(projectIds)
+	var enterpriseIds []string
+	projectIdToProjectInfoMap := make(map[string]gorm_model.ProjectInfo)
+	for _, projectId := range projectIds {
+		db1 := GetReadDB(ctx)
+		projectInfo := gorm_model.ProjectInfo{}
+		db1.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectId).Find(&projectInfo)
+		projectIdToProjectInfoMap[projectInfo.ProjectID] = projectInfo
+		enterpriseIds = append(enterpriseIds, projectInfo.EnterpriseID)
+	}
+	enterpriseIds = util.RemoveStrRepByMap(enterpriseIds)
+	enterpriseIdToUserId := make(map[string]int64)
+	var userIds []int64
+	for _, enterpriseId := range enterpriseIds {
+		db1 := GetReadDB(ctx)
+		var userId int64
+		db1.Model(gorm_model.Enterprise{}).Select("user_id").Where("enterprise_id = ?", enterpriseId).Find(&userId)
+		enterpriseIdToUserId[enterpriseId] = userId
+		userIds = append(userIds, userId)
+	}
+	userIdToUserPhone := make(map[int64]string)
+	for _, userId := range userIds {
+		db1 := GetReadDB(ctx)
+		var userPhone string
+		db1.Model(gorm_model.YounggeeUser{}).Select("phone").Where("id = ?", userId).Find(&userPhone)
+		userIdToUserPhone[userId] = userPhone
+	}
+	talentIdToTalentPhoneMap := make(map[string]string)
+	for _, v := range taskIdToTalentIdMap {
+		if len(talentIdToTalentPhoneMap) == 0 {
+			db1 := GetReadDB(ctx)
+			var talentPhoneNumber string
+			db1.Model(gorm_model.YoungeeTalentInfo{}).Select("talent_phone_number").Where("id = ?", v).Find(&talentPhoneNumber)
+			talentIdToTalentPhoneMap[v] = talentPhoneNumber
+		}
+		if _, ok := talentIdToTalentPhoneMap[v]; !ok {
+			db1 := GetReadDB(ctx)
+			var talentPhoneNumber string
+			db1.Model(gorm_model.YoungeeTalentInfo{}).Select("talent_phone_number").Where("id = ?", v).Find(&talentPhoneNumber)
+			talentIdToTalentPhoneMap[v] = talentPhoneNumber
+		}
+	}
+	taskIdToDefaultInfo := make(map[string]string)
+	if req.DefaultType == 4 {
+		for _, taskId := range taskIds {
+			db1 := GetReadDB(ctx)
+			var link string
+			db1.Debug().Model(gorm_model.YounggeeLinkInfo{}).Select("link_url").Where("task_id = ? AND is_ok = 1", taskId).Find(&link)
+			taskIdToDefaultInfo[taskId] = link
+		}
+	}
+	var BreachPendingPreviews []*http_model.BreachPendingPreview
+	for _, contractInfo := range contractInfos {
+		fmt.Println(contractInfo.TerminateAt)
+		BreachPendingPreview := new(http_model.BreachPendingPreview)
+		BreachPendingPreview.ContractId = int32(contractInfo.ContractID)
+		BreachPendingPreview.ProjectId = taskIdToProjectMap[contractInfo.TaskID]
+		BreachPendingPreview.UserId = projectIdToProjectInfoMap[taskIdToProjectMap[contractInfo.TaskID]].EnterpriseID
+		BreachPendingPreview.ProjectName = projectIdToProjectInfoMap[taskIdToProjectMap[contractInfo.TaskID]].ProjectName
+		BreachPendingPreview.UserPhone = userIdToUserPhone[enterpriseIdToUserId[projectIdToProjectInfoMap[taskIdToProjectMap[contractInfo.TaskID]].EnterpriseID]]
+		BreachPendingPreview.TaskId = contractInfo.TaskID
+		BreachPendingPreview.TalentId = taskIdToTalentIdMap[contractInfo.TaskID]
+		BreachPendingPreview.TalentPhone = talentIdToTalentPhoneMap[taskIdToTalentIdMap[contractInfo.TaskID]]
+		BreachPendingPreview.LinkInfo = taskIdToDefaultInfo[contractInfo.TaskID]
+		BreachPendingPreview.Price = taskIdToTaskInfoMap[contractInfo.TaskID].AllPayment
+		BreachPendingPreview.SettlementAmount = taskIdToTaskInfoMap[contractInfo.TaskID].RealPayment
+		BreachPendingPreview.DefaultAt = conv.MustString(contractInfo.BreakAt, "")[0:19]
+		BreachPendingPreview.TerminateAt = conv.MustString(contractInfo.TerminateAt, "")[0:19]
+		BreachPendingPreviews = append(BreachPendingPreviews, BreachPendingPreview)
+	}
+	var BreachPendingData http_model.BreachPendingData
+	BreachPendingData.BreachPendingPreview = BreachPendingPreviews
+	BreachPendingData.Total = total
+	return &BreachPendingData, nil
+}
+
+func ContractBreach(ctx context.Context, req *http_model.ContractBreachRequest) error {
+	db := GetReadDB(ctx)
+	var breakType int
+	db.Model(gorm_model.YoungeeContractInfo{}).Select("break_type").Where("contract_id IN ?", req.ContractIds).Find(&breakType)
+	t := time.Now()
+	err := db.Debug().Where("contract_id IN ?", req.ContractIds).Updates(&gorm_model.YoungeeContractInfo{DefaultStatus: int(req.DefaultStatus), HandleAt: &t}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[ContractBreach] error query mysql total, err:%+v", err)
+		return err
+	}
+	var taskIds []string
+	db.Model(gorm_model.YoungeeContractInfo{}).Select("task_id").Where("contract_id IN ?", req.ContractIds).Find(&taskIds)
+	for _, taskId := range taskIds {
+		if req.DefaultStatus == 5 {
+			var taskInfo gorm_model.YoungeeTaskInfo
+			var enterpriseId string
+
+			db1 := GetReadDB(ctx)
+			db1.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Find(&taskInfo)
+
+			db2 := GetReadDB(ctx)
+			db2.Model(gorm_model.ProjectInfo{}).Select("enterprise_id").Where("project_id = ?", taskInfo.ProjectId).Find(&enterpriseId)
+
+			db3 := GetReadDB(ctx)
+			err := db3.Model(gorm_model.Enterprise{}).Where("enterprise_id = ?", enterpriseId).Updates(
+				map[string]interface{}{
+					"frozen_balance":    gorm.Expr("frozen_balance - ?", taskInfo.RealPayment),
+					"available_balance": gorm.Expr("available_balance + ?", taskInfo.RealPayment)}).Error
+			if err != nil {
+				logrus.WithContext(ctx).Errorf("[ContractBreach] error update Enterprise, err:%+v", err)
+				return err
+			}
+
+			db = GetReadDB(ctx)
+			db = db.Model(gorm_model.RecruitStrategy{}).Where("project_id = ? and strategy_id = ?", taskInfo.ProjectId, taskInfo.StrategyId)
+			err = db.Updates(map[string]interface{}{
+				"total_offer": gorm.Expr("total_offer + ?", taskInfo.RealPayment)}).Error
+			if err != nil {
+				logrus.WithContext(ctx).Errorf("[ContractBreach] error update RecruitStrategy, err:%+v", err)
+				return err
+			}
+
+			err = CreateTaskLog(context.Background(), taskInfo.TaskId, "解约时间")
+			if err != nil {
+				logrus.WithContext(context.Background()).Errorf("[ContractBreach] call CreateTaskLog error,err:%+v", err)
+			}
+
+			db4 := GetReadDB(ctx)
+			if breakType == 1 {
+				err = db4.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Updates(
+					map[string]interface{}{
+						"cur_default_type":  2,
+						"task_stage":        16,
+						"script_break_rate": 0}).Error
+				taskInfo.ScriptBreakRate = 0
+			} else if breakType == 2 {
+				err = db4.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Updates(
+					map[string]interface{}{
+						"cur_default_type":  4,
+						"task_stage":        16,
+						"sketch_break_rate": 0}).Error
+				taskInfo.SketchBreakRate = 0
+			} else if breakType == 3 {
+				err = db4.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Updates(
+					map[string]interface{}{
+						"cur_default_type": 6,
+						"task_stage":       16,
+						"link_break_rate":  0}).Error
+				taskInfo.LinkBreakRate = 0
+			} else if breakType == 4 {
+				err = db4.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Updates(
+					map[string]interface{}{
+						"cur_default_type": 8,
+						"task_stage":       16,
+						"data_break_rate":  0}).Error
+				taskInfo.DataBreakRate = 0
+			}
+			if err != nil {
+				logrus.WithContext(ctx).Errorf("[ContractBreach] error update YoungeeTaskInfo, err:%+v", err)
+				return err
+			}
+			settleAmount := taskInfo.TaskReward * (1.0 - float64(taskInfo.LinkBreakRate+taskInfo.DataBreakRate+taskInfo.SketchBreakRate+taskInfo.ScriptBreakRate+taskInfo.ErrBreakRate)/100)
+			if settleAmount <= 0 {
+				settleAmount = 0.0
+			}
+			db5 := GetReadDB(ctx)
+			err = db5.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Updates(
+				map[string]interface{}{"settle_amount": settleAmount, "withdraw_status": 2, "complete_status": 4, "complete_date": time.Now()}).Error
+			if err != nil {
+				logrus.WithContext(ctx).Errorf("[ContractBreach] error update YoungeeTaskInfo, err:%+v", err)
+				return err
+			}
+
+			err = SetProjectFinish(context.Background(), taskInfo.ProjectId)
+			if err != nil {
+				logrus.WithContext(ctx).Errorf("[ContractBreach] call SetProjectFinish error, err:%+v", err)
+				return err
+			}
+		} else {
+			db4 := GetReadDB(ctx)
+			if breakType == 1 {
+				err = db4.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Updates(gorm_model.YoungeeTaskInfo{CurDefaultType: 1}).Error
+			} else if breakType == 2 {
+				err = db4.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Updates(gorm_model.YoungeeTaskInfo{CurDefaultType: 3}).Error
+			} else if breakType == 3 {
+				err = db4.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Updates(gorm_model.YoungeeTaskInfo{CurDefaultType: 5}).Error
+			} else if breakType == 4 {
+				err = db4.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Updates(gorm_model.YoungeeTaskInfo{CurDefaultType: 7}).Error
+			}
+			if err != nil {
+				logrus.WithContext(ctx).Errorf("[ContractBreach] error update YoungeeTaskInfo, err:%+v", err)
+				return err
+			}
+		}
+	}
+	if req.DefaultStatus == 5 {
+		err = SetTalentIncome(context.Background(), taskIds)
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[ContractBreach] call SetTalentIncome error, err:%+v", err)
+			return err
+		}
+	}
+	return nil
+}
+
+func GetSketchInfoByTaskId(ctx context.Context, request *http_model.GetSketchInfoByTaskIdRequest) (*http_model.SketchInfoResponse, error) {
+	db := GetReadDB(ctx)
+	var sketchInfo gorm_model.YounggeeSketchInfo
+	db.Debug().Model(gorm_model.YounggeeSketchInfo{}).Where("task_id = ? AND is_ok = 1", request.TaskId).Find(&sketchInfo)
+	db2 := GetReadDB(ctx)
+	sketchPhotoInfo := gorm_model.YounggeeSketchPhoto{}
+	db2.Debug().Model(gorm_model.YounggeeSketchPhoto{}).Where("sketch_id = ?", sketchInfo.SketchID).Find(&sketchPhotoInfo)
+	data := new(http_model.SketchInfoResponse)
+	data.Type = int32(sketchPhotoInfo.Symbol)
+	data.PhotoUrl = sketchPhotoInfo.PhotoUrl
+	data.Content = sketchInfo.Content
+	data.Title = sketchInfo.Title
+	return data, nil
+}
+
+func BreachHandled(ctx context.Context, pageSize, pageNum int32, req *http_model.BreachHandledRequest, conditions *common_model.BreachHandledConditions) (*http_model.BreachHandledData, error) {
+	db := GetReadDB(ctx)
+	var contractInfos []*gorm_model.YoungeeContractInfo
+	db = db.Model(gorm_model.YoungeeContractInfo{}).Where("default_status = 4 OR default_status = 5")
+	// 根据Project条件过滤
+	conditionType := reflect.TypeOf(conditions).Elem()
+	conditionValue := reflect.ValueOf(conditions).Elem()
+	for i := 0; i < conditionType.NumField(); i++ {
+		field := conditionType.Field(i)
+		tag := field.Tag.Get("condition")
+		value := conditionValue.FieldByName(field.Name)
+		if !util.IsBlank(value) {
+			db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+		}
+	}
+	if req.TaskId != "" {
+		db = db.Where("task_id = ?", req.TaskId)
+	}
+	var findProjectIds []string
+	if req.ProjectName != "" {
+		db1 := GetReadDB(ctx)
+		db1.Model(gorm_model.ProjectInfo{}).Select("project_id").Where("project_name = ?", req.ProjectName).Find(&findProjectIds)
+		var findTaskIds []string
+		db2 := GetReadDB(ctx)
+		db2.Model(gorm_model.YoungeeTaskInfo{}).Select("task_id").Where("project_id IN ?", findProjectIds).Find(&findTaskIds)
+		db = db.Where("task_id IN ?", findTaskIds)
+	}
+	// 查询总数
+	var total int64
+	if err := db.Count(&total).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[BreachHandled] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	// 查询该页数据
+	limit := pageSize
+	offset := pageSize * pageNum // assert pageNum start with 0
+	err := db.Order("terminate_at").Limit(int(limit)).Offset(int(offset)).Find(&contractInfos).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[BreachHandled] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+
+	var taskIds []string
+	for _, contractInfo := range contractInfos {
+		taskIds = append(taskIds, contractInfo.TaskID)
+	}
+	taskIds = util.RemoveStrRepByMap(taskIds)
+	taskIdToProjectMap := make(map[string]string)
+	taskIdToTalentIdMap := make(map[string]string)
+	taskIdToTaskInfoMap := make(map[string]gorm_model.YoungeeTaskInfo)
+	var projectIds []string
+	for _, taskId := range taskIds {
+		db1 := GetReadDB(ctx)
+		var taskInfo gorm_model.YoungeeTaskInfo
+		db1.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Find(&taskInfo)
+		taskIdToProjectMap[taskId] = taskInfo.ProjectId
+		taskIdToTalentIdMap[taskId] = taskInfo.TalentId
+		taskIdToTaskInfoMap[taskId] = taskInfo
+		projectIds = append(projectIds, taskInfo.ProjectId)
+	}
+	projectIds = util.RemoveStrRepByMap(projectIds)
+	var enterpriseIds []string
+	projectIdToProjectInfoMap := make(map[string]gorm_model.ProjectInfo)
+	for _, projectId := range projectIds {
+		db1 := GetReadDB(ctx)
+		projectInfo := gorm_model.ProjectInfo{}
+		db1.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectId).Find(&projectInfo)
+		projectIdToProjectInfoMap[projectInfo.ProjectID] = projectInfo
+		enterpriseIds = append(enterpriseIds, projectInfo.EnterpriseID)
+	}
+	enterpriseIds = util.RemoveStrRepByMap(enterpriseIds)
+	enterpriseIdToUserId := make(map[string]int64)
+	var userIds []int64
+	for _, enterpriseId := range enterpriseIds {
+		db1 := GetReadDB(ctx)
+		var userId int64
+		db1.Model(gorm_model.Enterprise{}).Select("user_id").Where("enterprise_id = ?", enterpriseId).Find(&userId)
+		enterpriseIdToUserId[enterpriseId] = userId
+		userIds = append(userIds, userId)
+	}
+	userIdToUserPhone := make(map[int64]string)
+	for _, userId := range userIds {
+		db1 := GetReadDB(ctx)
+		var userPhone string
+		db1.Model(gorm_model.YounggeeUser{}).Select("phone").Where("id = ?", userId).Find(&userPhone)
+		userIdToUserPhone[userId] = userPhone
+	}
+	talentIdToTalentPhoneMap := make(map[string]string)
+	for _, v := range taskIdToTalentIdMap {
+		if len(talentIdToTalentPhoneMap) == 0 {
+			db1 := GetReadDB(ctx)
+			var talentPhoneNumber string
+			db1.Model(gorm_model.YoungeeTalentInfo{}).Select("talent_phone_number").Where("id = ?", v).Find(&talentPhoneNumber)
+			talentIdToTalentPhoneMap[v] = talentPhoneNumber
+		}
+		if _, ok := talentIdToTalentPhoneMap[v]; !ok {
+			db1 := GetReadDB(ctx)
+			var talentPhoneNumber string
+			db1.Model(gorm_model.YoungeeTalentInfo{}).Select("talent_phone_number").Where("id = ?", v).Find(&talentPhoneNumber)
+			talentIdToTalentPhoneMap[v] = talentPhoneNumber
+		}
+	}
+	var BreachHandledPreviews []*http_model.BreachHandledPreview
+	for _, contractInfo := range contractInfos {
+		BreachHandledPreview := new(http_model.BreachHandledPreview)
+		BreachHandledPreview.ContractId = int32(contractInfo.ContractID)
+		BreachHandledPreview.ProjectId = taskIdToProjectMap[contractInfo.TaskID]
+		BreachHandledPreview.UserId = projectIdToProjectInfoMap[taskIdToProjectMap[contractInfo.TaskID]].EnterpriseID
+		BreachHandledPreview.ProjectName = projectIdToProjectInfoMap[taskIdToProjectMap[contractInfo.TaskID]].ProjectName
+		BreachHandledPreview.UserPhone = userIdToUserPhone[enterpriseIdToUserId[projectIdToProjectInfoMap[taskIdToProjectMap[contractInfo.TaskID]].EnterpriseID]]
+		BreachHandledPreview.TaskId = contractInfo.TaskID
+		BreachHandledPreview.TalentId = taskIdToTalentIdMap[contractInfo.TaskID]
+		BreachHandledPreview.TalentPhone = talentIdToTalentPhoneMap[taskIdToTalentIdMap[contractInfo.TaskID]]
+		BreachHandledPreview.TerminateReason = consts.GetBreakType(contractInfo.BreakType)
+		BreachHandledPreview.HandleResult = consts.GetHandleResult(contractInfo.DefaultStatus)
+		BreachHandledPreview.HandleAt = conv.MustString(contractInfo.HandleAt, "")[0:19]
+		BreachHandledPreviews = append(BreachHandledPreviews, BreachHandledPreview)
+	}
+	var BreachHandledData http_model.BreachHandledData
+	BreachHandledData.BreachHandledPreview = BreachHandledPreviews
+	BreachHandledData.Total = total
+	return &BreachHandledData, nil
+}
+
+func GetTaskDefaultReviewList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskDefaultReviewInfo, int64, error) {
+	db := GetReadDB(ctx)
+	// 查询Task表信息
+	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
+	// 根据Project条件过滤
+	conditionType := reflect.TypeOf(conditions).Elem()
+	conditionValue := reflect.ValueOf(conditions).Elem()
+	var platform_nickname string = ""
+	for i := 0; i < conditionType.NumField(); i++ {
+		field := conditionType.Field(i)
+		tag := field.Tag.Get("condition")
+		value := conditionValue.FieldByName(field.Name)
+		if tag == "default_status" {
+			fmt.Printf("default %+v", value.Interface() == int64(0))
+			if value.Interface() == int64(0) {
+				db = db.Where("cur_default_type = 1")
+			} else if value.Interface() == int64(1) {
+				db = db.Where("cur_default_type = 3")
+			} else if value.Interface() == int64(2) {
+				db = db.Where("cur_default_type = 5")
+			}
+			continue
+		} else if !util.IsBlank(value) {
+			if tag == "platform_nickname" {
+				platform_nickname = fmt.Sprintf("%v", value.Interface())
+				continue
+			} else if tag == "project_id" || tag == "strategy_id" {
+				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+			}
+		}
+	}
+	var taskInfos []gorm_model.YoungeeTaskInfo
+	db = db.Model(gorm_model.YoungeeTaskInfo{})
+	// 查询总数
+	var totalTask int64
+	if err := db.Count(&totalTask).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	db.Order("task_id").Find(&taskInfos)
+
+	// 查询任务id
+	var taskIds []string
+	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
+	for _, taskInfo := range taskInfos {
+		taskIds = append(taskIds, taskInfo.TaskId)
+		taskMap[taskInfo.TaskId] = taskInfo
+	}
+	db1 := GetReadDB(ctx)
+	db1 = db1.Debug().Model(gorm_model.YoungeeContractInfo{})
+
+	var DefaultReviewInfos []gorm_model.YoungeeContractInfo
+	db1 = db1.Model(gorm_model.YoungeeContractInfo{}).Where("task_id IN ? AND (default_status = 1 OR default_status = 4)", taskIds)
+	err := db1.Find(&DefaultReviewInfos).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	DefaultReviewMap := make(map[string]gorm_model.YoungeeContractInfo)
+	for _, DefaultReviewInfo := range DefaultReviewInfos {
+		DefaultReviewMap[DefaultReviewInfo.TaskID] = DefaultReviewInfo
+	}
+	// 查询总数
+	var totalDefaultReview int64
+	if err := db1.Count(&totalDefaultReview).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+
+	// 查询该页数据
+	limit := pageSize
+	offset := pageSize * pageNum // assert pageNum start with 0
+	err = db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
+
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+
+	var TaskDefaultReviews []*http_model.TaskDefaultReview
+	var taskDefaultReviews []*http_model.TaskDefaultReviewInfo
+	var newTaskDefaultReviews []*http_model.TaskDefaultReviewInfo
+	for _, taskId := range taskIds {
+		TaskDefaultReview := new(http_model.TaskDefaultReview)
+		TaskDefaultReview.Talent = taskMap[taskId]
+		TaskDefaultReview.Default = DefaultReviewMap[taskId]
+		TaskDefaultReviews = append(TaskDefaultReviews, TaskDefaultReview)
+	}
+
+	taskDefaultReviews = pack.TaskDefaultReviewToTaskInfo(TaskDefaultReviews)
+
+	for _, v := range taskDefaultReviews {
+		if platform_nickname == "" {
+			newTaskDefaultReviews = append(newTaskDefaultReviews, v)
+		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
+			newTaskDefaultReviews = append(newTaskDefaultReviews, v)
+		} else if strings.Contains(conv.MustString(v.TaskID, ""), platform_nickname) {
+			newTaskDefaultReviews = append(newTaskDefaultReviews, v)
+		} else {
+			totalTask--
+		}
+	}
+	return newTaskDefaultReviews, totalTask, nil
+}
+
+func GetTaskDefaultDataList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskDefaultDataInfo, int64, error) {
+	db := GetReadDB(ctx)
+	// 查询Task表信息
+	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
+	// 根据Project条件过滤
+	conditionType := reflect.TypeOf(conditions).Elem()
+	conditionValue := reflect.ValueOf(conditions).Elem()
+	var platform_nickname string = ""
+	for i := 0; i < conditionType.NumField(); i++ {
+		field := conditionType.Field(i)
+		tag := field.Tag.Get("condition")
+		value := conditionValue.FieldByName(field.Name)
+		if tag == "default_status" {
+			if value.Interface() == int64(3) {
+				db = db.Where("cur_default_type = 7")
+			}
+			continue
+		} else if !util.IsBlank(value) {
+			if tag == "platform_nickname" {
+				platform_nickname = fmt.Sprintf("%v", value.Interface())
+				continue
+			} else if tag == "project_id" || tag == "strategy_id" {
+				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+			}
+		}
+	}
+	var taskInfos []gorm_model.YoungeeTaskInfo
+	db = db.Model(gorm_model.YoungeeTaskInfo{})
+	// 查询总数
+	var totalTask int64
+	if err := db.Count(&totalTask).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	db.Order("task_id").Find(&taskInfos)
+
+	// 查询任务id
+	var taskIds []string
+	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
+	for _, taskInfo := range taskInfos {
+		taskIds = append(taskIds, taskInfo.TaskId)
+		taskMap[taskInfo.TaskId] = taskInfo
+	}
+	db1 := GetReadDB(ctx)
+	db1 = db1.Debug().Model(gorm_model.YoungeeContractInfo{})
+
+	var DefaultDataInfos []gorm_model.YoungeeContractInfo
+	db1 = db1.Model(gorm_model.YoungeeContractInfo{}).Where("task_id IN ? AND (default_status = 1 OR default_status = 4)", taskIds)
+	err := db1.Find(&DefaultDataInfos).Error
+	DefaultDataMap := make(map[string]gorm_model.YoungeeContractInfo)
+	for _, DefaultDataInfo := range DefaultDataInfos {
+		DefaultDataMap[DefaultDataInfo.TaskID] = DefaultDataInfo
+	}
+
+	var LinkInfos []gorm_model.YounggeeLinkInfo
+	db2 := GetReadDB(ctx)
+	db2 = db2.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id IN ? AND is_ok = 1", taskIds).Find(&LinkInfos)
+	LinkMap := make(map[string]gorm_model.YounggeeLinkInfo)
+	for _, LinkInfo := range LinkInfos {
+		LinkMap[LinkInfo.TaskID] = LinkInfo
+	}
+
+	// 查询总数
+	var totalDefaultData int64
+	if err := db2.Count(&totalDefaultData).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+
+	// 查询该页数据
+	limit := pageSize
+	offset := pageSize * pageNum // assert pageNum start with 0
+	err = db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
+
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+
+	var TaskDefaultDatas []*http_model.TaskDefaultData
+	var taskDefaultDatas []*http_model.TaskDefaultDataInfo
+	var newTaskDefaultDatas []*http_model.TaskDefaultDataInfo
+	for _, taskId := range taskIds {
+		TaskDefaultData := new(http_model.TaskDefaultData)
+		TaskDefaultData.Talent = taskMap[taskId]
+		TaskDefaultData.Default = DefaultDataMap[taskId]
+		TaskDefaultData.Link = LinkMap[taskId]
+		TaskDefaultDatas = append(TaskDefaultDatas, TaskDefaultData)
+	}
+
+	taskDefaultDatas = pack.TaskDefaultDataToTaskInfo(TaskDefaultDatas)
+
+	for _, v := range taskDefaultDatas {
+		if platform_nickname == "" {
+			newTaskDefaultDatas = append(newTaskDefaultDatas, v)
+		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
+			newTaskDefaultDatas = append(newTaskDefaultDatas, v)
+		} else if strings.Contains(conv.MustString(v.TaskID, ""), platform_nickname) {
+			newTaskDefaultDatas = append(newTaskDefaultDatas, v)
+		} else {
+			totalTask--
+		}
+	}
+	return newTaskDefaultDatas, totalTask, nil
+}
+
+func GetTaskTerminatingList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskTerminatingInfo, int64, error) {
+	db := GetReadDB(ctx)
+	var taskIds1 []string
+	var totalTerminating int64
+	var TerminatingInfos []gorm_model.YoungeeContractInfo
+	db = db.Model(gorm_model.YoungeeContractInfo{})
+	err := db.Where("default_status = 3 AND project_id = ?", projectID).Find(&TerminatingInfos).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetTaskTerminatingList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	TerminatingMap := make(map[string]gorm_model.YoungeeContractInfo)
+	for _, TerminatingInfo := range TerminatingInfos {
+		taskIds1 = append(taskIds1, TerminatingInfo.TaskID)
+		TerminatingMap[TerminatingInfo.TaskID] = TerminatingInfo
+	}
+
+	if err := db.Count(&totalTerminating).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetTaskTerminatingList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+
+	db1 := GetReadDB(ctx)
+	// 查询Task表信息
+	db1 = db1.Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2 and task_id in ?", taskIds1)
+	// 根据Project条件过滤
+	conditionType := reflect.TypeOf(conditions).Elem()
+	conditionValue := reflect.ValueOf(conditions).Elem()
+	var platform_nickname string = ""
+	for i := 0; i < conditionType.NumField(); i++ {
+		field := conditionType.Field(i)
+		tag := field.Tag.Get("condition")
+		value := conditionValue.FieldByName(field.Name)
+		if tag == "default_status" {
+			if value.Interface() == int64(4) {
+				db1 = db1.Where("cur_default_type = 9")
+			}
+			continue
+		} else if !util.IsBlank(value) {
+			if tag == "platform_nickname" {
+				platform_nickname = fmt.Sprintf("%v", value.Interface())
+				continue
+			} else if tag == "project_id" || tag == "strategy_id" {
+				if tag == "strategy_id" {
+					fmt.Println("strategy_id:", value.Interface())
+				}
+				db1 = db1.Debug().Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+			}
+		}
+	}
+	var taskInfos []gorm_model.YoungeeTaskInfo
+	// db1 = db1.Model(gorm_model.YoungeeTaskInfo{})
+	// 查询总数
+	var totalTask int64
+	if err := db1.Count(&totalTask).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetTaskTerminatingList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	db1.Order("task_id").Find(&taskInfos)
+
+	// 查询任务id
+	var taskIds []string
+	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
+	for _, taskInfo := range taskInfos {
+		taskIds = append(taskIds, taskInfo.TaskId)
+		taskMap[taskInfo.TaskId] = taskInfo
+	}
+	var misNum int64
+	if totalTerminating > totalTask {
+		misNum = totalTerminating - totalTask
+	} else {
+		misNum = totalTask - totalTerminating
+	}
+	//logrus.Println("totalTerminating,totalTalent,misNum:", totalTerminating, totalTask, misNum)
+
+	// 查询该页数据
+	limit := pageSize + misNum
+	offset := pageSize * pageNum // assert pageNum start with 0
+	err = db1.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
+
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetTaskTerminatingList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+
+	var TaskTerminatings []*http_model.TaskTerminating
+	var taskTerminatings []*http_model.TaskTerminatingInfo
+	var newTaskTerminatings []*http_model.TaskTerminatingInfo
+	for _, taskId := range taskIds {
+		TaskTerminating := new(http_model.TaskTerminating)
+		TaskTerminating.Talent = taskMap[taskId]
+		TaskTerminating.Default = TerminatingMap[taskId]
+		TaskTerminatings = append(TaskTerminatings, TaskTerminating)
+	}
+
+	taskTerminatings = pack.TaskTerminatingToTaskInfo(TaskTerminatings)
+
+	for _, v := range taskTerminatings {
+		if platform_nickname == "" {
+			newTaskTerminatings = append(newTaskTerminatings, v)
+		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
+			newTaskTerminatings = append(newTaskTerminatings, v)
+		} else if strings.Contains(conv.MustString(v.TaskID, ""), platform_nickname) {
+			newTaskTerminatings = append(newTaskTerminatings, v)
+		} else {
+			totalTask--
+		}
+	}
+	return newTaskTerminatings, totalTask, nil
+}
+
+func GetTaskTerminatedList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskTerminatedInfo, int64, error) {
+	db := GetReadDB(ctx)
+	// 查询Task表信息
+	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
+	// 根据Project条件过滤
+	conditionType := reflect.TypeOf(conditions).Elem()
+	conditionValue := reflect.ValueOf(conditions).Elem()
+	var platformNickname string = ""
+	for i := 0; i < conditionType.NumField(); i++ {
+		field := conditionType.Field(i)
+		tag := field.Tag.Get("condition")
+		value := conditionValue.FieldByName(field.Name)
+		if tag == "default_status" {
+			fmt.Printf("default %+v", value.Interface() == int64(0))
+			if value.Interface() == int64(5) {
+				db = db.Where("complete_status = 4")
+			}
+			continue
+		} else if !util.IsBlank(value) {
+			if tag == "platform_nickname" {
+				platformNickname = fmt.Sprintf("%v", value.Interface())
+				continue
+			} else if tag == "project_id" || tag == "strategy_id" {
+				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+			}
+		}
+	}
+	var taskInfos []gorm_model.YoungeeTaskInfo
+	db = db.Model(gorm_model.YoungeeTaskInfo{})
+	// 查询总数
+	var totalTask int64
+	if err := db.Count(&totalTask).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetTaskTerminatedList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	db.Order("task_id").Find(&taskInfos)
+
+	// 查询任务id
+	var taskIds []string
+	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
+	for _, taskInfo := range taskInfos {
+		taskIds = append(taskIds, taskInfo.TaskId)
+		taskMap[taskInfo.TaskId] = taskInfo
+	}
+	db1 := GetReadDB(ctx)
+	db1 = db1.Debug().Model(gorm_model.YoungeeContractInfo{})
+	var TerminatedInfos []gorm_model.YoungeeContractInfo
+	db1 = db1.Model(gorm_model.YoungeeContractInfo{}).Where("task_id IN ? AND (default_status = 1 OR default_status = 5)", taskIds)
+	err1 := db1.Find(&TerminatedInfos).Error
+	if err1 != nil {
+		logrus.WithContext(ctx).Errorf("[GetTaskTerminatedList] error query mysql find, err:%+v", err1)
+		return nil, 0, err1
+	}
+	TerminatedMap := make(map[string]gorm_model.YoungeeContractInfo)
+	for _, TerminatedInfo := range TerminatedInfos {
+		fmt.Printf("TerminatedInfo%#v", TerminatedInfo)
+		TerminatedMap[TerminatedInfo.TaskID] = TerminatedInfo
+	}
+	// 查询总数
+	var totalTerminated int64
+	if err := db1.Count(&totalTerminated).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetTaskTerminatedList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	// 查询该页数据
+	limit := pageSize
+	offset := pageSize * pageNum // assert pageNum start with 0
+	err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
+
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetTaskTerminatedList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+
+	var TaskTerminateds []*http_model.TaskTerminated
+	var taskTerminateds []*http_model.TaskTerminatedInfo
+	var newTaskTerminateds []*http_model.TaskTerminatedInfo
+	for _, taskId := range taskIds {
+		TaskTerminated := new(http_model.TaskTerminated)
+		TaskTerminated.Talent = taskMap[taskId]
+		TaskTerminated.Default = TerminatedMap[taskId]
+		TaskTerminateds = append(TaskTerminateds, TaskTerminated)
+	}
+
+	taskTerminateds = pack.TaskTerminatedToTaskInfo(TaskTerminateds)
+
+	for _, v := range taskTerminateds {
+		if platformNickname == "" {
+			newTaskTerminateds = append(newTaskTerminateds, v)
+		} else if strings.Contains(v.PlatformNickname, platformNickname) {
+			newTaskTerminateds = append(newTaskTerminateds, v)
+		} else if strings.Contains(conv.MustString(v.TaskID, ""), platformNickname) {
+			newTaskTerminateds = append(newTaskTerminateds, v)
+		} else {
+			totalTask--
+		}
+	}
+	return newTaskTerminateds, totalTask, nil
+}

+ 155 - 155
db/enterprise.go

@@ -1,155 +1,155 @@
-package db
-
-import (
-	"context"
-	"fmt"
-	"github.com/caixw/lib.go/conv"
-	log "github.com/sirupsen/logrus"
-	"gorm.io/gorm"
-	"time"
-	"youngee_m_api/model/gorm_model"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/util"
-)
-
-//企业ID查找
-func GetEnterpriseByEnterpriseID(ctx context.Context, EnterpriseID string) (*gorm_model.Enterprise, error) {
-	db := GetReadDB(ctx)
-	enterprise := gorm_model.Enterprise{}
-	err := db.Where("enterprise_id = ?", EnterpriseID).First(&enterprise).Error
-	if err != nil {
-		if err == gorm.ErrRecordNotFound {
-			return nil, nil
-		} else {
-			return nil, err
-		}
-	}
-	return &enterprise, nil
-}
-
-// 支付-修改企业账户余额
-func UpdateEnterpriseBalance(ctx context.Context, EnterpriseID string, balance float64, availableBalance float64, frozenBalance float64) (*float64, error) {
-	db := GetReadDB(ctx)
-	err := db.Model(gorm_model.Enterprise{}).Where("enterprise_id", EnterpriseID).
-		Updates(map[string]interface{}{"balance": gorm.Expr("balance + ?", balance), "available_balance": gorm.Expr("available_balance + ?", availableBalance), "frozen_balance": gorm.Expr("frozen_balance + ?", frozenBalance)}).Error
-	if err != nil {
-		return nil, err
-	}
-	enterprise := gorm_model.Enterprise{}
-	err = db.Model(gorm_model.Enterprise{}).Where("enterprise_id", EnterpriseID).Scan(&enterprise).Error
-	if err != nil {
-		return nil, err
-	}
-
-	return &enterprise.Balance, nil
-}
-
-func MakeRechargeId(ctx context.Context, EnterpriseID string) string {
-	db := GetReadDB(ctx)
-	// 1、年月日
-	year := time.Now().Year()
-	month := time.Now().Month()
-	day := time.Now().Day()
-	yearData, _ := util.GetDayNum("year", year)
-	monthData, _ := util.GetDayNum("month", int(month))
-	dayData, _ := util.GetDayNum("day", day)
-	sum := 0
-	sum += dayData + monthData
-	leap := 0
-	if (yearData%400 == 0) || ((yearData%4 == 0) && (yearData%100 != 0)) {
-		leap = 1
-	}
-	if (leap == 1) && (monthData > 2) {
-		sum += 1
-	}
-	last := ""
-	rechargeIdPrefix := "8" + EnterpriseID[len(EnterpriseID)-2:] + conv.MustString(sum, "")
-	var rechargeIdLast string
-	err := db.Model(gorm_model.YounggeeRechargeRecord{}).Select("recharge_id").Where("recharge_id like ?", rechargeIdPrefix+"%").
-		Last(&rechargeIdLast).Error
-	if err != nil {
-		last = "0"
-	} else {
-		last = rechargeIdLast[len(rechargeIdLast)-2:]
-	}
-	var lastInt int
-	lastInt = conv.MustInt(last, 0)
-	if lastInt+1 < 10 {
-		last = "0" + conv.MustString(conv.MustInt(last, 0)+1, "")
-	} else {
-		last = conv.MustString(conv.MustInt(last, 0)+1, "")
-	}
-	return rechargeIdPrefix + last
-}
-
-// RechargeAmount 在线充值
-func RechargeAmount(ctx context.Context, EnterpriseID string, Amount float64, phone string) error {
-	db := GetReadDB(ctx)
-	fmt.Println("Amount前:", Amount)
-	err := db.Model(gorm_model.Enterprise{}).Where("enterprise_id", EnterpriseID).
-		Updates(map[string]interface{}{"balance": gorm.Expr("balance + ?", Amount), "available_balance": gorm.Expr("available_balance + ?", Amount)}).Error
-	if err != nil {
-		return err
-	}
-	rechargeId := MakeRechargeId(ctx, EnterpriseID)
-	err = db.Model(gorm_model.YounggeeRechargeRecord{}).Create(&gorm_model.YounggeeRechargeRecord{
-		RechargeID:         rechargeId,
-		RechargeAmount:     Amount,
-		EnterpriseID:       EnterpriseID,
-		Status:             2,
-		InvoiceStatus:      2,
-		CommitAt:           time.Now(),
-		RechargeMethod:     3,
-		TransferVoucherUrl: "--",
-		Phone:              phone,
-		ConfirmAt:          time.Now(),
-	}).Error
-	if err != nil {
-		return err
-	}
-	return nil
-}
-
-// TransferToPublic 对公转账
-func TransferToPublic(ctx context.Context, Amount float64, EnterpriseID string, transferVoucherUrl string) error {
-	phone := GetPhoneByEnterpriseID(ctx, EnterpriseID)
-	db := GetReadDB(ctx)
-	rechargeId := MakeRechargeId(ctx, EnterpriseID)
-	fmt.Println("Amount:", Amount)
-	err := db.Model(gorm_model.YounggeeRechargeRecord{}).Create(&gorm_model.YounggeeRechargeRecord{
-		RechargeID:         rechargeId,
-		RechargeAmount:     Amount,
-		EnterpriseID:       EnterpriseID,
-		Status:             1,
-		InvoiceStatus:      1,
-		CommitAt:           time.Now(),
-		Phone:              phone,
-		RechargeMethod:     1,
-		TransferVoucherUrl: transferVoucherUrl,
-		ConfirmAt:          time.Now(),
-	}).Error
-	if err != nil {
-		return err
-	}
-	db1 := GetReadDB(ctx)
-	err = db1.Model(gorm_model.Enterprise{}).Where("enterprise_id = ?", EnterpriseID).Updates(
-		map[string]interface{}{"recharging": gorm.Expr("recharging + ?", Amount)}).Error
-	if err != nil {
-		log.Println("[TransferToPublic] recharging modify failed:", err)
-		return err
-	}
-	return nil
-}
-
-func GetEnterpriseBalance(ctx context.Context, enterpriseId string) (*http_model.BalanceData, error) {
-	db := GetReadDB(ctx)
-	var Balance float64
-	err := db.Model(&gorm_model.Enterprise{}).Select("balance").Where("enterprise_id = ?", enterpriseId).Find(&Balance).Error
-	if err != nil {
-		log.Println("[TransferToPublic] recharging modify failed:", err)
-		return nil, err
-	}
-	BalanceData := new(http_model.BalanceData)
-	BalanceData.Balance = Balance
-	return BalanceData, nil
-}
+package db
+
+import (
+	"context"
+	"fmt"
+	"github.com/caixw/lib.go/conv"
+	log "github.com/sirupsen/logrus"
+	"gorm.io/gorm"
+	"time"
+	"youngee_m_api/model/gorm_model"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/util"
+)
+
+//企业ID查找
+func GetEnterpriseByEnterpriseID(ctx context.Context, EnterpriseID string) (*gorm_model.Enterprise, error) {
+	db := GetReadDB(ctx)
+	enterprise := gorm_model.Enterprise{}
+	err := db.Where("enterprise_id = ?", EnterpriseID).First(&enterprise).Error
+	if err != nil {
+		if err == gorm.ErrRecordNotFound {
+			return nil, nil
+		} else {
+			return nil, err
+		}
+	}
+	return &enterprise, nil
+}
+
+// 支付-修改企业账户余额
+func UpdateEnterpriseBalance(ctx context.Context, EnterpriseID string, balance float64, availableBalance float64, frozenBalance float64) (*float64, error) {
+	db := GetReadDB(ctx)
+	err := db.Model(gorm_model.Enterprise{}).Where("enterprise_id", EnterpriseID).
+		Updates(map[string]interface{}{"balance": gorm.Expr("balance + ?", balance), "available_balance": gorm.Expr("available_balance + ?", availableBalance), "frozen_balance": gorm.Expr("frozen_balance + ?", frozenBalance)}).Error
+	if err != nil {
+		return nil, err
+	}
+	enterprise := gorm_model.Enterprise{}
+	err = db.Model(gorm_model.Enterprise{}).Where("enterprise_id", EnterpriseID).Scan(&enterprise).Error
+	if err != nil {
+		return nil, err
+	}
+
+	return &enterprise.Balance, nil
+}
+
+func MakeRechargeId(ctx context.Context, EnterpriseID string) string {
+	db := GetReadDB(ctx)
+	// 1、年月日
+	year := time.Now().Year()
+	month := time.Now().Month()
+	day := time.Now().Day()
+	yearData, _ := util.GetDayNum("year", year)
+	monthData, _ := util.GetDayNum("month", int(month))
+	dayData, _ := util.GetDayNum("day", day)
+	sum := 0
+	sum += dayData + monthData
+	leap := 0
+	if (yearData%400 == 0) || ((yearData%4 == 0) && (yearData%100 != 0)) {
+		leap = 1
+	}
+	if (leap == 1) && (monthData > 2) {
+		sum += 1
+	}
+	last := ""
+	rechargeIdPrefix := "8" + EnterpriseID[len(EnterpriseID)-2:] + conv.MustString(sum, "")
+	var rechargeIdLast string
+	err := db.Model(gorm_model.YounggeeRechargeRecord{}).Select("recharge_id").Where("recharge_id like ?", rechargeIdPrefix+"%").
+		Last(&rechargeIdLast).Error
+	if err != nil {
+		last = "0"
+	} else {
+		last = rechargeIdLast[len(rechargeIdLast)-2:]
+	}
+	var lastInt int
+	lastInt = conv.MustInt(last, 0)
+	if lastInt+1 < 10 {
+		last = "0" + conv.MustString(conv.MustInt(last, 0)+1, "")
+	} else {
+		last = conv.MustString(conv.MustInt(last, 0)+1, "")
+	}
+	return rechargeIdPrefix + last
+}
+
+// RechargeAmount 在线充值
+func RechargeAmount(ctx context.Context, EnterpriseID string, Amount float64, phone string) error {
+	db := GetReadDB(ctx)
+	fmt.Println("Amount前:", Amount)
+	err := db.Model(gorm_model.Enterprise{}).Where("enterprise_id", EnterpriseID).
+		Updates(map[string]interface{}{"balance": gorm.Expr("balance + ?", Amount), "available_balance": gorm.Expr("available_balance + ?", Amount)}).Error
+	if err != nil {
+		return err
+	}
+	rechargeId := MakeRechargeId(ctx, EnterpriseID)
+	err = db.Model(gorm_model.YounggeeRechargeRecord{}).Create(&gorm_model.YounggeeRechargeRecord{
+		RechargeID:         rechargeId,
+		RechargeAmount:     Amount,
+		EnterpriseID:       EnterpriseID,
+		Status:             2,
+		InvoiceStatus:      2,
+		CommitAt:           time.Now(),
+		RechargeMethod:     3,
+		TransferVoucherUrl: "--",
+		Phone:              phone,
+		ConfirmAt:          time.Now(),
+	}).Error
+	if err != nil {
+		return err
+	}
+	return nil
+}
+
+// TransferToPublic 对公转账
+func TransferToPublic(ctx context.Context, Amount float64, EnterpriseID string, transferVoucherUrl string) error {
+	phone := GetPhoneByEnterpriseID(ctx, EnterpriseID)
+	db := GetReadDB(ctx)
+	rechargeId := MakeRechargeId(ctx, EnterpriseID)
+	fmt.Println("Amount:", Amount)
+	err := db.Model(gorm_model.YounggeeRechargeRecord{}).Create(&gorm_model.YounggeeRechargeRecord{
+		RechargeID:         rechargeId,
+		RechargeAmount:     Amount,
+		EnterpriseID:       EnterpriseID,
+		Status:             1,
+		InvoiceStatus:      1,
+		CommitAt:           time.Now(),
+		Phone:              phone,
+		RechargeMethod:     1,
+		TransferVoucherUrl: transferVoucherUrl,
+		ConfirmAt:          time.Now(),
+	}).Error
+	if err != nil {
+		return err
+	}
+	db1 := GetReadDB(ctx)
+	err = db1.Model(gorm_model.Enterprise{}).Where("enterprise_id = ?", EnterpriseID).Updates(
+		map[string]interface{}{"recharging": gorm.Expr("recharging + ?", Amount)}).Error
+	if err != nil {
+		log.Println("[TransferToPublic] recharging modify failed:", err)
+		return err
+	}
+	return nil
+}
+
+func GetEnterpriseBalance(ctx context.Context, enterpriseId string) (*http_model.BalanceData, error) {
+	db := GetReadDB(ctx)
+	var Balance float64
+	err := db.Model(&gorm_model.Enterprise{}).Select("balance").Where("enterprise_id = ?", enterpriseId).Find(&Balance).Error
+	if err != nil {
+		log.Println("[TransferToPublic] recharging modify failed:", err)
+		return nil, err
+	}
+	BalanceData := new(http_model.BalanceData)
+	BalanceData.Balance = Balance
+	return BalanceData, nil
+}

+ 438 - 438
db/finance.go

@@ -1,438 +1,438 @@
-package db
-
-import (
-	"context"
-	"fmt"
-	"reflect"
-	"strconv"
-	"strings"
-	"time"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/common_model"
-	"youngee_m_api/model/gorm_model"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/util"
-
-	"github.com/caixw/lib.go/conv"
-	"github.com/sirupsen/logrus"
-	"gorm.io/gorm"
-)
-
-func GetWithdrawRecords(ctx context.Context, pageSize, pageNum int32, req *http_model.WithdrawalRecordsRequest, condition *common_model.WithdrawRecordsCondition) (*http_model.WithdrawalRecordsPreview, error) {
-	db := GetReadDB(ctx)
-	var withdrawRecords []*gorm_model.YounggeeWithdrawRecord
-	db = db.Debug().Model(gorm_model.YounggeeWithdrawRecord{})
-	conditionType := reflect.TypeOf(condition).Elem()
-	conditionValue := reflect.ValueOf(condition).Elem()
-	for i := 0; i < conditionType.NumField(); i++ {
-		field := conditionType.Field(i)
-		tag := field.Tag.Get("condition")
-		value := conditionValue.FieldByName(field.Name)
-		if tag == "submit_at" && value.Interface() != "" {
-			db = db.Where(fmt.Sprintf("submit_at like '%s%%'", value.Interface()))
-		}
-		if tag == "withdraw_at" && value.Interface() != "" {
-			db = db.Where(fmt.Sprintf("withdraw_at like '%s%%'", value.Interface()))
-		}
-		if !util.IsBlank(value) && tag != "submit_at" && tag != "withdraw_at" {
-			db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-		}
-	}
-	if req.TalentName != "" {
-		fmt.Println("TalentName:", req.TalentName)
-		db1 := GetReadDB(ctx)
-		var talentId string
-		db1.Model(gorm_model.YoungeeTalentInfo{}).Select("id").Where(fmt.Sprintf("talent_wx_nickname like '%%%s%%'", req.TalentName)).Find(&talentId)
-		db = db.Where("talent_id = ?", talentId)
-	}
-	// 查询总数
-	var total int64
-	if err := db.Count(&total).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetWithdrawRecords] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	// 查询该页数据
-	limit := pageSize
-	offset := pageSize * pageNum // assert pageNum start with 0
-	err := db.Order("submit_at").Limit(int(limit)).Offset(int(offset)).Find(&withdrawRecords).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetWithdrawRecords] error query mysql limit, err:%+v", err)
-		return nil, err
-	}
-	var talentIds []string
-	for _, withdrawRecord := range withdrawRecords {
-		talentIds = append(talentIds, withdrawRecord.TalentID)
-	}
-	talentIdToTalentInfoMap := make(map[string]gorm_model.YoungeeTalentInfo)
-	for _, talentId := range talentIds {
-		db1 := GetReadDB(ctx)
-		talentInfo := gorm_model.YoungeeTalentInfo{}
-		db1.Model(gorm_model.YoungeeTalentInfo{}).Where("id = ?", talentId).Find(&talentInfo)
-		talentIdToTalentInfoMap[talentId] = talentInfo
-	}
-	var withdrawRecordsDatas []*http_model.WithdrawalRecordsData
-	for _, withdrawRecord := range withdrawRecords {
-		withdrawRecordsData := new(http_model.WithdrawalRecordsData)
-		withdrawRecordsData.WithdrawId = withdrawRecord.WithdrawID
-		withdrawRecordsData.TalentId = withdrawRecord.TalentID
-		withdrawRecordsData.TalentName = talentIdToTalentInfoMap[withdrawRecord.TalentID].TalentWxNickname
-		withdrawRecordsData.WithdrawAmount = float32(withdrawRecord.WithdrawAmount)
-		withdrawRecordsData.AmountPayable = float32(withdrawRecord.AmountPayable)
-		withdrawRecordsData.ReceiveInfo = withdrawRecord.ReceiveInfo
-		withdrawRecordsData.BankType = withdrawRecord.BankType
-		withdrawRecordsData.Phone = talentIdToTalentInfoMap[withdrawRecord.TalentID].TalentPhoneNumber
-		withdrawRecordsData.SubmitAt = conv.MustString(withdrawRecord.SubmitAt, "")[0:19]
-		withdrawRecordsData.WithdrawAt = conv.MustString(withdrawRecord.WithdrawAt, "")[0:19]
-		withdrawRecordsDatas = append(withdrawRecordsDatas, withdrawRecordsData)
-	}
-	var withdrawRecordsPreview http_model.WithdrawalRecordsPreview
-	withdrawRecordsPreview.WithdrawalRecordsData = withdrawRecordsDatas
-	withdrawRecordsPreview.Total = total
-	return &withdrawRecordsPreview, nil
-}
-
-func GetWithdrawRecord(ctx context.Context, req *http_model.GetWithdrawalRecordRequest) (*http_model.WithdrawalRecordPreview, error) {
-	db := GetReadDB(ctx)
-	//fmt.Println("talentId:", req.TalentId)
-	var withdrawRecords []*gorm_model.YounggeeWithdrawRecord
-	db = db.Debug().Model(gorm_model.YounggeeWithdrawRecord{}).Where("talent_id = ? AND  status = ?", req.TalentId, 2).Find(&withdrawRecords)
-	var withdrawRecordsPreview http_model.WithdrawalRecordPreview
-	var withdrawRecordsDatas []*http_model.WithdrawalRecordData
-	for _, withdrawRecord := range withdrawRecords {
-		withdrawRecordData := new(http_model.WithdrawalRecordData)
-		withdrawRecordData.WithdrawAmount = float32(withdrawRecord.WithdrawAmount)
-		withdrawRecordData.WithdrawAt = conv.MustString(withdrawRecord.WithdrawAt, "")[0:19]
-		withdrawRecordsDatas = append(withdrawRecordsDatas, withdrawRecordData)
-	}
-	withdrawRecordsPreview.WithdrawalRecordData = withdrawRecordsDatas
-	return &withdrawRecordsPreview, nil
-}
-
-func GetWithdrawNums(ctx context.Context) (*http_model.WithdrawNums, error) {
-	var withdrawNums int64
-	db := GetReadDB(ctx)
-	err := db.Model(gorm_model.YounggeeWithdrawRecord{}).Where("status = 1").Count(&withdrawNums).Error
-	if err != nil {
-		return nil, err
-	}
-	WithdrawNums := new(http_model.WithdrawNums)
-	WithdrawNums.WithdrawNums = int(withdrawNums)
-	return WithdrawNums, err
-}
-
-func GetInvoiceNums(ctx context.Context) (*http_model.InvoiceNums, error) {
-	var invoiceNums int64
-	db := GetReadDB(ctx)
-	err := db.Model(gorm_model.YounggeeInvoiceRecord{}).Where("status = 1").Count(&invoiceNums).Error
-	if err != nil {
-		return nil, err
-	}
-	InvoiceNums := new(http_model.InvoiceNums)
-	InvoiceNums.InvoiceNums = int(invoiceNums)
-	return InvoiceNums, err
-}
-
-func GetRechargeNums(ctx context.Context) (*http_model.RechargeNums, error) {
-	var rechargeNums int64
-	db := GetReadDB(ctx)
-	err := db.Model(gorm_model.YounggeeRechargeRecord{}).Where("status = 1").Count(&rechargeNums).Error
-	if err != nil {
-		return nil, err
-	}
-	RechargeNums := new(http_model.RechargeNums)
-	RechargeNums.RechargeNums = rechargeNums
-	return RechargeNums, err
-}
-
-func ConfirmWithdrawal(ctx context.Context, withdrawId string) error {
-	db := GetReadDB(ctx)
-	db2 := GetReadDB(ctx)
-	withdrawInfo := gorm_model.YounggeeWithdrawRecord{}
-	db = db.Debug().Model(gorm_model.YounggeeWithdrawRecord{}).Where("withdraw_id = ?", withdrawId).Find(&withdrawInfo)
-	db2.Debug().Where("withdraw_id = ?", withdrawId).Updates(gorm_model.YounggeeWithdrawRecord{Status: 2, WithdrawAt: time.Now()})
-	taskIdLists := strings.Split(withdrawInfo.TaskIDList, ",")
-	for _, taskId := range taskIdLists {
-		db1 := GetReadDB(ctx)
-		err := db1.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Updates(gorm_model.YoungeeTaskInfo{WithdrawStatus: 4}).Error
-		if err != nil {
-			logrus.WithContext(ctx).Errorf("[finance db] Update YoungeeTaskInfo error,err:%+v", err)
-			return err
-		}
-
-		err = CreateMessageByTaskId(ctx, 6, 1, taskId)
-		if err != nil {
-			logrus.WithContext(ctx).Errorf("[ConfirmWithdrawal] call CreateMessageByTaskId error,err:%+v", err)
-			return err
-		}
-	}
-	db3 := GetReadDB(ctx)
-	db3.Debug().Model(gorm_model.YoungeeTalentInfo{}).Where("id = ?", withdrawInfo.TalentID).Updates(
-		map[string]interface{}{
-			"withdrawing": gorm.Expr("withdrawing - ?", withdrawInfo.WithdrawAmount),
-			"withdrawed":  gorm.Expr("withdrawed + ?", withdrawInfo.WithdrawAmount)})
-	return nil
-}
-
-func GetBankInfo(ctx context.Context, req *http_model.GetBankInfoRequest) (*http_model.BankInfo, error) {
-	//db := GetReadDB(ctx)
-	//if req.BankId == "" {
-	//	return nil, nil
-	//}
-	//var infoBank *gorm_model.InfoBank
-	//db.Debug().Model(gorm_model.InfoBank{}).Where("id = ?", req.BankId).First(&infoBank)
-	db1 := GetReadDB(ctx)
-	var infoRegion *gorm_model.InfoRegion
-	db1.Debug().Model(gorm_model.InfoRegion{}).Where("self_code = ?", conv.MustInt(req.BankOpenAddress, 0)).First(&infoRegion)
-
-	provinceCode := conv.MustString(req.BankOpenAddress, "")[0:2] + "0000"
-	var province *gorm_model.InfoRegion
-	db1.Debug().Model(gorm_model.InfoRegion{}).Where("self_code = ?", conv.MustInt(provinceCode, 0)).First(&province)
-
-	cityCode := conv.MustString(req.BankOpenAddress, "")[0:4] + "00"
-	var city *gorm_model.InfoRegion
-	db1.Debug().Model(gorm_model.InfoRegion{}).Where("self_code = ?", conv.MustInt(cityCode, 0)).First(&city)
-	data := new(http_model.BankInfo)
-	//data.BankName = infoBank.Name
-	data.BankOpenAddress = province.RegionName + city.RegionName + infoRegion.RegionName
-	//db.Model(gorm_model.InfoBank{}).Where("")
-	return data, nil
-}
-
-// GetEnterpriseIDByBusiness 根据企业名称查找企业ID
-func GetEnterpriseIDByBusiness(ctx context.Context, BusinessName string) int64 {
-	db := GetReadDB(ctx)
-	var EnterpriseID int64
-	db = db.Model([]gorm_model.Enterprise{}).Select("enterprise_id").Where("business_name", BusinessName).First(&EnterpriseID)
-	return EnterpriseID
-}
-
-// GetEnterpriseIDByUserId 根据企业名称查找企业ID
-func GetEnterpriseIDByUserId(ctx context.Context, UserId int64) int64 {
-	db := GetReadDB(ctx)
-	var EnterpriseID int64
-	db = db.Model([]gorm_model.Enterprise{}).Select("enterprise_id").Where("user_id", UserId).First(&EnterpriseID)
-	return EnterpriseID
-}
-
-// GetUserIDByUsername 根据用户名称查UserID
-func GetUserIDByUsername(ctx context.Context, Username string) int64 {
-	db := GetReadDB(ctx)
-	var UserID int64
-	db = db.Model([]gorm_model.YounggeeUser{}).Select("id").Where(fmt.Sprintf("username like '%%%s%%'", Username)).First(&UserID)
-	return UserID
-}
-
-func GetInvoiceRecords(ctx context.Context, req *http_model.InvoiceRecordsRequest, condition *common_model.InvoiceRecordsCondition) (*http_model.InvoiceRecordsData, error) {
-	db := GetReadDB(ctx)
-	var invoiceRecords []*gorm_model.YounggeeInvoiceRecord
-	db = db.Debug().Model(gorm_model.YounggeeInvoiceRecord{}).Where("status = ?", req.InvoiceStatus)
-	conditionType := reflect.TypeOf(condition).Elem()
-	conditionValue := reflect.ValueOf(condition).Elem()
-	for i := 0; i < conditionType.NumField(); i++ {
-		field := conditionType.Field(i)
-		tag := field.Tag.Get("condition")
-		value := conditionValue.FieldByName(field.Name)
-		if tag == "submit_at" && value.Interface() != "" {
-			db = db.Where(fmt.Sprintf("submit_at like '%s%%'", value.Interface()))
-		}
-		if tag == "billing_at" && value.Interface() != "" {
-			db = db.Where(fmt.Sprintf("billing_at like '%s%%'", value.Interface()))
-		}
-	}
-	if req.Username != "" {
-		UserID := GetUserIDByUsername(ctx, req.Username)
-		enterpriseId := GetEnterpriseIDByUserId(ctx, UserID)
-		db = db.Where("enterprise_id = ?", enterpriseId)
-	}
-	if req.UserId != 0 {
-		enterpriseId := GetEnterpriseIDByUserId(ctx, req.UserId)
-		db = db.Where("enterprise_id = ?", enterpriseId)
-	}
-	// 查询总数
-	var total int64
-	if err := db.Count(&total).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetInvoiceRecords] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	if req.InvoiceStatus != 3 {
-		db.Order("submit_at")
-	} else {
-		db.Order("billing_at desc")
-	}
-	// 查询该页数据
-	limit := req.PageSize
-	offset := req.PageSize * req.PageNum // assert pageNum start with 0
-	err := db.Limit(int(limit)).Offset(int(offset)).Find(&invoiceRecords).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetInvoiceRecords] error query mysql limit, err:%+v", err)
-		return nil, err
-	}
-	enterpriseIdToUserInfoMap := make(map[string]gorm_model.Enterprise)
-	regionAddressMap := make(map[string]string)
-	for _, invoiceRecord := range invoiceRecords {
-		if _, ok := enterpriseIdToUserInfoMap[invoiceRecord.EnterpriseID]; !ok {
-			db1 := GetReadDB(ctx)
-			enterpriseInfo := gorm_model.Enterprise{}
-			db1.Model(gorm_model.Enterprise{}).Where("enterprise_id = ?", invoiceRecord.EnterpriseID).Find(&enterpriseInfo)
-			enterpriseIdToUserInfoMap[invoiceRecord.EnterpriseID] = enterpriseInfo
-		}
-		if _, ok := regionAddressMap[invoiceRecord.EnterpriseID]; !ok {
-			db1 := GetReadDB(ctx)
-			var regionCode string
-			db1.Model(gorm_model.YounggeeInvoiceAddress{}).Select("region_code").Where("enterprise_id = ?", invoiceRecord.EnterpriseID).Find(&regionCode)
-			regionAddressMap[invoiceRecord.EnterpriseID] = GetRegion(ctx, conv.MustInt(regionCode, 0))
-		}
-	}
-	var InvoiceRecords []*http_model.InvoiceRecordsPreviews
-	for _, invoiceRecord := range invoiceRecords {
-		InvoiceRecord := new(http_model.InvoiceRecordsPreviews)
-		InvoiceRecord.BillingId = invoiceRecord.BillingID
-		InvoiceRecord.InvoiceInfo = invoiceRecord.InvoiceSnap
-		InvoiceRecord.AddressInfo = invoiceRecord.AddressSnap
-		InvoiceRecord.InvoiceAddress = regionAddressMap[invoiceRecord.EnterpriseID]
-		InvoiceRecord.InvoiceType = invoiceRecord.InvoiceType
-		InvoiceRecord.Amount = invoiceRecord.InvoiceAmount
-		InvoiceRecord.Phone = invoiceRecord.Phone
-		InvoiceRecord.ShipmentNumber = invoiceRecord.ShipmentNumber
-		InvoiceRecord.BusinessName = enterpriseIdToUserInfoMap[invoiceRecord.EnterpriseID].BusinessName
-		InvoiceRecord.UserId = invoiceRecord.EnterpriseID
-		InvoiceRecord.Username = GetUsernameByUserID(ctx, enterpriseIdToUserInfoMap[invoiceRecord.EnterpriseID].UserID)
-		InvoiceRecord.SubmitAt = conv.MustString(invoiceRecord.SubmitAt, "")[:19]
-		InvoiceRecord.BillingAt = conv.MustString(invoiceRecord.BillingAt, "")[:19]
-		InvoiceRecords = append(InvoiceRecords, InvoiceRecord)
-	}
-	var InvoiceRecordsData http_model.InvoiceRecordsData
-	InvoiceRecordsData.InvoiceRecordsPreviews = InvoiceRecords
-	InvoiceRecordsData.Total = strconv.FormatInt(total, 10)
-	return &InvoiceRecordsData, nil
-}
-
-func ConfirmInvoice(ctx context.Context, request *http_model.ConfirmInvoiceRequest) error {
-	db := GetReadDB(ctx)
-	return db.Model(gorm_model.YounggeeInvoiceRecord{}).Where("billing_id = ?", request.BillingId).Updates(
-		gorm_model.YounggeeInvoiceRecord{
-			BillingAt:      time.Now(),
-			ShipmentNumber: request.ShipmentNumber,
-			Status:         2,
-		}).Error
-}
-
-func GetUsernameByUserID(ctx context.Context, UserID int64) (username string) {
-	db := GetReadDB(ctx)
-	db = db.Model([]gorm_model.YounggeeUser{}).Select("username").Where("id", UserID).First(&username)
-	return username
-}
-
-func GetRechargeRecords(ctx context.Context, req *http_model.GetRechargeRecordsRequest, condition *common_model.RechargeRecordsCondition) (*http_model.RechargeRecordsData, error) {
-	db := GetReadDB(ctx)
-	var rechargeRecords []*gorm_model.YounggeeRechargeRecord
-	db = db.Debug().Model(gorm_model.YounggeeRechargeRecord{}).Where("status = ?", req.Status)
-	conditionType := reflect.TypeOf(condition).Elem()
-	conditionValue := reflect.ValueOf(condition).Elem()
-	for i := 0; i < conditionType.NumField(); i++ {
-		field := conditionType.Field(i)
-		tag := field.Tag.Get("condition")
-		value := conditionValue.FieldByName(field.Name)
-		if tag == "commit_at" && value.Interface() != "" {
-			db = db.Where(fmt.Sprintf("commit_at like '%s%%'", value.Interface()))
-		}
-		if tag == "confirm_at" && value.Interface() != "" {
-			db = db.Where(fmt.Sprintf("confirm_at like '%s%%'", value.Interface()))
-		}
-	}
-	if req.Username != "" {
-		UserID := GetUserIDByUsername(ctx, req.Username)
-		enterpriseId := GetEnterpriseIDByUserId(ctx, UserID)
-		db = db.Where("enterprise_id = ?", enterpriseId)
-	}
-	if req.UserId != 0 {
-		enterpriseId := GetEnterpriseIDByUserId(ctx, req.UserId)
-		db = db.Where("enterprise_id = ?", enterpriseId)
-	}
-	if req.RechargeMethod == 1 {
-		db = db.Where("recharge_method = ?", 1)
-	} else if req.RechargeMethod == 2 {
-		db = db.Where("recharge_method = ?", 2)
-	} else if req.RechargeMethod == 3 {
-		db = db.Where("recharge_method = ?", 3)
-	}
-	// 查询总数
-	var total int64
-	if err := db.Count(&total).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetRechargeRecords] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	if req.Status == 1 {
-		db = db.Order("commit_at")
-	} else {
-		db = db.Order("confirm_at desc")
-	}
-	// 查询该页数据
-	limit := req.PageSize
-	offset := req.PageSize * req.PageNum // assert pageNum start with 0
-	err := db.Limit(int(limit)).Offset(int(offset)).Find(&rechargeRecords).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetRechargeRecords] error query mysql limit, err:%+v", err)
-		return nil, err
-	}
-	var enterpriseIds []string
-	for _, rechargeRecord := range rechargeRecords {
-		enterpriseIds = append(enterpriseIds, rechargeRecord.EnterpriseID)
-	}
-	util.RemoveStrRepByMap(enterpriseIds)
-	enterpriseIdToUserInfoMap := make(map[string]gorm_model.Enterprise)
-	db1 := GetReadDB(ctx)
-	for _, v := range enterpriseIds {
-		enterpriseInfo := gorm_model.Enterprise{}
-		db1.Model(gorm_model.Enterprise{}).Where("enterprise_id = ?", v).Find(&enterpriseInfo)
-		enterpriseIdToUserInfoMap[v] = enterpriseInfo
-	}
-	var RechargeRecords []*http_model.RechargeRecordsPreview
-	for _, rechargeRecord := range rechargeRecords {
-		RechargeRecord := new(http_model.RechargeRecordsPreview)
-		RechargeRecord.RechargeId = rechargeRecord.RechargeID
-		RechargeRecord.EnterpriseID = rechargeRecord.EnterpriseID
-		RechargeRecord.RechargeAmount = rechargeRecord.RechargeAmount
-		RechargeRecord.ConfirmAt = conv.MustString(rechargeRecord.ConfirmAt, "")[:19]
-		RechargeRecord.CommitAt = conv.MustString(rechargeRecord.CommitAt, "")[:19]
-		RechargeRecord.Phone = rechargeRecord.Phone
-		RechargeRecord.TransferVoucher = rechargeRecord.TransferVoucherUrl
-		RechargeRecord.RechargeMethod = consts.GetRechargeMethod(rechargeRecord.RechargeMethod)
-		RechargeRecord.UserId = rechargeRecord.EnterpriseID
-		RechargeRecord.Username = GetUsernameByUserID(ctx, enterpriseIdToUserInfoMap[rechargeRecord.EnterpriseID].UserID)
-		RechargeRecord.BusinessName = enterpriseIdToUserInfoMap[rechargeRecord.EnterpriseID].BusinessName
-		RechargeRecords = append(RechargeRecords, RechargeRecord)
-	}
-	var RechargeRecordsData http_model.RechargeRecordsData
-	RechargeRecordsData.RechargeRecordsPreview = RechargeRecords
-	RechargeRecordsData.Total = conv.MustString(total, "")
-	return &RechargeRecordsData, nil
-}
-
-func OperateRecharge(ctx context.Context, req *http_model.OperateRechargeRequest) error {
-	db := GetReadDB(ctx)
-	db1 := GetReadDB(ctx)
-	err := db1.Model(gorm_model.Enterprise{}).Where("enterprise_id = ?", req.EnterpriseId).Updates(map[string]interface{}{
-		"balance":           gorm.Expr("balance + ?", req.RechargeAmount),
-		"available_balance": gorm.Expr("available_balance + ?", req.RechargeAmount)}).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[OperateRecharge] error Updates balance, err:%+v", err)
-		return err
-	}
-	err1 := db.Model(gorm_model.YounggeeRechargeRecord{}).Where("recharge_id = ?", req.RechargeId).Updates(gorm_model.YounggeeRechargeRecord{
-		Status:        2,
-		InvoiceStatus: 2,
-		ConfirmAt:     time.Now(),
-	}).Error
-	if err1 != nil {
-		logrus.WithContext(ctx).Errorf("[OperateRecharge] error Updates Status, err:%+v", err)
-		return err1
-	}
-	if req.Method == 1 {
-		db2 := GetReadDB(ctx)
-		db2.Model(gorm_model.YounggeeRechargeRecord{}).Where("recharge_id = ?", req.RechargeId).Updates(gorm_model.YounggeeRechargeRecord{
-			RechargeAmount: req.RechargeAmount,
-		})
-	}
-	return nil
-}
+package db
+
+import (
+	"context"
+	"fmt"
+	"reflect"
+	"strconv"
+	"strings"
+	"time"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/common_model"
+	"youngee_m_api/model/gorm_model"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/util"
+
+	"github.com/caixw/lib.go/conv"
+	"github.com/sirupsen/logrus"
+	"gorm.io/gorm"
+)
+
+func GetWithdrawRecords(ctx context.Context, pageSize, pageNum int32, req *http_model.WithdrawalRecordsRequest, condition *common_model.WithdrawRecordsCondition) (*http_model.WithdrawalRecordsPreview, error) {
+	db := GetReadDB(ctx)
+	var withdrawRecords []*gorm_model.YounggeeWithdrawRecord
+	db = db.Debug().Model(gorm_model.YounggeeWithdrawRecord{})
+	conditionType := reflect.TypeOf(condition).Elem()
+	conditionValue := reflect.ValueOf(condition).Elem()
+	for i := 0; i < conditionType.NumField(); i++ {
+		field := conditionType.Field(i)
+		tag := field.Tag.Get("condition")
+		value := conditionValue.FieldByName(field.Name)
+		if tag == "submit_at" && value.Interface() != "" {
+			db = db.Where(fmt.Sprintf("submit_at like '%s%%'", value.Interface()))
+		}
+		if tag == "withdraw_at" && value.Interface() != "" {
+			db = db.Where(fmt.Sprintf("withdraw_at like '%s%%'", value.Interface()))
+		}
+		if !util.IsBlank(value) && tag != "submit_at" && tag != "withdraw_at" {
+			db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+		}
+	}
+	if req.TalentName != "" {
+		fmt.Println("TalentName:", req.TalentName)
+		db1 := GetReadDB(ctx)
+		var talentId string
+		db1.Model(gorm_model.YoungeeTalentInfo{}).Select("id").Where(fmt.Sprintf("talent_wx_nickname like '%%%s%%'", req.TalentName)).Find(&talentId)
+		db = db.Where("talent_id = ?", talentId)
+	}
+	// 查询总数
+	var total int64
+	if err := db.Count(&total).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetWithdrawRecords] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	// 查询该页数据
+	limit := pageSize
+	offset := pageSize * pageNum // assert pageNum start with 0
+	err := db.Order("submit_at").Limit(int(limit)).Offset(int(offset)).Find(&withdrawRecords).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetWithdrawRecords] error query mysql limit, err:%+v", err)
+		return nil, err
+	}
+	var talentIds []string
+	for _, withdrawRecord := range withdrawRecords {
+		talentIds = append(talentIds, withdrawRecord.TalentID)
+	}
+	talentIdToTalentInfoMap := make(map[string]gorm_model.YoungeeTalentInfo)
+	for _, talentId := range talentIds {
+		db1 := GetReadDB(ctx)
+		talentInfo := gorm_model.YoungeeTalentInfo{}
+		db1.Model(gorm_model.YoungeeTalentInfo{}).Where("id = ?", talentId).Find(&talentInfo)
+		talentIdToTalentInfoMap[talentId] = talentInfo
+	}
+	var withdrawRecordsDatas []*http_model.WithdrawalRecordsData
+	for _, withdrawRecord := range withdrawRecords {
+		withdrawRecordsData := new(http_model.WithdrawalRecordsData)
+		withdrawRecordsData.WithdrawId = withdrawRecord.WithdrawID
+		withdrawRecordsData.TalentId = withdrawRecord.TalentID
+		withdrawRecordsData.TalentName = talentIdToTalentInfoMap[withdrawRecord.TalentID].TalentWxNickname
+		withdrawRecordsData.WithdrawAmount = float32(withdrawRecord.WithdrawAmount)
+		withdrawRecordsData.AmountPayable = float32(withdrawRecord.AmountPayable)
+		withdrawRecordsData.ReceiveInfo = withdrawRecord.ReceiveInfo
+		withdrawRecordsData.BankType = withdrawRecord.BankType
+		withdrawRecordsData.Phone = talentIdToTalentInfoMap[withdrawRecord.TalentID].TalentPhoneNumber
+		withdrawRecordsData.SubmitAt = conv.MustString(withdrawRecord.SubmitAt, "")[0:19]
+		withdrawRecordsData.WithdrawAt = conv.MustString(withdrawRecord.WithdrawAt, "")[0:19]
+		withdrawRecordsDatas = append(withdrawRecordsDatas, withdrawRecordsData)
+	}
+	var withdrawRecordsPreview http_model.WithdrawalRecordsPreview
+	withdrawRecordsPreview.WithdrawalRecordsData = withdrawRecordsDatas
+	withdrawRecordsPreview.Total = total
+	return &withdrawRecordsPreview, nil
+}
+
+func GetWithdrawRecord(ctx context.Context, req *http_model.GetWithdrawalRecordRequest) (*http_model.WithdrawalRecordPreview, error) {
+	db := GetReadDB(ctx)
+	//fmt.Println("talentId:", req.TalentId)
+	var withdrawRecords []*gorm_model.YounggeeWithdrawRecord
+	db = db.Debug().Model(gorm_model.YounggeeWithdrawRecord{}).Where("talent_id = ? AND  status = ?", req.TalentId, 2).Find(&withdrawRecords)
+	var withdrawRecordsPreview http_model.WithdrawalRecordPreview
+	var withdrawRecordsDatas []*http_model.WithdrawalRecordData
+	for _, withdrawRecord := range withdrawRecords {
+		withdrawRecordData := new(http_model.WithdrawalRecordData)
+		withdrawRecordData.WithdrawAmount = float32(withdrawRecord.WithdrawAmount)
+		withdrawRecordData.WithdrawAt = conv.MustString(withdrawRecord.WithdrawAt, "")[0:19]
+		withdrawRecordsDatas = append(withdrawRecordsDatas, withdrawRecordData)
+	}
+	withdrawRecordsPreview.WithdrawalRecordData = withdrawRecordsDatas
+	return &withdrawRecordsPreview, nil
+}
+
+func GetWithdrawNums(ctx context.Context) (*http_model.WithdrawNums, error) {
+	var withdrawNums int64
+	db := GetReadDB(ctx)
+	err := db.Model(gorm_model.YounggeeWithdrawRecord{}).Where("status = 1").Count(&withdrawNums).Error
+	if err != nil {
+		return nil, err
+	}
+	WithdrawNums := new(http_model.WithdrawNums)
+	WithdrawNums.WithdrawNums = int(withdrawNums)
+	return WithdrawNums, err
+}
+
+func GetInvoiceNums(ctx context.Context) (*http_model.InvoiceNums, error) {
+	var invoiceNums int64
+	db := GetReadDB(ctx)
+	err := db.Model(gorm_model.YounggeeInvoiceRecord{}).Where("status = 1").Count(&invoiceNums).Error
+	if err != nil {
+		return nil, err
+	}
+	InvoiceNums := new(http_model.InvoiceNums)
+	InvoiceNums.InvoiceNums = int(invoiceNums)
+	return InvoiceNums, err
+}
+
+func GetRechargeNums(ctx context.Context) (*http_model.RechargeNums, error) {
+	var rechargeNums int64
+	db := GetReadDB(ctx)
+	err := db.Model(gorm_model.YounggeeRechargeRecord{}).Where("status = 1").Count(&rechargeNums).Error
+	if err != nil {
+		return nil, err
+	}
+	RechargeNums := new(http_model.RechargeNums)
+	RechargeNums.RechargeNums = rechargeNums
+	return RechargeNums, err
+}
+
+func ConfirmWithdrawal(ctx context.Context, withdrawId string) error {
+	db := GetReadDB(ctx)
+	db2 := GetReadDB(ctx)
+	withdrawInfo := gorm_model.YounggeeWithdrawRecord{}
+	db = db.Debug().Model(gorm_model.YounggeeWithdrawRecord{}).Where("withdraw_id = ?", withdrawId).Find(&withdrawInfo)
+	db2.Debug().Where("withdraw_id = ?", withdrawId).Updates(gorm_model.YounggeeWithdrawRecord{Status: 2, WithdrawAt: time.Now()})
+	taskIdLists := strings.Split(withdrawInfo.TaskIDList, ",")
+	for _, taskId := range taskIdLists {
+		db1 := GetReadDB(ctx)
+		err := db1.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Updates(gorm_model.YoungeeTaskInfo{WithdrawStatus: 4}).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[finance db] Update YoungeeTaskInfo error,err:%+v", err)
+			return err
+		}
+
+		err = CreateMessageByTaskId(ctx, 6, 1, taskId)
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[ConfirmWithdrawal] call CreateMessageByTaskId error,err:%+v", err)
+			return err
+		}
+	}
+	db3 := GetReadDB(ctx)
+	db3.Debug().Model(gorm_model.YoungeeTalentInfo{}).Where("id = ?", withdrawInfo.TalentID).Updates(
+		map[string]interface{}{
+			"withdrawing": gorm.Expr("withdrawing - ?", withdrawInfo.WithdrawAmount),
+			"withdrawed":  gorm.Expr("withdrawed + ?", withdrawInfo.WithdrawAmount)})
+	return nil
+}
+
+func GetBankInfo(ctx context.Context, req *http_model.GetBankInfoRequest) (*http_model.BankInfo, error) {
+	//db := GetReadDB(ctx)
+	//if req.BankId == "" {
+	//	return nil, nil
+	//}
+	//var infoBank *gorm_model.InfoBank
+	//db.Debug().Model(gorm_model.InfoBank{}).Where("id = ?", req.BankId).First(&infoBank)
+	db1 := GetReadDB(ctx)
+	var infoRegion *gorm_model.InfoRegion
+	db1.Debug().Model(gorm_model.InfoRegion{}).Where("self_code = ?", conv.MustInt(req.BankOpenAddress, 0)).First(&infoRegion)
+
+	provinceCode := conv.MustString(req.BankOpenAddress, "")[0:2] + "0000"
+	var province *gorm_model.InfoRegion
+	db1.Debug().Model(gorm_model.InfoRegion{}).Where("self_code = ?", conv.MustInt(provinceCode, 0)).First(&province)
+
+	cityCode := conv.MustString(req.BankOpenAddress, "")[0:4] + "00"
+	var city *gorm_model.InfoRegion
+	db1.Debug().Model(gorm_model.InfoRegion{}).Where("self_code = ?", conv.MustInt(cityCode, 0)).First(&city)
+	data := new(http_model.BankInfo)
+	//data.BankName = infoBank.Name
+	data.BankOpenAddress = province.RegionName + city.RegionName + infoRegion.RegionName
+	//db.Model(gorm_model.InfoBank{}).Where("")
+	return data, nil
+}
+
+// GetEnterpriseIDByBusiness 根据企业名称查找企业ID
+func GetEnterpriseIDByBusiness(ctx context.Context, BusinessName string) int64 {
+	db := GetReadDB(ctx)
+	var EnterpriseID int64
+	db = db.Model([]gorm_model.Enterprise{}).Select("enterprise_id").Where("business_name", BusinessName).First(&EnterpriseID)
+	return EnterpriseID
+}
+
+// GetEnterpriseIDByUserId 根据企业名称查找企业ID
+func GetEnterpriseIDByUserId(ctx context.Context, UserId int64) int64 {
+	db := GetReadDB(ctx)
+	var EnterpriseID int64
+	db = db.Model([]gorm_model.Enterprise{}).Select("enterprise_id").Where("user_id", UserId).First(&EnterpriseID)
+	return EnterpriseID
+}
+
+// GetUserIDByUsername 根据用户名称查UserID
+func GetUserIDByUsername(ctx context.Context, Username string) int64 {
+	db := GetReadDB(ctx)
+	var UserID int64
+	db = db.Model([]gorm_model.YounggeeUser{}).Select("id").Where(fmt.Sprintf("username like '%%%s%%'", Username)).First(&UserID)
+	return UserID
+}
+
+func GetInvoiceRecords(ctx context.Context, req *http_model.InvoiceRecordsRequest, condition *common_model.InvoiceRecordsCondition) (*http_model.InvoiceRecordsData, error) {
+	db := GetReadDB(ctx)
+	var invoiceRecords []*gorm_model.YounggeeInvoiceRecord
+	db = db.Debug().Model(gorm_model.YounggeeInvoiceRecord{}).Where("status = ?", req.InvoiceStatus)
+	conditionType := reflect.TypeOf(condition).Elem()
+	conditionValue := reflect.ValueOf(condition).Elem()
+	for i := 0; i < conditionType.NumField(); i++ {
+		field := conditionType.Field(i)
+		tag := field.Tag.Get("condition")
+		value := conditionValue.FieldByName(field.Name)
+		if tag == "submit_at" && value.Interface() != "" {
+			db = db.Where(fmt.Sprintf("submit_at like '%s%%'", value.Interface()))
+		}
+		if tag == "billing_at" && value.Interface() != "" {
+			db = db.Where(fmt.Sprintf("billing_at like '%s%%'", value.Interface()))
+		}
+	}
+	if req.Username != "" {
+		UserID := GetUserIDByUsername(ctx, req.Username)
+		enterpriseId := GetEnterpriseIDByUserId(ctx, UserID)
+		db = db.Where("enterprise_id = ?", enterpriseId)
+	}
+	if req.UserId != 0 {
+		enterpriseId := GetEnterpriseIDByUserId(ctx, req.UserId)
+		db = db.Where("enterprise_id = ?", enterpriseId)
+	}
+	// 查询总数
+	var total int64
+	if err := db.Count(&total).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetInvoiceRecords] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	if req.InvoiceStatus != 3 {
+		db.Order("submit_at")
+	} else {
+		db.Order("billing_at desc")
+	}
+	// 查询该页数据
+	limit := req.PageSize
+	offset := req.PageSize * req.PageNum // assert pageNum start with 0
+	err := db.Limit(int(limit)).Offset(int(offset)).Find(&invoiceRecords).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetInvoiceRecords] error query mysql limit, err:%+v", err)
+		return nil, err
+	}
+	enterpriseIdToUserInfoMap := make(map[string]gorm_model.Enterprise)
+	regionAddressMap := make(map[string]string)
+	for _, invoiceRecord := range invoiceRecords {
+		if _, ok := enterpriseIdToUserInfoMap[invoiceRecord.EnterpriseID]; !ok {
+			db1 := GetReadDB(ctx)
+			enterpriseInfo := gorm_model.Enterprise{}
+			db1.Model(gorm_model.Enterprise{}).Where("enterprise_id = ?", invoiceRecord.EnterpriseID).Find(&enterpriseInfo)
+			enterpriseIdToUserInfoMap[invoiceRecord.EnterpriseID] = enterpriseInfo
+		}
+		if _, ok := regionAddressMap[invoiceRecord.EnterpriseID]; !ok {
+			db1 := GetReadDB(ctx)
+			var regionCode string
+			db1.Model(gorm_model.YounggeeInvoiceAddress{}).Select("region_code").Where("enterprise_id = ?", invoiceRecord.EnterpriseID).Find(&regionCode)
+			regionAddressMap[invoiceRecord.EnterpriseID] = GetRegion(ctx, conv.MustInt(regionCode, 0))
+		}
+	}
+	var InvoiceRecords []*http_model.InvoiceRecordsPreviews
+	for _, invoiceRecord := range invoiceRecords {
+		InvoiceRecord := new(http_model.InvoiceRecordsPreviews)
+		InvoiceRecord.BillingId = invoiceRecord.BillingID
+		InvoiceRecord.InvoiceInfo = invoiceRecord.InvoiceSnap
+		InvoiceRecord.AddressInfo = invoiceRecord.AddressSnap
+		InvoiceRecord.InvoiceAddress = regionAddressMap[invoiceRecord.EnterpriseID]
+		InvoiceRecord.InvoiceType = invoiceRecord.InvoiceType
+		InvoiceRecord.Amount = invoiceRecord.InvoiceAmount
+		InvoiceRecord.Phone = invoiceRecord.Phone
+		InvoiceRecord.ShipmentNumber = invoiceRecord.ShipmentNumber
+		InvoiceRecord.BusinessName = enterpriseIdToUserInfoMap[invoiceRecord.EnterpriseID].BusinessName
+		InvoiceRecord.UserId = invoiceRecord.EnterpriseID
+		InvoiceRecord.Username = GetUsernameByUserID(ctx, enterpriseIdToUserInfoMap[invoiceRecord.EnterpriseID].UserID)
+		InvoiceRecord.SubmitAt = conv.MustString(invoiceRecord.SubmitAt, "")[:19]
+		InvoiceRecord.BillingAt = conv.MustString(invoiceRecord.BillingAt, "")[:19]
+		InvoiceRecords = append(InvoiceRecords, InvoiceRecord)
+	}
+	var InvoiceRecordsData http_model.InvoiceRecordsData
+	InvoiceRecordsData.InvoiceRecordsPreviews = InvoiceRecords
+	InvoiceRecordsData.Total = strconv.FormatInt(total, 10)
+	return &InvoiceRecordsData, nil
+}
+
+func ConfirmInvoice(ctx context.Context, request *http_model.ConfirmInvoiceRequest) error {
+	db := GetReadDB(ctx)
+	return db.Model(gorm_model.YounggeeInvoiceRecord{}).Where("billing_id = ?", request.BillingId).Updates(
+		gorm_model.YounggeeInvoiceRecord{
+			BillingAt:      time.Now(),
+			ShipmentNumber: request.ShipmentNumber,
+			Status:         2,
+		}).Error
+}
+
+func GetUsernameByUserID(ctx context.Context, UserID int64) (username string) {
+	db := GetReadDB(ctx)
+	db = db.Model([]gorm_model.YounggeeUser{}).Select("username").Where("id", UserID).First(&username)
+	return username
+}
+
+func GetRechargeRecords(ctx context.Context, req *http_model.GetRechargeRecordsRequest, condition *common_model.RechargeRecordsCondition) (*http_model.RechargeRecordsData, error) {
+	db := GetReadDB(ctx)
+	var rechargeRecords []*gorm_model.YounggeeRechargeRecord
+	db = db.Debug().Model(gorm_model.YounggeeRechargeRecord{}).Where("status = ?", req.Status)
+	conditionType := reflect.TypeOf(condition).Elem()
+	conditionValue := reflect.ValueOf(condition).Elem()
+	for i := 0; i < conditionType.NumField(); i++ {
+		field := conditionType.Field(i)
+		tag := field.Tag.Get("condition")
+		value := conditionValue.FieldByName(field.Name)
+		if tag == "commit_at" && value.Interface() != "" {
+			db = db.Where(fmt.Sprintf("commit_at like '%s%%'", value.Interface()))
+		}
+		if tag == "confirm_at" && value.Interface() != "" {
+			db = db.Where(fmt.Sprintf("confirm_at like '%s%%'", value.Interface()))
+		}
+	}
+	if req.Username != "" {
+		UserID := GetUserIDByUsername(ctx, req.Username)
+		enterpriseId := GetEnterpriseIDByUserId(ctx, UserID)
+		db = db.Where("enterprise_id = ?", enterpriseId)
+	}
+	if req.UserId != 0 {
+		enterpriseId := GetEnterpriseIDByUserId(ctx, req.UserId)
+		db = db.Where("enterprise_id = ?", enterpriseId)
+	}
+	if req.RechargeMethod == 1 {
+		db = db.Where("recharge_method = ?", 1)
+	} else if req.RechargeMethod == 2 {
+		db = db.Where("recharge_method = ?", 2)
+	} else if req.RechargeMethod == 3 {
+		db = db.Where("recharge_method = ?", 3)
+	}
+	// 查询总数
+	var total int64
+	if err := db.Count(&total).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetRechargeRecords] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	if req.Status == 1 {
+		db = db.Order("commit_at")
+	} else {
+		db = db.Order("confirm_at desc")
+	}
+	// 查询该页数据
+	limit := req.PageSize
+	offset := req.PageSize * req.PageNum // assert pageNum start with 0
+	err := db.Limit(int(limit)).Offset(int(offset)).Find(&rechargeRecords).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetRechargeRecords] error query mysql limit, err:%+v", err)
+		return nil, err
+	}
+	var enterpriseIds []string
+	for _, rechargeRecord := range rechargeRecords {
+		enterpriseIds = append(enterpriseIds, rechargeRecord.EnterpriseID)
+	}
+	util.RemoveStrRepByMap(enterpriseIds)
+	enterpriseIdToUserInfoMap := make(map[string]gorm_model.Enterprise)
+	db1 := GetReadDB(ctx)
+	for _, v := range enterpriseIds {
+		enterpriseInfo := gorm_model.Enterprise{}
+		db1.Model(gorm_model.Enterprise{}).Where("enterprise_id = ?", v).Find(&enterpriseInfo)
+		enterpriseIdToUserInfoMap[v] = enterpriseInfo
+	}
+	var RechargeRecords []*http_model.RechargeRecordsPreview
+	for _, rechargeRecord := range rechargeRecords {
+		RechargeRecord := new(http_model.RechargeRecordsPreview)
+		RechargeRecord.RechargeId = rechargeRecord.RechargeID
+		RechargeRecord.EnterpriseID = rechargeRecord.EnterpriseID
+		RechargeRecord.RechargeAmount = rechargeRecord.RechargeAmount
+		RechargeRecord.ConfirmAt = conv.MustString(rechargeRecord.ConfirmAt, "")[:19]
+		RechargeRecord.CommitAt = conv.MustString(rechargeRecord.CommitAt, "")[:19]
+		RechargeRecord.Phone = rechargeRecord.Phone
+		RechargeRecord.TransferVoucher = rechargeRecord.TransferVoucherUrl
+		RechargeRecord.RechargeMethod = consts.GetRechargeMethod(rechargeRecord.RechargeMethod)
+		RechargeRecord.UserId = rechargeRecord.EnterpriseID
+		RechargeRecord.Username = GetUsernameByUserID(ctx, enterpriseIdToUserInfoMap[rechargeRecord.EnterpriseID].UserID)
+		RechargeRecord.BusinessName = enterpriseIdToUserInfoMap[rechargeRecord.EnterpriseID].BusinessName
+		RechargeRecords = append(RechargeRecords, RechargeRecord)
+	}
+	var RechargeRecordsData http_model.RechargeRecordsData
+	RechargeRecordsData.RechargeRecordsPreview = RechargeRecords
+	RechargeRecordsData.Total = conv.MustString(total, "")
+	return &RechargeRecordsData, nil
+}
+
+func OperateRecharge(ctx context.Context, req *http_model.OperateRechargeRequest) error {
+	db := GetReadDB(ctx)
+	db1 := GetReadDB(ctx)
+	err := db1.Model(gorm_model.Enterprise{}).Where("enterprise_id = ?", req.EnterpriseId).Updates(map[string]interface{}{
+		"balance":           gorm.Expr("balance + ?", req.RechargeAmount),
+		"available_balance": gorm.Expr("available_balance + ?", req.RechargeAmount)}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[OperateRecharge] error Updates balance, err:%+v", err)
+		return err
+	}
+	err1 := db.Model(gorm_model.YounggeeRechargeRecord{}).Where("recharge_id = ?", req.RechargeId).Updates(gorm_model.YounggeeRechargeRecord{
+		Status:        2,
+		InvoiceStatus: 2,
+		ConfirmAt:     time.Now(),
+	}).Error
+	if err1 != nil {
+		logrus.WithContext(ctx).Errorf("[OperateRecharge] error Updates Status, err:%+v", err)
+		return err1
+	}
+	if req.Method == 1 {
+		db2 := GetReadDB(ctx)
+		db2.Model(gorm_model.YounggeeRechargeRecord{}).Where("recharge_id = ?", req.RechargeId).Updates(gorm_model.YounggeeRechargeRecord{
+			RechargeAmount: req.RechargeAmount,
+		})
+	}
+	return nil
+}

+ 299 - 299
db/finish.go

@@ -1,299 +1,299 @@
-package db
-
-import (
-	"context"
-	"fmt"
-	"github.com/tidwall/gjson"
-	"reflect"
-	"strings"
-	"youngee_m_api/model/common_model"
-	"youngee_m_api/model/gorm_model"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/pack"
-	"youngee_m_api/util"
-
-	"github.com/caixw/lib.go/conv"
-	"github.com/sirupsen/logrus"
-)
-
-func GetTaskFinishList(ctx context.Context, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskFinishInfo, int64, error) {
-	db := GetReadDB(ctx)
-	// 查询Task表信息
-	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2 and task_stage = 15")
-	// 根据Project条件过滤
-	conditionType := reflect.TypeOf(conditions).Elem()
-	conditionValue := reflect.ValueOf(conditions).Elem()
-	var platform_nickname string = ""
-	for i := 0; i < conditionType.NumField(); i++ {
-		field := conditionType.Field(i)
-		tag := field.Tag.Get("condition")
-		value := conditionValue.FieldByName(field.Name)
-		if !util.IsBlank(value) {
-			if tag == "platform_nickname" {
-				platform_nickname = fmt.Sprintf("%v", value.Interface())
-				continue
-			} else if tag == "project_id" || tag == "strategy_id" {
-				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-			}
-		}
-	}
-	var taskInfos []gorm_model.YoungeeTaskInfo
-	db = db.Model(gorm_model.YoungeeTaskInfo{})
-	// 查询总数
-	var totalTask int64
-	if err := db.Count(&totalTask).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	db.Order("task_id").Find(&taskInfos)
-
-	// 查询任务id
-	var taskIds []string
-	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
-	for _, taskInfo := range taskInfos {
-		taskIds = append(taskIds, taskInfo.TaskId)
-		taskMap[taskInfo.TaskId] = taskInfo
-	}
-	db1 := GetReadDB(ctx)
-	db1 = db1.Debug().Model(gorm_model.YounggeeDataInfo{})
-
-	var DataInfos []gorm_model.YounggeeDataInfo
-	db1 = db1.Model(gorm_model.YounggeeDataInfo{}).Where("task_id IN ? AND is_ok = 1", taskIds)
-	err := db1.Find(&DataInfos).Error
-	DataMap := make(map[string]gorm_model.YounggeeDataInfo)
-	for _, DataInfo := range DataInfos {
-		DataMap[DataInfo.TaskID] = DataInfo
-	}
-
-	var LinkInfos []gorm_model.YounggeeLinkInfo
-	db2 := GetReadDB(ctx)
-	db2 = db2.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id IN ? AND is_ok = 1", taskIds).Find(&LinkInfos)
-	LinkMap := make(map[string]gorm_model.YounggeeLinkInfo)
-	for _, LinkInfo := range LinkInfos {
-		LinkMap[LinkInfo.TaskID] = LinkInfo
-	}
-
-	// 查询总数
-	var totalData int64
-	if err := db2.Count(&totalData).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	var misNum int64
-	if totalData > totalTask {
-		misNum = totalData - totalTask
-	} else {
-		misNum = totalTask - totalData
-	}
-	logrus.Println("totalData,totalTalent,misNum:", totalData, totalTask, misNum)
-
-	// 查询该页数据
-	limit := pageSize + misNum
-	offset := pageSize * pageNum // assert pageNum start with 0
-	err = db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
-
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-
-	var TaskFinishs []*http_model.TaskFinish
-	var taskDatas []*http_model.TaskFinishInfo
-	var newTaskFinishs []*http_model.TaskFinishInfo
-	for _, taskId := range taskIds {
-		TaskFinish := new(http_model.TaskFinish)
-		TaskFinish.Talent = taskMap[taskId]
-		TaskFinish.Data = DataMap[taskId]
-		TaskFinish.Link = LinkMap[taskId]
-		TaskFinishs = append(TaskFinishs, TaskFinish)
-	}
-
-	taskDatas = pack.TaskFinishToTaskInfo(TaskFinishs)
-
-	for _, v := range taskDatas {
-		if platform_nickname == "" {
-			newTaskFinishs = append(newTaskFinishs, v)
-		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
-			newTaskFinishs = append(newTaskFinishs, v)
-		} else if strings.Contains(conv.MustString(v.TaskID, ""), platform_nickname) {
-			newTaskFinishs = append(newTaskFinishs, v)
-		} else {
-			totalTask--
-		}
-	}
-	return newTaskFinishs, totalTask, nil
-}
-
-func GetFinishData(ctx context.Context, projectID string) ([]*gorm_model.RecruitStrategy, error) {
-	var finishRecruitStrategy []*gorm_model.RecruitStrategy
-	db := GetReadDB(ctx)
-	// 查询Task表信息
-	err := db.Debug().Model(gorm_model.RecruitStrategy{}).Where("project_id = ?", projectID).Scan(&finishRecruitStrategy).Order("strategy_id").Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	return finishRecruitStrategy, nil
-}
-
-func GetSpecialTaskFinishList(ctx context.Context, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.SpecialTaskFinishDataInfo, int64, error) {
-	db := GetReadDB(ctx)
-	// 查询Task表信息
-	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2 and task_stage = 15")
-	// 根据Project条件过滤
-	conditionType := reflect.TypeOf(conditions).Elem()
-	conditionValue := reflect.ValueOf(conditions).Elem()
-	var platform_nickname string = ""
-	for i := 0; i < conditionType.NumField(); i++ {
-		field := conditionType.Field(i)
-		tag := field.Tag.Get("condition")
-		value := conditionValue.FieldByName(field.Name)
-		if !util.IsBlank(value) {
-			if tag == "platform_nickname" {
-				platform_nickname = fmt.Sprintf("%v", value.Interface())
-				continue
-			} else if tag == "project_id" || tag == "strategy_id" {
-				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-			}
-		}
-	}
-	var taskInfos []gorm_model.YoungeeTaskInfo
-	db = db.Model(gorm_model.YoungeeTaskInfo{})
-	// 查询总数
-	var totalTask int64
-	if err := db.Count(&totalTask).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	db.Order("task_id").Find(&taskInfos)
-
-	// 查询任务id
-	var taskIds []string
-	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
-	for _, taskInfo := range taskInfos {
-		taskIds = append(taskIds, taskInfo.TaskId)
-		taskMap[taskInfo.TaskId] = taskInfo
-	}
-	db1 := GetReadDB(ctx)
-	db1 = db1.Debug().Model(gorm_model.YounggeeDataInfo{})
-
-	var DataInfos []gorm_model.YounggeeDataInfo
-	db1 = db1.Model(gorm_model.YounggeeDataInfo{}).Where("task_id IN ? AND is_ok = 1", taskIds)
-	err := db1.Find(&DataInfos).Error
-	DataMap := make(map[string]gorm_model.YounggeeDataInfo)
-	for _, DataInfo := range DataInfos {
-		DataMap[DataInfo.TaskID] = DataInfo
-	}
-
-	var LinkInfos []gorm_model.YounggeeLinkInfo
-	db2 := GetReadDB(ctx)
-	db2 = db2.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id IN ? AND is_ok = 1", taskIds).Find(&LinkInfos)
-	LinkMap := make(map[string]gorm_model.YounggeeLinkInfo)
-	for _, LinkInfo := range LinkInfos {
-		LinkMap[LinkInfo.TaskID] = LinkInfo
-	}
-
-	// 查询总数
-	var totalData int64
-	if err := db2.Count(&totalData).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	var misNum int64
-	if totalData > totalTask {
-		misNum = totalData - totalTask
-	} else {
-		misNum = totalTask - totalData
-	}
-	logrus.Println("totalData,totalTalent,misNum:", totalData, totalTask, misNum)
-
-	// 查询该页数据
-	limit := pageSize + misNum
-	offset := pageSize * pageNum // assert pageNum start with 0
-	err = db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
-
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-
-	var TaskFinishs []*http_model.SpecialTaskFinishData
-	var taskDatas []*http_model.SpecialTaskFinishDataInfo
-	var newTaskFinishs []*http_model.SpecialTaskFinishDataInfo
-	for _, taskId := range taskIds {
-		TaskFinish := new(http_model.SpecialTaskFinishData)
-		TaskFinish.Talent = taskMap[taskId]
-		TaskFinish.Data = DataMap[taskId]
-		TaskFinish.Link = LinkMap[taskId]
-		TaskFinishs = append(TaskFinishs, TaskFinish)
-	}
-
-	taskDatas = pack.SpecialTaskFinishDataToTaskInfo(TaskFinishs)
-
-	for _, v := range taskDatas {
-		if platform_nickname == "" {
-			newTaskFinishs = append(newTaskFinishs, v)
-		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
-			newTaskFinishs = append(newTaskFinishs, v)
-		} else if strings.Contains(conv.MustString(v.TaskID, ""), platform_nickname) {
-			newTaskFinishs = append(newTaskFinishs, v)
-		} else {
-			totalTask--
-		}
-	}
-	return newTaskFinishs, totalTask, nil
-}
-
-func GetSpecialFinishDataNumber(ctx context.Context, projectId string) (*http_model.GetSpecialFinishDataData, error) {
-	db := GetReadDB(ctx)
-	// 查询Task表信息
-	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2 and task_stage = 15 and project_id = ?", projectId)
-	var taskInfos []gorm_model.YoungeeTaskInfo
-	// 查询总数
-	var totalTask int64
-	if err := db.Count(&totalTask).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetSpecialFinishDataNumber] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	db.Order("task_id").Find(&taskInfos)
-
-	// 查询任务id
-	var taskIds []string
-	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
-	for _, taskInfo := range taskInfos {
-		taskIds = append(taskIds, taskInfo.TaskId)
-		taskMap[taskInfo.TaskId] = taskInfo
-	}
-	db1 := GetReadDB(ctx)
-	db1 = db1.Debug().Model(gorm_model.YounggeeDataInfo{})
-
-	var DataInfos []gorm_model.YounggeeDataInfo
-	db1 = db1.Model(gorm_model.YounggeeDataInfo{}).Where("task_id IN ? AND is_ok = 1", taskIds)
-	err := db1.Find(&DataInfos).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetSpecialFinishDataNumber] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	DataMap := make(map[string]gorm_model.YounggeeDataInfo)
-	for _, DataInfo := range DataInfos {
-		DataMap[DataInfo.TaskID] = DataInfo
-	}
-
-	taskFinishData := http_model.GetSpecialFinishDataData{
-		FinishNumber:  totalTask,
-		FanNumber:     0,
-		PlayNumber:    0,
-		LikeNumber:    0,
-		CommentNumber: 0,
-		CollectNumber: 0,
-	}
-	for _, taskId := range taskIds {
-		fans := conv.MustString(gjson.Get(taskMap[taskId].TalentPlatformInfoSnap, "fans_count"), "")
-		taskFinishData.FanNumber += conv.MustInt(fans, 0)
-		taskFinishData.PlayNumber += DataMap[taskId].PlayNumber
-		taskFinishData.LikeNumber += DataMap[taskId].LikeNumber
-		taskFinishData.CollectNumber += DataMap[taskId].CollectNumber
-		taskFinishData.CommentNumber += DataMap[taskId].CommentNumber
-	}
-	return &taskFinishData, nil
-}
+package db
+
+import (
+	"context"
+	"fmt"
+	"github.com/tidwall/gjson"
+	"reflect"
+	"strings"
+	"youngee_m_api/model/common_model"
+	"youngee_m_api/model/gorm_model"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/pack"
+	"youngee_m_api/util"
+
+	"github.com/caixw/lib.go/conv"
+	"github.com/sirupsen/logrus"
+)
+
+func GetTaskFinishList(ctx context.Context, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskFinishInfo, int64, error) {
+	db := GetReadDB(ctx)
+	// 查询Task表信息
+	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2 and task_stage = 15")
+	// 根据Project条件过滤
+	conditionType := reflect.TypeOf(conditions).Elem()
+	conditionValue := reflect.ValueOf(conditions).Elem()
+	var platform_nickname string = ""
+	for i := 0; i < conditionType.NumField(); i++ {
+		field := conditionType.Field(i)
+		tag := field.Tag.Get("condition")
+		value := conditionValue.FieldByName(field.Name)
+		if !util.IsBlank(value) {
+			if tag == "platform_nickname" {
+				platform_nickname = fmt.Sprintf("%v", value.Interface())
+				continue
+			} else if tag == "project_id" || tag == "strategy_id" {
+				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+			}
+		}
+	}
+	var taskInfos []gorm_model.YoungeeTaskInfo
+	db = db.Model(gorm_model.YoungeeTaskInfo{})
+	// 查询总数
+	var totalTask int64
+	if err := db.Count(&totalTask).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	db.Order("task_id").Find(&taskInfos)
+
+	// 查询任务id
+	var taskIds []string
+	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
+	for _, taskInfo := range taskInfos {
+		taskIds = append(taskIds, taskInfo.TaskId)
+		taskMap[taskInfo.TaskId] = taskInfo
+	}
+	db1 := GetReadDB(ctx)
+	db1 = db1.Debug().Model(gorm_model.YounggeeDataInfo{})
+
+	var DataInfos []gorm_model.YounggeeDataInfo
+	db1 = db1.Model(gorm_model.YounggeeDataInfo{}).Where("task_id IN ? AND is_ok = 1", taskIds)
+	err := db1.Find(&DataInfos).Error
+	DataMap := make(map[string]gorm_model.YounggeeDataInfo)
+	for _, DataInfo := range DataInfos {
+		DataMap[DataInfo.TaskID] = DataInfo
+	}
+
+	var LinkInfos []gorm_model.YounggeeLinkInfo
+	db2 := GetReadDB(ctx)
+	db2 = db2.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id IN ? AND is_ok = 1", taskIds).Find(&LinkInfos)
+	LinkMap := make(map[string]gorm_model.YounggeeLinkInfo)
+	for _, LinkInfo := range LinkInfos {
+		LinkMap[LinkInfo.TaskID] = LinkInfo
+	}
+
+	// 查询总数
+	var totalData int64
+	if err := db2.Count(&totalData).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	var misNum int64
+	if totalData > totalTask {
+		misNum = totalData - totalTask
+	} else {
+		misNum = totalTask - totalData
+	}
+	logrus.Println("totalData,totalTalent,misNum:", totalData, totalTask, misNum)
+
+	// 查询该页数据
+	limit := pageSize + misNum
+	offset := pageSize * pageNum // assert pageNum start with 0
+	err = db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
+
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+
+	var TaskFinishs []*http_model.TaskFinish
+	var taskDatas []*http_model.TaskFinishInfo
+	var newTaskFinishs []*http_model.TaskFinishInfo
+	for _, taskId := range taskIds {
+		TaskFinish := new(http_model.TaskFinish)
+		TaskFinish.Talent = taskMap[taskId]
+		TaskFinish.Data = DataMap[taskId]
+		TaskFinish.Link = LinkMap[taskId]
+		TaskFinishs = append(TaskFinishs, TaskFinish)
+	}
+
+	taskDatas = pack.TaskFinishToTaskInfo(TaskFinishs)
+
+	for _, v := range taskDatas {
+		if platform_nickname == "" {
+			newTaskFinishs = append(newTaskFinishs, v)
+		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
+			newTaskFinishs = append(newTaskFinishs, v)
+		} else if strings.Contains(conv.MustString(v.TaskID, ""), platform_nickname) {
+			newTaskFinishs = append(newTaskFinishs, v)
+		} else {
+			totalTask--
+		}
+	}
+	return newTaskFinishs, totalTask, nil
+}
+
+func GetFinishData(ctx context.Context, projectID string) ([]*gorm_model.RecruitStrategy, error) {
+	var finishRecruitStrategy []*gorm_model.RecruitStrategy
+	db := GetReadDB(ctx)
+	// 查询Task表信息
+	err := db.Debug().Model(gorm_model.RecruitStrategy{}).Where("project_id = ?", projectID).Scan(&finishRecruitStrategy).Order("strategy_id").Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	return finishRecruitStrategy, nil
+}
+
+func GetSpecialTaskFinishList(ctx context.Context, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.SpecialTaskFinishDataInfo, int64, error) {
+	db := GetReadDB(ctx)
+	// 查询Task表信息
+	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2 and task_stage = 15")
+	// 根据Project条件过滤
+	conditionType := reflect.TypeOf(conditions).Elem()
+	conditionValue := reflect.ValueOf(conditions).Elem()
+	var platform_nickname string = ""
+	for i := 0; i < conditionType.NumField(); i++ {
+		field := conditionType.Field(i)
+		tag := field.Tag.Get("condition")
+		value := conditionValue.FieldByName(field.Name)
+		if !util.IsBlank(value) {
+			if tag == "platform_nickname" {
+				platform_nickname = fmt.Sprintf("%v", value.Interface())
+				continue
+			} else if tag == "project_id" || tag == "strategy_id" {
+				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+			}
+		}
+	}
+	var taskInfos []gorm_model.YoungeeTaskInfo
+	db = db.Model(gorm_model.YoungeeTaskInfo{})
+	// 查询总数
+	var totalTask int64
+	if err := db.Count(&totalTask).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	db.Order("task_id").Find(&taskInfos)
+
+	// 查询任务id
+	var taskIds []string
+	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
+	for _, taskInfo := range taskInfos {
+		taskIds = append(taskIds, taskInfo.TaskId)
+		taskMap[taskInfo.TaskId] = taskInfo
+	}
+	db1 := GetReadDB(ctx)
+	db1 = db1.Debug().Model(gorm_model.YounggeeDataInfo{})
+
+	var DataInfos []gorm_model.YounggeeDataInfo
+	db1 = db1.Model(gorm_model.YounggeeDataInfo{}).Where("task_id IN ? AND is_ok = 1", taskIds)
+	err := db1.Find(&DataInfos).Error
+	DataMap := make(map[string]gorm_model.YounggeeDataInfo)
+	for _, DataInfo := range DataInfos {
+		DataMap[DataInfo.TaskID] = DataInfo
+	}
+
+	var LinkInfos []gorm_model.YounggeeLinkInfo
+	db2 := GetReadDB(ctx)
+	db2 = db2.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id IN ? AND is_ok = 1", taskIds).Find(&LinkInfos)
+	LinkMap := make(map[string]gorm_model.YounggeeLinkInfo)
+	for _, LinkInfo := range LinkInfos {
+		LinkMap[LinkInfo.TaskID] = LinkInfo
+	}
+
+	// 查询总数
+	var totalData int64
+	if err := db2.Count(&totalData).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	var misNum int64
+	if totalData > totalTask {
+		misNum = totalData - totalTask
+	} else {
+		misNum = totalTask - totalData
+	}
+	logrus.Println("totalData,totalTalent,misNum:", totalData, totalTask, misNum)
+
+	// 查询该页数据
+	limit := pageSize + misNum
+	offset := pageSize * pageNum // assert pageNum start with 0
+	err = db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
+
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+
+	var TaskFinishs []*http_model.SpecialTaskFinishData
+	var taskDatas []*http_model.SpecialTaskFinishDataInfo
+	var newTaskFinishs []*http_model.SpecialTaskFinishDataInfo
+	for _, taskId := range taskIds {
+		TaskFinish := new(http_model.SpecialTaskFinishData)
+		TaskFinish.Talent = taskMap[taskId]
+		TaskFinish.Data = DataMap[taskId]
+		TaskFinish.Link = LinkMap[taskId]
+		TaskFinishs = append(TaskFinishs, TaskFinish)
+	}
+
+	taskDatas = pack.SpecialTaskFinishDataToTaskInfo(TaskFinishs)
+
+	for _, v := range taskDatas {
+		if platform_nickname == "" {
+			newTaskFinishs = append(newTaskFinishs, v)
+		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
+			newTaskFinishs = append(newTaskFinishs, v)
+		} else if strings.Contains(conv.MustString(v.TaskID, ""), platform_nickname) {
+			newTaskFinishs = append(newTaskFinishs, v)
+		} else {
+			totalTask--
+		}
+	}
+	return newTaskFinishs, totalTask, nil
+}
+
+func GetSpecialFinishDataNumber(ctx context.Context, projectId string) (*http_model.GetSpecialFinishDataData, error) {
+	db := GetReadDB(ctx)
+	// 查询Task表信息
+	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2 and task_stage = 15 and project_id = ?", projectId)
+	var taskInfos []gorm_model.YoungeeTaskInfo
+	// 查询总数
+	var totalTask int64
+	if err := db.Count(&totalTask).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetSpecialFinishDataNumber] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	db.Order("task_id").Find(&taskInfos)
+
+	// 查询任务id
+	var taskIds []string
+	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
+	for _, taskInfo := range taskInfos {
+		taskIds = append(taskIds, taskInfo.TaskId)
+		taskMap[taskInfo.TaskId] = taskInfo
+	}
+	db1 := GetReadDB(ctx)
+	db1 = db1.Debug().Model(gorm_model.YounggeeDataInfo{})
+
+	var DataInfos []gorm_model.YounggeeDataInfo
+	db1 = db1.Model(gorm_model.YounggeeDataInfo{}).Where("task_id IN ? AND is_ok = 1", taskIds)
+	err := db1.Find(&DataInfos).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetSpecialFinishDataNumber] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	DataMap := make(map[string]gorm_model.YounggeeDataInfo)
+	for _, DataInfo := range DataInfos {
+		DataMap[DataInfo.TaskID] = DataInfo
+	}
+
+	taskFinishData := http_model.GetSpecialFinishDataData{
+		FinishNumber:  totalTask,
+		FanNumber:     0,
+		PlayNumber:    0,
+		LikeNumber:    0,
+		CommentNumber: 0,
+		CollectNumber: 0,
+	}
+	for _, taskId := range taskIds {
+		fans := conv.MustString(gjson.Get(taskMap[taskId].TalentPlatformInfoSnap, "fans_count"), "")
+		taskFinishData.FanNumber += conv.MustInt(fans, 0)
+		taskFinishData.PlayNumber += DataMap[taskId].PlayNumber
+		taskFinishData.LikeNumber += DataMap[taskId].LikeNumber
+		taskFinishData.CollectNumber += DataMap[taskId].CollectNumber
+		taskFinishData.CommentNumber += DataMap[taskId].CommentNumber
+	}
+	return &taskFinishData, nil
+}

+ 44 - 44
db/info_pricing_strategy.go

@@ -1,44 +1,44 @@
-package db
-
-import (
-	"context"
-	"fmt"
-	"youngee_m_api/model/gorm_model"
-
-	log "github.com/sirupsen/logrus"
-)
-
-func GetPricingStrategy(ctx context.Context, fansLow int64, fansUp int64, feeForm int64, platForm int64) (*gorm_model.InfoPricingStrategy, error) {
-	db := GetReadDB(ctx)
-	var PricingStrategys []gorm_model.InfoPricingStrategy
-	whereStr := fmt.Sprintf("fee_form = %d and platform = %d and fans_low <= %d and fans_up > %d", feeForm, platForm, fansLow, fansLow)
-	orStr := fmt.Sprintf("fee_form = %d and platform = %d and fans_low < %d and fans_up >= %d", feeForm, platForm, fansUp, fansUp)
-	orStr1 := fmt.Sprintf("fee_form = %d and platform = %d and fans_low >= %d and fans_up <= %d", feeForm, platForm, fansLow, fansUp)
-	orStr2 := fmt.Sprintf("fee_form = %d and platform = %d and fans_low <= %d and fans_up >= %d", feeForm, platForm, fansLow, fansUp)
-	err := db.Model(gorm_model.InfoPricingStrategy{}).Where(whereStr).Or(orStr).Or(orStr1).Or(orStr2).Scan(&PricingStrategys).Error
-	if err != nil {
-		log.Println("DB GetLastAutoDefaultID:", err)
-		return nil, err
-	}
-	PricingStrategy := gorm_model.InfoPricingStrategy{}
-	if feeForm == 1 {
-		var maxCharge float64 = 0
-		for _, v := range PricingStrategys {
-			fmt.Println(v.ServiceCharge)
-			if v.ServiceCharge >= maxCharge {
-				maxCharge = v.ServiceCharge
-				PricingStrategy = v
-			}
-		}
-	} else {
-		var maxRate int64 = 0
-		for _, v := range PricingStrategys {
-			fmt.Println(v.ServiceRate)
-			if v.ServiceRate >= maxRate {
-				maxRate = v.ServiceRate
-				PricingStrategy = v
-			}
-		}
-	}
-	return &PricingStrategy, nil
-}
+package db
+
+import (
+	"context"
+	"fmt"
+	"youngee_m_api/model/gorm_model"
+
+	log "github.com/sirupsen/logrus"
+)
+
+func GetPricingStrategy(ctx context.Context, fansLow int64, fansUp int64, feeForm int64, platForm int64) (*gorm_model.InfoPricingStrategy, error) {
+	db := GetReadDB(ctx)
+	var PricingStrategys []gorm_model.InfoPricingStrategy
+	whereStr := fmt.Sprintf("fee_form = %d and platform = %d and fans_low <= %d and fans_up > %d", feeForm, platForm, fansLow, fansLow)
+	orStr := fmt.Sprintf("fee_form = %d and platform = %d and fans_low < %d and fans_up >= %d", feeForm, platForm, fansUp, fansUp)
+	orStr1 := fmt.Sprintf("fee_form = %d and platform = %d and fans_low >= %d and fans_up <= %d", feeForm, platForm, fansLow, fansUp)
+	orStr2 := fmt.Sprintf("fee_form = %d and platform = %d and fans_low <= %d and fans_up >= %d", feeForm, platForm, fansLow, fansUp)
+	err := db.Model(gorm_model.InfoPricingStrategy{}).Where(whereStr).Or(orStr).Or(orStr1).Or(orStr2).Scan(&PricingStrategys).Error
+	if err != nil {
+		log.Println("DB GetLastAutoDefaultID:", err)
+		return nil, err
+	}
+	PricingStrategy := gorm_model.InfoPricingStrategy{}
+	if feeForm == 1 {
+		var maxCharge float64 = 0
+		for _, v := range PricingStrategys {
+			fmt.Println(v.ServiceCharge)
+			if v.ServiceCharge >= maxCharge {
+				maxCharge = v.ServiceCharge
+				PricingStrategy = v
+			}
+		}
+	} else {
+		var maxRate int64 = 0
+		for _, v := range PricingStrategys {
+			fmt.Println(v.ServiceRate)
+			if v.ServiceRate >= maxRate {
+				maxRate = v.ServiceRate
+				PricingStrategy = v
+			}
+		}
+	}
+	return &PricingStrategy, nil
+}

+ 30 - 30
db/init.go

@@ -1,30 +1,30 @@
-package db
-
-import (
-	"context"
-	"fmt"
-	"youngee_m_api/model/system_model"
-
-	"gorm.io/driver/mysql"
-	"gorm.io/gorm"
-)
-
-var client *gorm.DB
-
-func Init(config *system_model.Mysql) {
-	dsn := "%v:%v@tcp(%v:%v)/%v?charset=utf8mb4&parseTime=True&loc=Local"
-	dsn = fmt.Sprintf(dsn, config.User, config.Password, config.Host, config.Port, config.Database)
-	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
-	if err != nil {
-		panic(err)
-	}
-	client = db
-}
-
-func GetReadDB(ctx context.Context) *gorm.DB {
-	return client.WithContext(ctx)
-}
-
-func GetWriteDB(ctx context.Context) *gorm.DB {
-	return client.WithContext(ctx)
-}
+package db
+
+import (
+	"context"
+	"fmt"
+	"youngee_m_api/model/system_model"
+
+	"gorm.io/driver/mysql"
+	"gorm.io/gorm"
+)
+
+var client *gorm.DB
+
+func Init(config *system_model.Mysql) {
+	dsn := "%v:%v@tcp(%v:%v)/%v?charset=utf8mb4&parseTime=True&loc=Local"
+	dsn = fmt.Sprintf(dsn, config.User, config.Password, config.Host, config.Port, config.Database)
+	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
+	if err != nil {
+		panic(err)
+	}
+	client = db
+}
+
+func GetReadDB(ctx context.Context) *gorm.DB {
+	return client.WithContext(ctx)
+}
+
+func GetWriteDB(ctx context.Context) *gorm.DB {
+	return client.WithContext(ctx)
+}

+ 279 - 279
db/link.go

@@ -1,279 +1,279 @@
-package db
-
-import (
-	"context"
-	"fmt"
-	"reflect"
-	"strings"
-	"time"
-	"youngee_m_api/model/common_model"
-	"youngee_m_api/model/gorm_model"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/pack"
-	"youngee_m_api/util"
-
-	"github.com/caixw/lib.go/conv"
-	"github.com/sirupsen/logrus"
-)
-
-// GetTaskLinkList 查询上传链接的task list
-func GetTaskLinkList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskLinkInfo, int64, error) {
-	db := GetReadDB(ctx)
-	// 查询Task表信息
-	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
-	// 根据Project条件过滤
-	conditionType := reflect.TypeOf(conditions).Elem()
-	conditionValue := reflect.ValueOf(conditions).Elem()
-	var platform_nickname string = ""
-	for i := 0; i < conditionType.NumField(); i++ {
-		field := conditionType.Field(i)
-		tag := field.Tag.Get("condition")
-		value := conditionValue.FieldByName(field.Name)
-		if tag == "link_status" {
-			fmt.Printf("link %+v", value.Interface() == int64(0))
-			if value.Interface() == int64(0) {
-				db = db.Where("task_stage = 12")
-			} else {
-				db = db.Where("task_stage > 12 and task_stage <> 16")
-			}
-			continue
-		} else if !util.IsBlank(value) {
-			if tag == "platform_nickname" {
-				platform_nickname = fmt.Sprintf("%v", value.Interface())
-				continue
-			} else if tag == "project_id" || tag == "strategy_id" {
-				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-			}
-		}
-	}
-	var taskInfos []gorm_model.YoungeeTaskInfo
-	db = db.Model(gorm_model.YoungeeTaskInfo{})
-	// 查询总数
-	var totalTask int64
-	if err := db.Count(&totalTask).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	db.Order("task_id").Find(&taskInfos)
-
-	// 查询任务id
-	var taskIds []string
-	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
-	for _, taskInfo := range taskInfos {
-		taskIds = append(taskIds, taskInfo.TaskId)
-		taskMap[taskInfo.TaskId] = taskInfo
-	}
-	db1 := GetReadDB(ctx)
-	db1 = db1.Debug().Model(gorm_model.YounggeeLinkInfo{})
-
-	var LinkInfos []gorm_model.YounggeeLinkInfo
-	db1 = db1.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id IN ? AND is_submit=? ", taskIds, 1)
-	if conditions.LinkStatus == int64(0) {
-		db1 = db1.Where("is_review = 0").Find(&LinkInfos)
-	} else {
-		db1 = db1.Where("is_ok = 1").Find(&LinkInfos)
-	}
-	LinkMap := make(map[string]gorm_model.YounggeeLinkInfo)
-	for _, LinkInfo := range LinkInfos {
-		LinkMap[LinkInfo.TaskID] = LinkInfo
-	}
-	// 查询总数
-	var totalLink int64
-	if err := db1.Count(&totalLink).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	var misNum int64
-	if totalLink > totalTask {
-		misNum = totalLink - totalTask
-	} else {
-		misNum = totalTask - totalLink
-	}
-	logrus.Println("totalLink,totalTalent,misNum:", totalLink, totalTask, misNum)
-
-	// 查询该页数据
-	limit := pageSize + misNum
-	offset := pageSize * pageNum // assert pageNum start with 0
-	err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-
-	var TaskLinks []*http_model.TaskLink
-	var taskLinks []*http_model.TaskLinkInfo
-	var newTaskLinks []*http_model.TaskLinkInfo
-	for _, taskId := range taskIds {
-		TaskLink := new(http_model.TaskLink)
-		TaskLink.Talent = taskMap[taskId]
-		TaskLink.Link = LinkMap[taskId]
-		TaskLinks = append(TaskLinks, TaskLink)
-	}
-
-	taskLinks = pack.TaskLinkToTaskInfo(TaskLinks)
-
-	for _, v := range taskLinks {
-		if platform_nickname == "" {
-			newTaskLinks = append(newTaskLinks, v)
-		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
-			newTaskLinks = append(newTaskLinks, v)
-		} else if strings.Contains(conv.MustString(v.TaskID, ""), platform_nickname) {
-			newTaskLinks = append(newTaskLinks, v)
-		} else {
-			totalTask--
-		}
-	}
-	return newTaskLinks, totalTask, nil
-}
-
-// LinkOpinion 提交意见
-func LinkOpinion(ctx context.Context, TaskID string, ReviseOpinion string) error {
-	db := GetReadDB(ctx)
-	err := db.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id = ? and is_review = 0", TaskID).Updates(map[string]interface{}{"revise_opinion": ReviseOpinion, "reject_at": time.Now(), "is_review": 1}).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[Link db] Update YounggeeLinkInfo error,err:%+v", err)
-		return err
-	}
-	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeTaskInfo{LinkStatus: 3}).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[Link db] Update YoungeeTaskInfo error,err:%+v", err)
-		return err
-	}
-	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeTaskInfo{TaskStage: 11}).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[Link db] Update YoungeeTaskInfo error,err:%+v", err)
-		return err
-	}
-	return nil
-}
-
-// AcceptLink 同意链接
-func AcceptLink(ctx context.Context, TaskIDs []string) error {
-	db := GetReadDB(ctx)
-	err := db.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id in ?  and is_review = 0", TaskIDs).Updates(map[string]interface{}{"is_ok": 1, "is_review": 1, "agree_at": time.Now()}).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[Link db] Update YounggeeLinkInfo error,err:%+v", err)
-		return err
-	}
-	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{LinkStatus: 5}).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[Link db] Update YoungeeTaskInfo error,err:%+v", err)
-		return err
-	}
-	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{TaskStage: 13}).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[Link db] Update YoungeeTaskInfo error,err:%+v", err)
-		return err
-	}
-	return nil
-}
-
-// GetSpecialTaskLinkList 专项任务-查询上传链接的task list
-func GetSpecialTaskLinkList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.SpecialTaskLinkInfo, int64, error) {
-	db := GetReadDB(ctx)
-	// 查询Task表信息
-	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
-	// 根据Project条件过滤
-	conditionType := reflect.TypeOf(conditions).Elem()
-	conditionValue := reflect.ValueOf(conditions).Elem()
-	var platform_nickname string = ""
-	for i := 0; i < conditionType.NumField(); i++ {
-		field := conditionType.Field(i)
-		tag := field.Tag.Get("condition")
-		value := conditionValue.FieldByName(field.Name)
-		if tag == "link_status" {
-			fmt.Printf("link %+v", value.Interface() == int64(0))
-			if value.Interface() == int64(0) {
-				db = db.Where("task_stage = 12")
-			} else {
-				db = db.Where("task_stage > 12 and task_stage <> 16")
-			}
-			continue
-		} else if !util.IsBlank(value) {
-			if tag == "platform_nickname" {
-				platform_nickname = fmt.Sprintf("%v", value.Interface())
-				continue
-			} else if tag == "project_id" {
-				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-			}
-		}
-	}
-	var taskInfos []gorm_model.YoungeeTaskInfo
-	db = db.Model(gorm_model.YoungeeTaskInfo{})
-	// 查询总数
-	var totalTask int64
-	if err := db.Count(&totalTask).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	db.Order("task_id").Find(&taskInfos)
-
-	// 查询任务id
-	var taskIds []string
-	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
-	for _, taskInfo := range taskInfos {
-		taskIds = append(taskIds, taskInfo.TaskId)
-		taskMap[taskInfo.TaskId] = taskInfo
-	}
-	db1 := GetReadDB(ctx)
-	db1 = db1.Debug().Model(gorm_model.YounggeeLinkInfo{})
-
-	var LinkInfos []gorm_model.YounggeeLinkInfo
-	db1 = db1.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id IN ? AND is_submit=? ", taskIds, 1)
-	if conditions.LinkStatus == int64(0) {
-		db1 = db1.Where("is_review = 0").Find(&LinkInfos)
-	} else {
-		db1 = db1.Where("is_ok = 1").Find(&LinkInfos)
-	}
-	LinkMap := make(map[string]gorm_model.YounggeeLinkInfo)
-	for _, LinkInfo := range LinkInfos {
-		LinkMap[LinkInfo.TaskID] = LinkInfo
-	}
-	// 查询总数
-	var totalLink int64
-	if err := db1.Count(&totalLink).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	var misNum int64
-	if totalLink > totalTask {
-		misNum = totalLink - totalTask
-	} else {
-		misNum = totalTask - totalLink
-	}
-	//logrus.Println("totalLink,totalTalent,misNum:", totalLink, totalTask, misNum)
-
-	// 查询该页数据
-	limit := pageSize + misNum
-	offset := pageSize * pageNum // assert pageNum start with 0
-	err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-
-	var TaskLinks []*http_model.SpecialTaskLink
-	var taskLinks []*http_model.SpecialTaskLinkInfo
-	var newTaskLinks []*http_model.SpecialTaskLinkInfo
-	for _, taskId := range taskIds {
-		TaskLink := new(http_model.SpecialTaskLink)
-		TaskLink.Talent = taskMap[taskId]
-		TaskLink.Link = LinkMap[taskId]
-		TaskLinks = append(TaskLinks, TaskLink)
-	}
-
-	taskLinks = pack.SpecialTaskLinkToTaskInfo(TaskLinks)
-
-	for _, v := range taskLinks {
-		if platform_nickname == "" {
-			newTaskLinks = append(newTaskLinks, v)
-		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
-			newTaskLinks = append(newTaskLinks, v)
-		} else if strings.Contains(conv.MustString(v.TaskID, ""), platform_nickname) {
-			newTaskLinks = append(newTaskLinks, v)
-		} else {
-			totalTask--
-		}
-	}
-	return newTaskLinks, totalTask, nil
-}
+package db
+
+import (
+	"context"
+	"fmt"
+	"reflect"
+	"strings"
+	"time"
+	"youngee_m_api/model/common_model"
+	"youngee_m_api/model/gorm_model"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/pack"
+	"youngee_m_api/util"
+
+	"github.com/caixw/lib.go/conv"
+	"github.com/sirupsen/logrus"
+)
+
+// GetTaskLinkList 查询上传链接的task list
+func GetTaskLinkList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskLinkInfo, int64, error) {
+	db := GetReadDB(ctx)
+	// 查询Task表信息
+	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
+	// 根据Project条件过滤
+	conditionType := reflect.TypeOf(conditions).Elem()
+	conditionValue := reflect.ValueOf(conditions).Elem()
+	var platform_nickname string = ""
+	for i := 0; i < conditionType.NumField(); i++ {
+		field := conditionType.Field(i)
+		tag := field.Tag.Get("condition")
+		value := conditionValue.FieldByName(field.Name)
+		if tag == "link_status" {
+			fmt.Printf("link %+v", value.Interface() == int64(0))
+			if value.Interface() == int64(0) {
+				db = db.Where("task_stage = 12")
+			} else {
+				db = db.Where("task_stage > 12 and task_stage <> 16")
+			}
+			continue
+		} else if !util.IsBlank(value) {
+			if tag == "platform_nickname" {
+				platform_nickname = fmt.Sprintf("%v", value.Interface())
+				continue
+			} else if tag == "project_id" || tag == "strategy_id" {
+				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+			}
+		}
+	}
+	var taskInfos []gorm_model.YoungeeTaskInfo
+	db = db.Model(gorm_model.YoungeeTaskInfo{})
+	// 查询总数
+	var totalTask int64
+	if err := db.Count(&totalTask).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	db.Order("task_id").Find(&taskInfos)
+
+	// 查询任务id
+	var taskIds []string
+	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
+	for _, taskInfo := range taskInfos {
+		taskIds = append(taskIds, taskInfo.TaskId)
+		taskMap[taskInfo.TaskId] = taskInfo
+	}
+	db1 := GetReadDB(ctx)
+	db1 = db1.Debug().Model(gorm_model.YounggeeLinkInfo{})
+
+	var LinkInfos []gorm_model.YounggeeLinkInfo
+	db1 = db1.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id IN ? AND is_submit=? ", taskIds, 1)
+	if conditions.LinkStatus == int64(0) {
+		db1 = db1.Where("is_review = 0").Find(&LinkInfos)
+	} else {
+		db1 = db1.Where("is_ok = 1").Find(&LinkInfos)
+	}
+	LinkMap := make(map[string]gorm_model.YounggeeLinkInfo)
+	for _, LinkInfo := range LinkInfos {
+		LinkMap[LinkInfo.TaskID] = LinkInfo
+	}
+	// 查询总数
+	var totalLink int64
+	if err := db1.Count(&totalLink).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	var misNum int64
+	if totalLink > totalTask {
+		misNum = totalLink - totalTask
+	} else {
+		misNum = totalTask - totalLink
+	}
+	logrus.Println("totalLink,totalTalent,misNum:", totalLink, totalTask, misNum)
+
+	// 查询该页数据
+	limit := pageSize + misNum
+	offset := pageSize * pageNum // assert pageNum start with 0
+	err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+
+	var TaskLinks []*http_model.TaskLink
+	var taskLinks []*http_model.TaskLinkInfo
+	var newTaskLinks []*http_model.TaskLinkInfo
+	for _, taskId := range taskIds {
+		TaskLink := new(http_model.TaskLink)
+		TaskLink.Talent = taskMap[taskId]
+		TaskLink.Link = LinkMap[taskId]
+		TaskLinks = append(TaskLinks, TaskLink)
+	}
+
+	taskLinks = pack.TaskLinkToTaskInfo(TaskLinks)
+
+	for _, v := range taskLinks {
+		if platform_nickname == "" {
+			newTaskLinks = append(newTaskLinks, v)
+		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
+			newTaskLinks = append(newTaskLinks, v)
+		} else if strings.Contains(conv.MustString(v.TaskID, ""), platform_nickname) {
+			newTaskLinks = append(newTaskLinks, v)
+		} else {
+			totalTask--
+		}
+	}
+	return newTaskLinks, totalTask, nil
+}
+
+// LinkOpinion 提交意见
+func LinkOpinion(ctx context.Context, TaskID string, ReviseOpinion string) error {
+	db := GetReadDB(ctx)
+	err := db.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id = ? and is_review = 0", TaskID).Updates(map[string]interface{}{"revise_opinion": ReviseOpinion, "reject_at": time.Now(), "is_review": 1}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Link db] Update YounggeeLinkInfo error,err:%+v", err)
+		return err
+	}
+	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeTaskInfo{LinkStatus: 3}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Link db] Update YoungeeTaskInfo error,err:%+v", err)
+		return err
+	}
+	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeTaskInfo{TaskStage: 11}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Link db] Update YoungeeTaskInfo error,err:%+v", err)
+		return err
+	}
+	return nil
+}
+
+// AcceptLink 同意链接
+func AcceptLink(ctx context.Context, TaskIDs []string) error {
+	db := GetReadDB(ctx)
+	err := db.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id in ?  and is_review = 0", TaskIDs).Updates(map[string]interface{}{"is_ok": 1, "is_review": 1, "agree_at": time.Now()}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Link db] Update YounggeeLinkInfo error,err:%+v", err)
+		return err
+	}
+	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{LinkStatus: 5}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Link db] Update YoungeeTaskInfo error,err:%+v", err)
+		return err
+	}
+	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{TaskStage: 13}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Link db] Update YoungeeTaskInfo error,err:%+v", err)
+		return err
+	}
+	return nil
+}
+
+// GetSpecialTaskLinkList 专项任务-查询上传链接的task list
+func GetSpecialTaskLinkList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.SpecialTaskLinkInfo, int64, error) {
+	db := GetReadDB(ctx)
+	// 查询Task表信息
+	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
+	// 根据Project条件过滤
+	conditionType := reflect.TypeOf(conditions).Elem()
+	conditionValue := reflect.ValueOf(conditions).Elem()
+	var platform_nickname string = ""
+	for i := 0; i < conditionType.NumField(); i++ {
+		field := conditionType.Field(i)
+		tag := field.Tag.Get("condition")
+		value := conditionValue.FieldByName(field.Name)
+		if tag == "link_status" {
+			fmt.Printf("link %+v", value.Interface() == int64(0))
+			if value.Interface() == int64(0) {
+				db = db.Where("task_stage = 12")
+			} else {
+				db = db.Where("task_stage > 12 and task_stage <> 16")
+			}
+			continue
+		} else if !util.IsBlank(value) {
+			if tag == "platform_nickname" {
+				platform_nickname = fmt.Sprintf("%v", value.Interface())
+				continue
+			} else if tag == "project_id" {
+				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+			}
+		}
+	}
+	var taskInfos []gorm_model.YoungeeTaskInfo
+	db = db.Model(gorm_model.YoungeeTaskInfo{})
+	// 查询总数
+	var totalTask int64
+	if err := db.Count(&totalTask).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	db.Order("task_id").Find(&taskInfos)
+
+	// 查询任务id
+	var taskIds []string
+	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
+	for _, taskInfo := range taskInfos {
+		taskIds = append(taskIds, taskInfo.TaskId)
+		taskMap[taskInfo.TaskId] = taskInfo
+	}
+	db1 := GetReadDB(ctx)
+	db1 = db1.Debug().Model(gorm_model.YounggeeLinkInfo{})
+
+	var LinkInfos []gorm_model.YounggeeLinkInfo
+	db1 = db1.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id IN ? AND is_submit=? ", taskIds, 1)
+	if conditions.LinkStatus == int64(0) {
+		db1 = db1.Where("is_review = 0").Find(&LinkInfos)
+	} else {
+		db1 = db1.Where("is_ok = 1").Find(&LinkInfos)
+	}
+	LinkMap := make(map[string]gorm_model.YounggeeLinkInfo)
+	for _, LinkInfo := range LinkInfos {
+		LinkMap[LinkInfo.TaskID] = LinkInfo
+	}
+	// 查询总数
+	var totalLink int64
+	if err := db1.Count(&totalLink).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	var misNum int64
+	if totalLink > totalTask {
+		misNum = totalLink - totalTask
+	} else {
+		misNum = totalTask - totalLink
+	}
+	//logrus.Println("totalLink,totalTalent,misNum:", totalLink, totalTask, misNum)
+
+	// 查询该页数据
+	limit := pageSize + misNum
+	offset := pageSize * pageNum // assert pageNum start with 0
+	err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+
+	var TaskLinks []*http_model.SpecialTaskLink
+	var taskLinks []*http_model.SpecialTaskLinkInfo
+	var newTaskLinks []*http_model.SpecialTaskLinkInfo
+	for _, taskId := range taskIds {
+		TaskLink := new(http_model.SpecialTaskLink)
+		TaskLink.Talent = taskMap[taskId]
+		TaskLink.Link = LinkMap[taskId]
+		TaskLinks = append(TaskLinks, TaskLink)
+	}
+
+	taskLinks = pack.SpecialTaskLinkToTaskInfo(TaskLinks)
+
+	for _, v := range taskLinks {
+		if platform_nickname == "" {
+			newTaskLinks = append(newTaskLinks, v)
+		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
+			newTaskLinks = append(newTaskLinks, v)
+		} else if strings.Contains(conv.MustString(v.TaskID, ""), platform_nickname) {
+			newTaskLinks = append(newTaskLinks, v)
+		} else {
+			totalTask--
+		}
+	}
+	return newTaskLinks, totalTask, nil
+}

+ 296 - 296
db/logistics.go

@@ -1,296 +1,296 @@
-package db
-
-import (
-	"context"
-	"fmt"
-	"reflect"
-	"strconv"
-	"strings"
-	"time"
-	"youngee_m_api/model/common_model"
-	"youngee_m_api/model/gorm_model"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/pack"
-	"youngee_m_api/util"
-
-	"github.com/caixw/lib.go/conv"
-	"github.com/sirupsen/logrus"
-	"github.com/tidwall/gjson"
-)
-
-//新增
-func CreateLogistics(ctx context.Context, logistics gorm_model.YoungeeTaskLogistics, RecruitStrategyID int64) (*int64, error) {
-	db := GetReadDB(ctx)
-	err := db.Create(&logistics).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[logistics db] call CreateLogistics error,err:%+v", err)
-		return nil, err
-	}
-	return &logistics.LogisticsID, nil
-}
-
-//修改接口
-func UpdateLogistics(ctx context.Context, logistics gorm_model.YoungeeTaskLogistics) (*int64, error) {
-	db := GetReadDB(ctx)
-	err := db.Model(&logistics).Where("task_id = ?", logistics.TaskID).Updates(logistics).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[logistics db] call UpdateLogistics error,err:%+v", err)
-		return nil, err
-	}
-	return &logistics.LogisticsID, nil
-}
-
-// 更改签收时间
-func SignForReceipt(ctx context.Context, taskID string) error {
-	db := GetReadDB(ctx)
-	t := time.Now()
-	err := db.Model(gorm_model.YoungeeTaskLogistics{}).Where("task_id = ?", taskID).Updates(gorm_model.YoungeeTaskLogistics{
-		Status:     1,
-		SignedTime: &t,
-	}).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[logistics db] call UpdateLogistics error,err:%+v", err)
-		return err
-	}
-	return nil
-}
-
-// GetTaskLogisticsList 查询包含物流信息的task list
-func GetTaskLogisticsList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskLogisticsInfo, int64, error) {
-	db := GetReadDB(ctx)
-	// 查询Task表信息
-	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
-	// 根据Project条件过滤
-	conditionType := reflect.TypeOf(conditions).Elem()
-	conditionValue := reflect.ValueOf(conditions).Elem()
-	var platform_nickname string = ""
-	for i := 0; i < conditionType.NumField(); i++ {
-		field := conditionType.Field(i)
-		tag := field.Tag.Get("condition")
-		value := conditionValue.FieldByName(field.Name)
-		if !util.IsBlank(value) {
-			if tag == "platform_nickname" {
-				platform_nickname = fmt.Sprintf("%v", value.Interface())
-				continue
-			} else {
-				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-			}
-		}
-	}
-	var taskInfos []gorm_model.YoungeeTaskInfo
-	db = db.Model(gorm_model.YoungeeTaskInfo{})
-	// 查询总数
-	var totalTask int64
-	if err := db.Count(&totalTask).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	db.Order("task_id").Find(&taskInfos)
-
-	// 查询任务id
-	var taskIds []string
-	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
-	for _, taskInfo := range taskInfos {
-		taskIds = append(taskIds, taskInfo.TaskId)
-		taskMap[taskInfo.TaskId] = taskInfo
-	}
-	db1 := GetReadDB(ctx)
-	db1 = db1.Debug().Model(gorm_model.YoungeeTaskLogistics{})
-
-	var logisticsInfos []gorm_model.YoungeeTaskLogistics
-	db1 = db1.Model(gorm_model.YoungeeTaskLogistics{}).Where("task_id IN ?", taskIds).Find(&logisticsInfos)
-	logisticsMap := make(map[string]gorm_model.YoungeeTaskLogistics)
-	for _, logisticsInfo := range logisticsInfos {
-		logisticsMap[logisticsInfo.TaskID] = logisticsInfo
-	}
-	// 查询总数
-	var totalLogistics int64
-	if err := db1.Count(&totalLogistics).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-
-	// 查询该页数据
-	limit := pageSize
-	offset := pageSize * pageNum // assert pageNum start with 0
-	err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-
-	var TaskLogisticss []*http_model.TaskLogistics
-	var taskLogisticss []*http_model.TaskLogisticsInfo
-	var newTaskLogisticss []*http_model.TaskLogisticsInfo
-	for _, taskId := range taskIds {
-		TaskLogistics := new(http_model.TaskLogistics)
-		TaskLogistics.Talent = taskMap[taskId]
-		TaskLogistics.Logistics = logisticsMap[taskId]
-		TalentPostAddrSnap := TaskLogistics.Talent.TalentPostAddrSnap
-		regionCode, _ := strconv.Atoi(conv.MustString(gjson.Get(TalentPostAddrSnap, "region_code"), ""))
-		TaskLogistics.Region = GetRegion(ctx, regionCode)
-		TaskLogisticss = append(TaskLogisticss, TaskLogistics)
-	}
-	taskLogisticss = pack.TaskLogisticsToTaskInfo(TaskLogisticss)
-
-	for _, v := range taskLogisticss {
-		if platform_nickname == "" {
-			newTaskLogisticss = append(newTaskLogisticss, v)
-		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
-			newTaskLogisticss = append(newTaskLogisticss, v)
-		} else if strings.Contains(v.TaskID, platform_nickname) {
-			newTaskLogisticss = append(newTaskLogisticss, v)
-		} else {
-			totalTask--
-		}
-	}
-	return newTaskLogisticss, totalTask, nil
-}
-
-// 修改任务表的物流状态
-func ChangeLogisticsStatus(ctx context.Context, taskIds []string) error {
-	db := GetReadDB(ctx)
-	err := db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_id IN ?", taskIds).Update("logistics_status", 3).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[ChangeTaskStatus] error query mysql total, err:%+v", err)
-		return err
-	}
-	return nil
-}
-
-// GetSpecialTaskLogisticsList 查询专项包含物流信息的task list
-func GetSpecialTaskLogisticsList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.SpecialTaskLogisticsInfo, int64, error) {
-	db := GetReadDB(ctx)
-	// 查询Task表信息
-	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2 and project_id = ?", projectID)
-	// 根据Project条件过滤
-	conditionType := reflect.TypeOf(conditions).Elem()
-	conditionValue := reflect.ValueOf(conditions).Elem()
-	var platformNickname string = ""
-	for i := 0; i < conditionType.NumField(); i++ {
-		field := conditionType.Field(i)
-		tag := field.Tag.Get("condition")
-		value := conditionValue.FieldByName(field.Name)
-		if !util.IsBlank(value) {
-			if tag == "platform_nickname" {
-				platformNickname = fmt.Sprintf("%v", value.Interface())
-				continue
-			} else {
-				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-			}
-		}
-	}
-	var taskInfos []gorm_model.YoungeeTaskInfo
-	db = db.Model(gorm_model.YoungeeTaskInfo{})
-	// 查询总数
-	var totalTask int64
-	if err := db.Count(&totalTask).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetSpecialTaskLogisticsList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	db.Order("task_id").Find(&taskInfos)
-
-	// 查询任务id
-	var taskIds []string
-	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
-	for _, taskInfo := range taskInfos {
-		taskIds = append(taskIds, taskInfo.TaskId)
-		taskMap[taskInfo.TaskId] = taskInfo
-	}
-	db1 := GetReadDB(ctx)
-	db1 = db1.Debug().Model(gorm_model.YoungeeTaskLogistics{})
-
-	var logisticsInfos []gorm_model.YoungeeTaskLogistics
-	db1 = db1.Model(gorm_model.YoungeeTaskLogistics{}).Where("task_id IN ?", taskIds).Find(&logisticsInfos)
-	logisticsMap := make(map[string]gorm_model.YoungeeTaskLogistics)
-	for _, logisticsInfo := range logisticsInfos {
-		logisticsMap[logisticsInfo.TaskID] = logisticsInfo
-	}
-	// 查询总数
-	var totalLogistics int64
-	if err := db1.Count(&totalLogistics).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetSpecialTaskLogisticsList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-
-	// 查询该页数据
-	limit := pageSize
-	offset := pageSize * pageNum // assert pageNum start with 0
-	err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetSpecialTaskLogisticsList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-
-	var TaskLogisticss []*http_model.SpecialTaskLogistics
-	var taskLogisticss []*http_model.SpecialTaskLogisticsInfo
-	var newTaskLogisticss []*http_model.SpecialTaskLogisticsInfo
-	for _, taskId := range taskIds {
-		TaskLogistics := new(http_model.SpecialTaskLogistics)
-		TaskLogistics.Talent = taskMap[taskId]
-		TaskLogistics.Logistics = logisticsMap[taskId]
-		TalentPostAddrSnap := TaskLogistics.Talent.TalentPostAddrSnap
-		regionCode, _ := strconv.Atoi(conv.MustString(gjson.Get(TalentPostAddrSnap, "region_code"), ""))
-		TaskLogistics.Region = GetRegion(ctx, regionCode)
-		TaskLogisticss = append(TaskLogisticss, TaskLogistics)
-	}
-	taskLogisticss = pack.SpecialTaskLogisticsToTaskInfo(TaskLogisticss)
-
-	for _, v := range taskLogisticss {
-		if platformNickname == "" {
-			newTaskLogisticss = append(newTaskLogisticss, v)
-		} else if strings.Contains(v.PlatformNickname, platformNickname) {
-			newTaskLogisticss = append(newTaskLogisticss, v)
-		} else if strings.Contains(v.TaskID, platformNickname) {
-			newTaskLogisticss = append(newTaskLogisticss, v)
-		} else {
-			totalTask--
-		}
-	}
-	return newTaskLogisticss, totalTask, nil
-}
-
-func GetSecTaskLogisticsList(ctx context.Context, secTaskList []*http_model.SecTaskInfo, taskStage int, productType int) ([]*http_model.SecTaskInfo, error) {
-	db := GetReadDB(ctx)
-	if taskStage != 6 { // 已发货
-		// 查询youngee_task_logistics中物流信息
-		var taskIds []string
-		taskMap := make(map[string]*http_model.SecTaskInfo)
-		for _, secTask := range secTaskList {
-			taskIds = append(taskIds, secTask.SecTaskId)
-			taskMap[secTask.SecTaskId] = secTask
-		}
-
-		var logisticsInfos []gorm_model.YoungeeTaskLogistics
-		err := db.Model(gorm_model.YoungeeTaskLogistics{}).Where("task_id IN ?", taskIds).Find(&logisticsInfos).Error
-		if err != nil {
-			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-			return nil, err
-		}
-		logisticsMap := make(map[string]gorm_model.YoungeeTaskLogistics)
-		for _, logisticsInfo := range logisticsInfos {
-			logisticsMap[logisticsInfo.TaskID] = logisticsInfo
-		}
-		// 融合信息
-		for i, secTask := range secTaskList {
-			taskID := secTask.SecTaskId
-			secTaskList[i].CompanyName = logisticsMap[taskID].CompanyName
-			secTaskList[i].LogisticsNumber = logisticsMap[taskID].LogisticsNumber
-			secTaskList[i].ExplorestorePeriod = logisticsMap[taskID].ExplorestorePeriod
-			secTaskList[i].ExplorestoreStarttime = logisticsMap[taskID].ExplorestoreStarttime
-			secTaskList[i].ExplorestoreEndtime = logisticsMap[taskID].ExplorestoreEndtime
-		}
-	}
-
-	return secTaskList, nil
-}
-
-func GetLogistics(ctx context.Context, secTaskId string) (*gorm_model.YoungeeTaskLogistics, error) {
-	db := GetWriteDB(ctx)
-	logistics := gorm_model.YoungeeTaskLogistics{}
-	err := db.Model(gorm_model.YoungeeTaskLogistics{}).Where("task_id", secTaskId).First(&logistics).Error
-	if err != nil {
-		return nil, err
-	}
-	return &logistics, nil
-}
+package db
+
+import (
+	"context"
+	"fmt"
+	"reflect"
+	"strconv"
+	"strings"
+	"time"
+	"youngee_m_api/model/common_model"
+	"youngee_m_api/model/gorm_model"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/pack"
+	"youngee_m_api/util"
+
+	"github.com/caixw/lib.go/conv"
+	"github.com/sirupsen/logrus"
+	"github.com/tidwall/gjson"
+)
+
+//新增
+func CreateLogistics(ctx context.Context, logistics gorm_model.YoungeeTaskLogistics, RecruitStrategyID int64) (*int64, error) {
+	db := GetReadDB(ctx)
+	err := db.Create(&logistics).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[logistics db] call CreateLogistics error,err:%+v", err)
+		return nil, err
+	}
+	return &logistics.LogisticsID, nil
+}
+
+//修改接口
+func UpdateLogistics(ctx context.Context, logistics gorm_model.YoungeeTaskLogistics) (*int64, error) {
+	db := GetReadDB(ctx)
+	err := db.Model(&logistics).Where("task_id = ?", logistics.TaskID).Updates(logistics).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[logistics db] call UpdateLogistics error,err:%+v", err)
+		return nil, err
+	}
+	return &logistics.LogisticsID, nil
+}
+
+// 更改签收时间
+func SignForReceipt(ctx context.Context, taskID string) error {
+	db := GetReadDB(ctx)
+	t := time.Now()
+	err := db.Model(gorm_model.YoungeeTaskLogistics{}).Where("task_id = ?", taskID).Updates(gorm_model.YoungeeTaskLogistics{
+		Status:     1,
+		SignedTime: &t,
+	}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[logistics db] call UpdateLogistics error,err:%+v", err)
+		return err
+	}
+	return nil
+}
+
+// GetTaskLogisticsList 查询包含物流信息的task list
+func GetTaskLogisticsList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskLogisticsInfo, int64, error) {
+	db := GetReadDB(ctx)
+	// 查询Task表信息
+	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
+	// 根据Project条件过滤
+	conditionType := reflect.TypeOf(conditions).Elem()
+	conditionValue := reflect.ValueOf(conditions).Elem()
+	var platform_nickname string = ""
+	for i := 0; i < conditionType.NumField(); i++ {
+		field := conditionType.Field(i)
+		tag := field.Tag.Get("condition")
+		value := conditionValue.FieldByName(field.Name)
+		if !util.IsBlank(value) {
+			if tag == "platform_nickname" {
+				platform_nickname = fmt.Sprintf("%v", value.Interface())
+				continue
+			} else {
+				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+			}
+		}
+	}
+	var taskInfos []gorm_model.YoungeeTaskInfo
+	db = db.Model(gorm_model.YoungeeTaskInfo{})
+	// 查询总数
+	var totalTask int64
+	if err := db.Count(&totalTask).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	db.Order("task_id").Find(&taskInfos)
+
+	// 查询任务id
+	var taskIds []string
+	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
+	for _, taskInfo := range taskInfos {
+		taskIds = append(taskIds, taskInfo.TaskId)
+		taskMap[taskInfo.TaskId] = taskInfo
+	}
+	db1 := GetReadDB(ctx)
+	db1 = db1.Debug().Model(gorm_model.YoungeeTaskLogistics{})
+
+	var logisticsInfos []gorm_model.YoungeeTaskLogistics
+	db1 = db1.Model(gorm_model.YoungeeTaskLogistics{}).Where("task_id IN ?", taskIds).Find(&logisticsInfos)
+	logisticsMap := make(map[string]gorm_model.YoungeeTaskLogistics)
+	for _, logisticsInfo := range logisticsInfos {
+		logisticsMap[logisticsInfo.TaskID] = logisticsInfo
+	}
+	// 查询总数
+	var totalLogistics int64
+	if err := db1.Count(&totalLogistics).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+
+	// 查询该页数据
+	limit := pageSize
+	offset := pageSize * pageNum // assert pageNum start with 0
+	err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+
+	var TaskLogisticss []*http_model.TaskLogistics
+	var taskLogisticss []*http_model.TaskLogisticsInfo
+	var newTaskLogisticss []*http_model.TaskLogisticsInfo
+	for _, taskId := range taskIds {
+		TaskLogistics := new(http_model.TaskLogistics)
+		TaskLogistics.Talent = taskMap[taskId]
+		TaskLogistics.Logistics = logisticsMap[taskId]
+		TalentPostAddrSnap := TaskLogistics.Talent.TalentPostAddrSnap
+		regionCode, _ := strconv.Atoi(conv.MustString(gjson.Get(TalentPostAddrSnap, "region_code"), ""))
+		TaskLogistics.Region = GetRegion(ctx, regionCode)
+		TaskLogisticss = append(TaskLogisticss, TaskLogistics)
+	}
+	taskLogisticss = pack.TaskLogisticsToTaskInfo(TaskLogisticss)
+
+	for _, v := range taskLogisticss {
+		if platform_nickname == "" {
+			newTaskLogisticss = append(newTaskLogisticss, v)
+		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
+			newTaskLogisticss = append(newTaskLogisticss, v)
+		} else if strings.Contains(v.TaskID, platform_nickname) {
+			newTaskLogisticss = append(newTaskLogisticss, v)
+		} else {
+			totalTask--
+		}
+	}
+	return newTaskLogisticss, totalTask, nil
+}
+
+// 修改任务表的物流状态
+func ChangeLogisticsStatus(ctx context.Context, taskIds []string) error {
+	db := GetReadDB(ctx)
+	err := db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_id IN ?", taskIds).Update("logistics_status", 3).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[ChangeTaskStatus] error query mysql total, err:%+v", err)
+		return err
+	}
+	return nil
+}
+
+// GetSpecialTaskLogisticsList 查询专项包含物流信息的task list
+func GetSpecialTaskLogisticsList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.SpecialTaskLogisticsInfo, int64, error) {
+	db := GetReadDB(ctx)
+	// 查询Task表信息
+	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2 and project_id = ?", projectID)
+	// 根据Project条件过滤
+	conditionType := reflect.TypeOf(conditions).Elem()
+	conditionValue := reflect.ValueOf(conditions).Elem()
+	var platformNickname string = ""
+	for i := 0; i < conditionType.NumField(); i++ {
+		field := conditionType.Field(i)
+		tag := field.Tag.Get("condition")
+		value := conditionValue.FieldByName(field.Name)
+		if !util.IsBlank(value) {
+			if tag == "platform_nickname" {
+				platformNickname = fmt.Sprintf("%v", value.Interface())
+				continue
+			} else {
+				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+			}
+		}
+	}
+	var taskInfos []gorm_model.YoungeeTaskInfo
+	db = db.Model(gorm_model.YoungeeTaskInfo{})
+	// 查询总数
+	var totalTask int64
+	if err := db.Count(&totalTask).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetSpecialTaskLogisticsList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	db.Order("task_id").Find(&taskInfos)
+
+	// 查询任务id
+	var taskIds []string
+	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
+	for _, taskInfo := range taskInfos {
+		taskIds = append(taskIds, taskInfo.TaskId)
+		taskMap[taskInfo.TaskId] = taskInfo
+	}
+	db1 := GetReadDB(ctx)
+	db1 = db1.Debug().Model(gorm_model.YoungeeTaskLogistics{})
+
+	var logisticsInfos []gorm_model.YoungeeTaskLogistics
+	db1 = db1.Model(gorm_model.YoungeeTaskLogistics{}).Where("task_id IN ?", taskIds).Find(&logisticsInfos)
+	logisticsMap := make(map[string]gorm_model.YoungeeTaskLogistics)
+	for _, logisticsInfo := range logisticsInfos {
+		logisticsMap[logisticsInfo.TaskID] = logisticsInfo
+	}
+	// 查询总数
+	var totalLogistics int64
+	if err := db1.Count(&totalLogistics).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetSpecialTaskLogisticsList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+
+	// 查询该页数据
+	limit := pageSize
+	offset := pageSize * pageNum // assert pageNum start with 0
+	err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetSpecialTaskLogisticsList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+
+	var TaskLogisticss []*http_model.SpecialTaskLogistics
+	var taskLogisticss []*http_model.SpecialTaskLogisticsInfo
+	var newTaskLogisticss []*http_model.SpecialTaskLogisticsInfo
+	for _, taskId := range taskIds {
+		TaskLogistics := new(http_model.SpecialTaskLogistics)
+		TaskLogistics.Talent = taskMap[taskId]
+		TaskLogistics.Logistics = logisticsMap[taskId]
+		TalentPostAddrSnap := TaskLogistics.Talent.TalentPostAddrSnap
+		regionCode, _ := strconv.Atoi(conv.MustString(gjson.Get(TalentPostAddrSnap, "region_code"), ""))
+		TaskLogistics.Region = GetRegion(ctx, regionCode)
+		TaskLogisticss = append(TaskLogisticss, TaskLogistics)
+	}
+	taskLogisticss = pack.SpecialTaskLogisticsToTaskInfo(TaskLogisticss)
+
+	for _, v := range taskLogisticss {
+		if platformNickname == "" {
+			newTaskLogisticss = append(newTaskLogisticss, v)
+		} else if strings.Contains(v.PlatformNickname, platformNickname) {
+			newTaskLogisticss = append(newTaskLogisticss, v)
+		} else if strings.Contains(v.TaskID, platformNickname) {
+			newTaskLogisticss = append(newTaskLogisticss, v)
+		} else {
+			totalTask--
+		}
+	}
+	return newTaskLogisticss, totalTask, nil
+}
+
+func GetSecTaskLogisticsList(ctx context.Context, secTaskList []*http_model.SecTaskInfo, taskStage int, productType int) ([]*http_model.SecTaskInfo, error) {
+	db := GetReadDB(ctx)
+	if taskStage != 6 { // 已发货
+		// 查询youngee_task_logistics中物流信息
+		var taskIds []string
+		taskMap := make(map[string]*http_model.SecTaskInfo)
+		for _, secTask := range secTaskList {
+			taskIds = append(taskIds, secTask.SecTaskId)
+			taskMap[secTask.SecTaskId] = secTask
+		}
+
+		var logisticsInfos []gorm_model.YoungeeTaskLogistics
+		err := db.Model(gorm_model.YoungeeTaskLogistics{}).Where("task_id IN ?", taskIds).Find(&logisticsInfos).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		logisticsMap := make(map[string]gorm_model.YoungeeTaskLogistics)
+		for _, logisticsInfo := range logisticsInfos {
+			logisticsMap[logisticsInfo.TaskID] = logisticsInfo
+		}
+		// 融合信息
+		for i, secTask := range secTaskList {
+			taskID := secTask.SecTaskId
+			secTaskList[i].CompanyName = logisticsMap[taskID].CompanyName
+			secTaskList[i].LogisticsNumber = logisticsMap[taskID].LogisticsNumber
+			secTaskList[i].ExplorestorePeriod = logisticsMap[taskID].ExplorestorePeriod
+			secTaskList[i].ExplorestoreStarttime = logisticsMap[taskID].ExplorestoreStarttime
+			secTaskList[i].ExplorestoreEndtime = logisticsMap[taskID].ExplorestoreEndtime
+		}
+	}
+
+	return secTaskList, nil
+}
+
+func GetLogistics(ctx context.Context, secTaskId string) (*gorm_model.YoungeeTaskLogistics, error) {
+	db := GetWriteDB(ctx)
+	logistics := gorm_model.YoungeeTaskLogistics{}
+	err := db.Model(gorm_model.YoungeeTaskLogistics{}).Where("task_id", secTaskId).First(&logistics).Error
+	if err != nil {
+		return nil, err
+	}
+	return &logistics, nil
+}

+ 111 - 111
db/message.go

@@ -1,111 +1,111 @@
-package db
-
-import (
-	"context"
-	"fmt"
-	"time"
-	"youngee_m_api/model/gorm_model"
-
-	"github.com/sirupsen/logrus"
-)
-
-// 通过secTaskId查询talentId,插入新消息
-func CreateMessageBySecTaskId(ctx context.Context, messageId int, messageType int, taskId string) error {
-	db := GetReadDB(ctx)
-	taskInfo := gorm_model.YounggeeSecTaskInfo{}
-	err := db.Model(gorm_model.YounggeeSecTaskInfo{}).Where("task_id = ?", taskId).Find(&taskInfo).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[CreateMessageByTask] error read mysql, err:%+v", err)
-		return err
-	}
-
-	db1 := GetReadDB(ctx)
-	var projectName string
-	err = db1.Model(gorm_model.YounggeeSelectionInfo{}).Select("selection_name").Where("selection_id = ?", taskInfo.SelectionID).Find(&projectName).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[CreateMessageByTask] error read mysql, err:%+v", err)
-		return err
-	}
-	messageInfo := gorm_model.YounggeeMessageInfo{
-		MessageID:   messageId,
-		MessageType: messageType,
-		CreatedAt:   time.Now(),
-		TalentID:    taskInfo.TalentID,
-		ProjectName: projectName,
-		IsReaded:    0,
-		IsDeleted:   0,
-	}
-	db2 := GetReadDB(ctx)
-	err = db2.Model(gorm_model.YounggeeMessageInfo{}).Create(&messageInfo).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[CreateMessageByTask] error create mysql, err:%+v", err)
-		return err
-	}
-	return nil
-}
-
-// 通过taskId查询talentId,插入新消息
-func CreateMessageByTaskId(ctx context.Context, messageId int, messageType int, taskId string) error {
-	db := GetReadDB(ctx)
-	taskInfo := gorm_model.YoungeeTaskInfo{}
-	err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Find(&taskInfo).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[CreateMessageByTask] error read mysql, err:%+v", err)
-		return err
-	}
-
-	db1 := GetReadDB(ctx)
-	var projectName string
-	err = db1.Model(gorm_model.ProjectInfo{}).Select("project_name").Where("project_id = ?", taskInfo.ProjectId).Find(&projectName).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[CreateMessageByTask] error read mysql, err:%+v", err)
-		return err
-	}
-	fmt.Printf("project_name: %+v, project_id: %+v\n", projectName, taskInfo.ProjectId)
-	messageInfo := gorm_model.YounggeeMessageInfo{
-		MessageID:   messageId,
-		MessageType: messageType,
-		CreatedAt:   time.Now(),
-		TalentID:    taskInfo.TalentId,
-		ProjectName: projectName,
-		IsReaded:    0,
-		IsDeleted:   0,
-	}
-	db2 := GetReadDB(ctx)
-	err = db2.Model(gorm_model.YounggeeMessageInfo{}).Create(&messageInfo).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[CreateMessageByTask] error create mysql, err:%+v", err)
-		return err
-	}
-	return nil
-}
-
-// 插入新消息
-func CreateMessage(ctx context.Context, messageId int, messageType int, talentId string, projectId string) error {
-	db := GetReadDB(ctx)
-	var projectName string
-	if projectId != "" {
-		err := db.Model(gorm_model.ProjectInfo{}).Select("project_name").Where("project_id = ?", projectId).Find(&projectName).Error
-		if err != nil {
-			logrus.WithContext(ctx).Errorf("[CreateMessageByTask] error read mysql, err:%+v", err)
-			return err
-		}
-	}
-
-	messageInfo := gorm_model.YounggeeMessageInfo{
-		MessageID:   messageId,
-		MessageType: messageType,
-		CreatedAt:   time.Now(),
-		TalentID:    talentId,
-		ProjectName: projectName,
-		IsReaded:    0,
-		IsDeleted:   0,
-	}
-	db1 := GetReadDB(ctx)
-	err := db1.Model(gorm_model.YounggeeMessageInfo{}).Create(&messageInfo).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[CreateMessageByTask] error create mysql, err:%+v", err)
-		return err
-	}
-	return nil
-}
+package db
+
+import (
+	"context"
+	"fmt"
+	"time"
+	"youngee_m_api/model/gorm_model"
+
+	"github.com/sirupsen/logrus"
+)
+
+// 通过secTaskId查询talentId,插入新消息
+func CreateMessageBySecTaskId(ctx context.Context, messageId int, messageType int, taskId string) error {
+	db := GetReadDB(ctx)
+	taskInfo := gorm_model.YounggeeSecTaskInfo{}
+	err := db.Model(gorm_model.YounggeeSecTaskInfo{}).Where("task_id = ?", taskId).Find(&taskInfo).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[CreateMessageByTask] error read mysql, err:%+v", err)
+		return err
+	}
+
+	db1 := GetReadDB(ctx)
+	var projectName string
+	err = db1.Model(gorm_model.YounggeeSelectionInfo{}).Select("selection_name").Where("selection_id = ?", taskInfo.SelectionID).Find(&projectName).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[CreateMessageByTask] error read mysql, err:%+v", err)
+		return err
+	}
+	messageInfo := gorm_model.YounggeeMessageInfo{
+		MessageID:   messageId,
+		MessageType: messageType,
+		CreatedAt:   time.Now(),
+		TalentID:    taskInfo.TalentID,
+		ProjectName: projectName,
+		IsReaded:    0,
+		IsDeleted:   0,
+	}
+	db2 := GetReadDB(ctx)
+	err = db2.Model(gorm_model.YounggeeMessageInfo{}).Create(&messageInfo).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[CreateMessageByTask] error create mysql, err:%+v", err)
+		return err
+	}
+	return nil
+}
+
+// 通过taskId查询talentId,插入新消息
+func CreateMessageByTaskId(ctx context.Context, messageId int, messageType int, taskId string) error {
+	db := GetReadDB(ctx)
+	taskInfo := gorm_model.YoungeeTaskInfo{}
+	err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Find(&taskInfo).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[CreateMessageByTask] error read mysql, err:%+v", err)
+		return err
+	}
+
+	db1 := GetReadDB(ctx)
+	var projectName string
+	err = db1.Model(gorm_model.ProjectInfo{}).Select("project_name").Where("project_id = ?", taskInfo.ProjectId).Find(&projectName).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[CreateMessageByTask] error read mysql, err:%+v", err)
+		return err
+	}
+	fmt.Printf("project_name: %+v, project_id: %+v\n", projectName, taskInfo.ProjectId)
+	messageInfo := gorm_model.YounggeeMessageInfo{
+		MessageID:   messageId,
+		MessageType: messageType,
+		CreatedAt:   time.Now(),
+		TalentID:    taskInfo.TalentId,
+		ProjectName: projectName,
+		IsReaded:    0,
+		IsDeleted:   0,
+	}
+	db2 := GetReadDB(ctx)
+	err = db2.Model(gorm_model.YounggeeMessageInfo{}).Create(&messageInfo).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[CreateMessageByTask] error create mysql, err:%+v", err)
+		return err
+	}
+	return nil
+}
+
+// 插入新消息
+func CreateMessage(ctx context.Context, messageId int, messageType int, talentId string, projectId string) error {
+	db := GetReadDB(ctx)
+	var projectName string
+	if projectId != "" {
+		err := db.Model(gorm_model.ProjectInfo{}).Select("project_name").Where("project_id = ?", projectId).Find(&projectName).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[CreateMessageByTask] error read mysql, err:%+v", err)
+			return err
+		}
+	}
+
+	messageInfo := gorm_model.YounggeeMessageInfo{
+		MessageID:   messageId,
+		MessageType: messageType,
+		CreatedAt:   time.Now(),
+		TalentID:    talentId,
+		ProjectName: projectName,
+		IsReaded:    0,
+		IsDeleted:   0,
+	}
+	db1 := GetReadDB(ctx)
+	err := db1.Model(gorm_model.YounggeeMessageInfo{}).Create(&messageInfo).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[CreateMessageByTask] error create mysql, err:%+v", err)
+		return err
+	}
+	return nil
+}

+ 401 - 401
db/number_info.go

@@ -1,401 +1,401 @@
-package db
-
-import (
-	"context"
-	"fmt"
-	"strconv"
-	"time"
-	"youngee_m_api/model/gorm_model"
-	"youngee_m_api/model/http_model"
-
-	"github.com/sirupsen/logrus"
-)
-
-func GetLogisticsNumberInfo(ctx context.Context, projectId string, strategyIds []int64) (*http_model.GetLogisticsNumberInfoData, error) {
-	var LogisticsNumberInfoDataList http_model.GetLogisticsNumberInfoData
-	for _, strategyId := range strategyIds {
-		var LogisticsNumberInfoData http_model.LogisticsNumberInfo
-		LogisticsNumberInfoData.StrategyId = strategyId
-		db := GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
-		err := db.Where("logistics_status = 1").Count(&LogisticsNumberInfoData.UndeliveredNumber).Error
-		if err != nil {
-			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-			return nil, err
-		}
-		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
-		err = db.Where("logistics_status = 2").Count(&LogisticsNumberInfoData.DeliveredNumber).Error
-		if err != nil {
-			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-			return nil, err
-		}
-		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
-		err = db.Where("logistics_status = 3").Count(&LogisticsNumberInfoData.SignedNumber).Error
-		if err != nil {
-			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-			return nil, err
-		}
-		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
-		err = db.Count(&LogisticsNumberInfoData.DeliverNumber).Error
-		if err != nil {
-			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-			return nil, err
-		}
-		LogisticsNumberInfoDataList.LogisticsNumberInfoList = append(LogisticsNumberInfoDataList.LogisticsNumberInfoList, &LogisticsNumberInfoData)
-	}
-	return &LogisticsNumberInfoDataList, nil
-}
-
-func GetReviewNumberInfo(ctx context.Context, projectId string, strategyIds []int64) (*http_model.GetReviewNumberInfoData, error) {
-	var ReviewNumberInfoDataList http_model.GetReviewNumberInfoData
-
-	for _, strategyId := range strategyIds {
-		var ReviewNumberInfoData http_model.ReviewNumberInfo
-		ReviewNumberInfoData.StrategyId = strategyId
-		db := GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
-		err := db.Where("task_stage = 8").Count(&ReviewNumberInfoData.ScriptUnreviewNumber).Error
-		if err != nil {
-			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-			return nil, err
-		}
-		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
-		err = db.Where("task_stage > 8").Count(&ReviewNumberInfoData.ScriptPassedNumber).Error
-		if err != nil {
-			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-			return nil, err
-		}
-		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
-		err = db.Where("task_stage = 10").Count(&ReviewNumberInfoData.SketchUnreviewNumber).Error
-		if err != nil {
-			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-			return nil, err
-		}
-		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
-		err = db.Where("task_stage > 10").Count(&ReviewNumberInfoData.SketchPassedNumber).Error
-		if err != nil {
-			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-			return nil, err
-		}
-		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
-		err = db.Count(&ReviewNumberInfoData.ReviewNumber).Error
-		if err != nil {
-			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-			return nil, err
-		}
-
-		ReviewNumberInfoDataList.ReviewNumberInfoList = append(ReviewNumberInfoDataList.ReviewNumberInfoList, &ReviewNumberInfoData)
-	}
-	return &ReviewNumberInfoDataList, nil
-}
-
-func GetLinkNumberInfo(ctx context.Context, projectId string, strategyIds []int64) (*http_model.GetLinkNumberInfoData, error) {
-	var LinkNumberInfoDataList http_model.GetLinkNumberInfoData
-
-	for _, strategyId := range strategyIds {
-		var LinkNumberInfoData http_model.LinkNumberInfo
-		LinkNumberInfoData.StrategyId = strategyId
-		db := GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
-		err := db.Where("task_stage = 12").Count(&LinkNumberInfoData.LinkUnreviewNumber).Error
-		if err != nil {
-			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-			return nil, err
-		}
-		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
-		err = db.Where("task_stage > 12").Count(&LinkNumberInfoData.LinkPassedNumber).Error
-		if err != nil {
-			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-			return nil, err
-		}
-		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
-		err = db.Count(&LinkNumberInfoData.LinkNumber).Error
-		if err != nil {
-			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-			return nil, err
-		}
-
-		LinkNumberInfoDataList.LinkNumberInfoList = append(LinkNumberInfoDataList.LinkNumberInfoList, &LinkNumberInfoData)
-	}
-	return &LinkNumberInfoDataList, nil
-}
-
-func GetDataNumberInfo(ctx context.Context, projectId string, strategyIds []int64) (*http_model.GetDataNumberInfoData, error) {
-	var DataNumberInfoDataList http_model.GetDataNumberInfoData
-
-	for _, strategyId := range strategyIds {
-		var DataNumberInfoData http_model.DataNumberInfo
-		DataNumberInfoData.StrategyId = strategyId
-		db := GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
-		err := db.Where("task_stage = 14").Count(&DataNumberInfoData.DataUnreviewNumber).Error
-		if err != nil {
-			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-			return nil, err
-		}
-		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
-		err = db.Where("task_stage = 15").Count(&DataNumberInfoData.DataPassedNumber).Error
-		if err != nil {
-			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-			return nil, err
-		}
-		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2 and task_stage < 16", projectId, strategyId)
-		err = db.Count(&DataNumberInfoData.DataNumber).Error
-		if err != nil {
-			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-			return nil, err
-		}
-
-		DataNumberInfoDataList.DataNumberInfoList = append(DataNumberInfoDataList.DataNumberInfoList, &DataNumberInfoData)
-	}
-	return &DataNumberInfoDataList, nil
-}
-
-func GetDefaultNumberInfo(ctx context.Context, projectId string, strategyIds []int64) (*http_model.GetDefaultNumberInfoData, error) {
-	var DefaultNumberInfoDataList http_model.GetDefaultNumberInfoData
-	for _, strategyId := range strategyIds {
-		var DefaultNumberInfoData http_model.DefaultNumberInfo
-		DefaultNumberInfoData.StrategyId = strategyId
-		db := GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
-		err := db.Where("complete_status <> 4").Count(&DefaultNumberInfoData.ShouldFinishNumber).Error
-		if err != nil {
-			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-			return nil, err
-		}
-		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
-		err = db.Where("cur_default_type = 1").Count(&DefaultNumberInfoData.UnuploadScriptNumber).Error
-		if err != nil {
-			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-			return nil, err
-		}
-		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
-		err = db.Where("cur_default_type = 3").Count(&DefaultNumberInfoData.UnuploadSketchNumber).Error
-		if err != nil {
-			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-			return nil, err
-		}
-		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
-		err = db.Where("cur_default_type = 5").Count(&DefaultNumberInfoData.UnuploadLinkNumber).Error
-		if err != nil {
-			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-			return nil, err
-		}
-		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
-		err = db.Where("cur_default_type = 7").Count(&DefaultNumberInfoData.UnuploadDataNumber).Error
-		if err != nil {
-			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-			return nil, err
-		}
-		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
-		err = db.Where("complete_status = 4").Count(&DefaultNumberInfoData.TerminateNumber).Error
-		if err != nil {
-			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-			return nil, err
-		}
-
-		DefaultNumberInfoDataList.DefaultNumberInfoList = append(DefaultNumberInfoDataList.DefaultNumberInfoList, &DefaultNumberInfoData)
-	}
-	return &DefaultNumberInfoDataList, nil
-}
-
-func GetFinishNumberInfo(ctx context.Context, projectId string, strategyIds []int64) (*http_model.GetFinishNumberInfoData, error) {
-	var FinishNumberInfoDataList http_model.GetFinishNumberInfoData
-
-	for _, strategyId := range strategyIds {
-		var FinishNumberInfoData http_model.FinishNumberInfo
-		FinishNumberInfoData.StrategyId = strategyId
-		db := GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
-		err := db.Count(&FinishNumberInfoData.ShouldFinishNumber).Error
-		if err != nil {
-			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-			return nil, err
-		}
-		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
-		err = db.Where("task_stage = 15").Count(&FinishNumberInfoData.FinishedNumber).Error
-		if err != nil {
-			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-			return nil, err
-		}
-		FinishNumberInfoDataList.FinishNumberInfoList = append(FinishNumberInfoDataList.FinishNumberInfoList, &FinishNumberInfoData)
-	}
-	return &FinishNumberInfoDataList, nil
-}
-
-func GetLogisticsNum() [][]string {
-	var logisticNumsInfos [][]string
-	db := GetReadDB(context.Background())
-	var logisticInfos []*gorm_model.YoungeeTaskLogistics
-	db.Model(gorm_model.YoungeeTaskLogistics{}).Where("things_type = 1 AND status = 0").Find(&logisticInfos)
-	for _, logisticInfo := range logisticInfos {
-		var logisticNumsInfo []string
-		logisticNumsInfo = append(logisticNumsInfo, logisticInfo.CompanyName, logisticInfo.LogisticsNumber, strconv.FormatInt(logisticInfo.LogisticsID, 10))
-		logisticNumsInfos = append(logisticNumsInfos, logisticNumsInfo)
-	}
-	fmt.Println("logisticNumsInfos:", logisticNumsInfos)
-	return logisticNumsInfos
-}
-
-func SignLogistic(logisticId int64) string {
-	db := GetReadDB(context.Background())
-	var taskId, projectId string
-	var contentType int64
-	db.Model(gorm_model.YoungeeTaskLogistics{}).Select("task_id").Where("logistics_id = ?", logisticId).Find(&taskId)
-	db.Model(gorm_model.YoungeeTaskInfo{}).Select("project_id").Where("task_id = ?", taskId).Find(&projectId)
-	db.Model(gorm_model.ProjectInfo{}).Select("content_type").Where("project_id = ?", projectId).Find(&contentType)
-	t := time.Now()
-	db.Model(gorm_model.YoungeeTaskLogistics{}).Where("logistics_id = ?", logisticId).Updates(&gorm_model.YoungeeTaskLogistics{SignedTime: &t, Status: 1})
-	if contentType == 1 {
-		db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Updates(&gorm_model.YoungeeTaskInfo{LogisticsStatus: 3, TaskStage: 9})
-		fmt.Printf("任务 %v 物流状态为已签收,已更新任务状态为 待传初稿\n", taskId)
-	} else {
-		db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Updates(&gorm_model.YoungeeTaskInfo{LogisticsStatus: 3, TaskStage: 7})
-		fmt.Printf("任务 %v 物流状态为已签收,已更新任务状态为 待传脚本\n", taskId)
-	}
-	return taskId
-}
-
-func GetSpecialInviteNumber(ctx context.Context, projectId string) (*http_model.GetSpecialInviteNumberData, error) {
-	var specialInviteNumberData http_model.GetSpecialInviteNumberData
-	db := GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_stage != 3", projectId)
-	err := db.Where("task_status <> 2").Count(&specialInviteNumberData.UnpassNumber).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ?", projectId)
-	err = db.Where("task_status = 2").Count(&specialInviteNumberData.PassNumber).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	return &specialInviteNumberData, nil
-}
-
-func GetSpecialLogisticNumber(ctx context.Context, projectId string) (*http_model.GetSpecialLogisticNumberData, error) {
-	var specialLogisticNumberData http_model.GetSpecialLogisticNumberData
-	db := GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_stage != 3", projectId)
-	err := db.Where("task_status = 2").Count(&specialLogisticNumberData.DeliverNumber).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetSpecialLogisticNumber] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2", projectId)
-	err = db.Where("logistics_status = 3").Count(&specialLogisticNumberData.SignedNumber).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetSpecialLogisticNumber] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2", projectId)
-	err = db.Where("logistics_status = 1").Count(&specialLogisticNumberData.UndeliveredNumber).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetSpecialLogisticNumber] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2", projectId)
-	err = db.Where("logistics_status = 2").Count(&specialLogisticNumberData.DeliveredNumber).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetSpecialLogisticNumber] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	return &specialLogisticNumberData, nil
-}
-
-func GetSpecialReviewNumber(ctx context.Context, projectId string) (*http_model.GetSpecialReviewNumberData, error) {
-	var specialReviewNumber http_model.GetSpecialReviewNumberData
-	db := GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2", projectId)
-	err := db.Where("").Count(&specialReviewNumber.ReviewNumber).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2", projectId)
-	err = db.Where("task_stage = 8").Count(&specialReviewNumber.ScriptUnreviewNumber).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2", projectId)
-	err = db.Where("task_stage > 8").Count(&specialReviewNumber.ScriptPassedNumber).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2", projectId)
-	err = db.Where("task_stage = 10").Count(&specialReviewNumber.SketchUnreviewNumber).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2", projectId)
-	err = db.Where("task_stage > 10").Count(&specialReviewNumber.SketchPassedNumber).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	return &specialReviewNumber, nil
-}
-
-func GetSpecialLinkNumber(ctx context.Context, projectId string) (*http_model.GetSpecialLinkNumberData, error) {
-	var specialLinkNumber http_model.GetSpecialLinkNumberData
-	db := GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2", projectId)
-	err := db.Where("").Count(&specialLinkNumber.LinkNumber).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2", projectId)
-	err = db.Where("task_stage = 12").Count(&specialLinkNumber.LinkUnreviewNumber).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2", projectId)
-	err = db.Where("task_stage > 12").Count(&specialLinkNumber.LinkPassedNumber).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	return &specialLinkNumber, nil
-}
-
-func GetSpecialDataNumber(ctx context.Context, projectId string) (*http_model.GetSpecialDataNumberData, error) {
-	var specialDataNumber http_model.GetSpecialDataNumberData
-	db := GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2", projectId)
-	err := db.Where("").Count(&specialDataNumber.DataNumber).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2", projectId)
-	err = db.Where("task_stage = 14").Count(&specialDataNumber.DataUnreviewNumber).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2", projectId)
-	err = db.Where("task_stage > 14").Count(&specialDataNumber.DataPassedNumber).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	return &specialDataNumber, nil
-}
-
-func GetSpecialSettleNumber(ctx context.Context, projectId string) (*http_model.GetSpecialSettleNumberData, error) {
-	var specialSettleNumber http_model.GetSpecialSettleNumberData
-	db := GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2 and task_stage = 15", projectId)
-	err := db.Where("").Count(&specialSettleNumber.SettleNumber).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetSpecialSettleNumber] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2 and task_stage = 15 and settle_status = 1", projectId)
-	err = db.Where("task_stage = 14").Count(&specialSettleNumber.UnsettleNumber).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetSpecialSettleNumber] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2 and task_stage = 15 and settle_status = 2", projectId)
-	err = db.Where("task_stage > 14").Count(&specialSettleNumber.SettledNumber).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetSpecialSettleNumber] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	return &specialSettleNumber, nil
-}
+package db
+
+import (
+	"context"
+	"fmt"
+	"strconv"
+	"time"
+	"youngee_m_api/model/gorm_model"
+	"youngee_m_api/model/http_model"
+
+	"github.com/sirupsen/logrus"
+)
+
+func GetLogisticsNumberInfo(ctx context.Context, projectId string, strategyIds []int64) (*http_model.GetLogisticsNumberInfoData, error) {
+	var LogisticsNumberInfoDataList http_model.GetLogisticsNumberInfoData
+	for _, strategyId := range strategyIds {
+		var LogisticsNumberInfoData http_model.LogisticsNumberInfo
+		LogisticsNumberInfoData.StrategyId = strategyId
+		db := GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err := db.Where("logistics_status = 1").Count(&LogisticsNumberInfoData.UndeliveredNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err = db.Where("logistics_status = 2").Count(&LogisticsNumberInfoData.DeliveredNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err = db.Where("logistics_status = 3").Count(&LogisticsNumberInfoData.SignedNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err = db.Count(&LogisticsNumberInfoData.DeliverNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		LogisticsNumberInfoDataList.LogisticsNumberInfoList = append(LogisticsNumberInfoDataList.LogisticsNumberInfoList, &LogisticsNumberInfoData)
+	}
+	return &LogisticsNumberInfoDataList, nil
+}
+
+func GetReviewNumberInfo(ctx context.Context, projectId string, strategyIds []int64) (*http_model.GetReviewNumberInfoData, error) {
+	var ReviewNumberInfoDataList http_model.GetReviewNumberInfoData
+
+	for _, strategyId := range strategyIds {
+		var ReviewNumberInfoData http_model.ReviewNumberInfo
+		ReviewNumberInfoData.StrategyId = strategyId
+		db := GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err := db.Where("task_stage = 8").Count(&ReviewNumberInfoData.ScriptUnreviewNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err = db.Where("task_stage > 8").Count(&ReviewNumberInfoData.ScriptPassedNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err = db.Where("task_stage = 10").Count(&ReviewNumberInfoData.SketchUnreviewNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err = db.Where("task_stage > 10").Count(&ReviewNumberInfoData.SketchPassedNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err = db.Count(&ReviewNumberInfoData.ReviewNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+
+		ReviewNumberInfoDataList.ReviewNumberInfoList = append(ReviewNumberInfoDataList.ReviewNumberInfoList, &ReviewNumberInfoData)
+	}
+	return &ReviewNumberInfoDataList, nil
+}
+
+func GetLinkNumberInfo(ctx context.Context, projectId string, strategyIds []int64) (*http_model.GetLinkNumberInfoData, error) {
+	var LinkNumberInfoDataList http_model.GetLinkNumberInfoData
+
+	for _, strategyId := range strategyIds {
+		var LinkNumberInfoData http_model.LinkNumberInfo
+		LinkNumberInfoData.StrategyId = strategyId
+		db := GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err := db.Where("task_stage = 12").Count(&LinkNumberInfoData.LinkUnreviewNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err = db.Where("task_stage > 12").Count(&LinkNumberInfoData.LinkPassedNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err = db.Count(&LinkNumberInfoData.LinkNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+
+		LinkNumberInfoDataList.LinkNumberInfoList = append(LinkNumberInfoDataList.LinkNumberInfoList, &LinkNumberInfoData)
+	}
+	return &LinkNumberInfoDataList, nil
+}
+
+func GetDataNumberInfo(ctx context.Context, projectId string, strategyIds []int64) (*http_model.GetDataNumberInfoData, error) {
+	var DataNumberInfoDataList http_model.GetDataNumberInfoData
+
+	for _, strategyId := range strategyIds {
+		var DataNumberInfoData http_model.DataNumberInfo
+		DataNumberInfoData.StrategyId = strategyId
+		db := GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err := db.Where("task_stage = 14").Count(&DataNumberInfoData.DataUnreviewNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err = db.Where("task_stage = 15").Count(&DataNumberInfoData.DataPassedNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2 and task_stage < 16", projectId, strategyId)
+		err = db.Count(&DataNumberInfoData.DataNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+
+		DataNumberInfoDataList.DataNumberInfoList = append(DataNumberInfoDataList.DataNumberInfoList, &DataNumberInfoData)
+	}
+	return &DataNumberInfoDataList, nil
+}
+
+func GetDefaultNumberInfo(ctx context.Context, projectId string, strategyIds []int64) (*http_model.GetDefaultNumberInfoData, error) {
+	var DefaultNumberInfoDataList http_model.GetDefaultNumberInfoData
+	for _, strategyId := range strategyIds {
+		var DefaultNumberInfoData http_model.DefaultNumberInfo
+		DefaultNumberInfoData.StrategyId = strategyId
+		db := GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err := db.Where("complete_status <> 4").Count(&DefaultNumberInfoData.ShouldFinishNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err = db.Where("cur_default_type = 1").Count(&DefaultNumberInfoData.UnuploadScriptNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err = db.Where("cur_default_type = 3").Count(&DefaultNumberInfoData.UnuploadSketchNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err = db.Where("cur_default_type = 5").Count(&DefaultNumberInfoData.UnuploadLinkNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err = db.Where("cur_default_type = 7").Count(&DefaultNumberInfoData.UnuploadDataNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err = db.Where("complete_status = 4").Count(&DefaultNumberInfoData.TerminateNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+
+		DefaultNumberInfoDataList.DefaultNumberInfoList = append(DefaultNumberInfoDataList.DefaultNumberInfoList, &DefaultNumberInfoData)
+	}
+	return &DefaultNumberInfoDataList, nil
+}
+
+func GetFinishNumberInfo(ctx context.Context, projectId string, strategyIds []int64) (*http_model.GetFinishNumberInfoData, error) {
+	var FinishNumberInfoDataList http_model.GetFinishNumberInfoData
+
+	for _, strategyId := range strategyIds {
+		var FinishNumberInfoData http_model.FinishNumberInfo
+		FinishNumberInfoData.StrategyId = strategyId
+		db := GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err := db.Count(&FinishNumberInfoData.ShouldFinishNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and strategy_id = ? and task_status = 2", projectId, strategyId)
+		err = db.Where("task_stage = 15").Count(&FinishNumberInfoData.FinishedNumber).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+			return nil, err
+		}
+		FinishNumberInfoDataList.FinishNumberInfoList = append(FinishNumberInfoDataList.FinishNumberInfoList, &FinishNumberInfoData)
+	}
+	return &FinishNumberInfoDataList, nil
+}
+
+func GetLogisticsNum() [][]string {
+	var logisticNumsInfos [][]string
+	db := GetReadDB(context.Background())
+	var logisticInfos []*gorm_model.YoungeeTaskLogistics
+	db.Model(gorm_model.YoungeeTaskLogistics{}).Where("things_type = 1 AND status = 0").Find(&logisticInfos)
+	for _, logisticInfo := range logisticInfos {
+		var logisticNumsInfo []string
+		logisticNumsInfo = append(logisticNumsInfo, logisticInfo.CompanyName, logisticInfo.LogisticsNumber, strconv.FormatInt(logisticInfo.LogisticsID, 10))
+		logisticNumsInfos = append(logisticNumsInfos, logisticNumsInfo)
+	}
+	fmt.Println("logisticNumsInfos:", logisticNumsInfos)
+	return logisticNumsInfos
+}
+
+func SignLogistic(logisticId int64) string {
+	db := GetReadDB(context.Background())
+	var taskId, projectId string
+	var contentType int64
+	db.Model(gorm_model.YoungeeTaskLogistics{}).Select("task_id").Where("logistics_id = ?", logisticId).Find(&taskId)
+	db.Model(gorm_model.YoungeeTaskInfo{}).Select("project_id").Where("task_id = ?", taskId).Find(&projectId)
+	db.Model(gorm_model.ProjectInfo{}).Select("content_type").Where("project_id = ?", projectId).Find(&contentType)
+	t := time.Now()
+	db.Model(gorm_model.YoungeeTaskLogistics{}).Where("logistics_id = ?", logisticId).Updates(&gorm_model.YoungeeTaskLogistics{SignedTime: &t, Status: 1})
+	if contentType == 1 {
+		db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Updates(&gorm_model.YoungeeTaskInfo{LogisticsStatus: 3, TaskStage: 9})
+		fmt.Printf("任务 %v 物流状态为已签收,已更新任务状态为 待传初稿\n", taskId)
+	} else {
+		db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Updates(&gorm_model.YoungeeTaskInfo{LogisticsStatus: 3, TaskStage: 7})
+		fmt.Printf("任务 %v 物流状态为已签收,已更新任务状态为 待传脚本\n", taskId)
+	}
+	return taskId
+}
+
+func GetSpecialInviteNumber(ctx context.Context, projectId string) (*http_model.GetSpecialInviteNumberData, error) {
+	var specialInviteNumberData http_model.GetSpecialInviteNumberData
+	db := GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_stage != 3", projectId)
+	err := db.Where("task_status <> 2").Count(&specialInviteNumberData.UnpassNumber).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ?", projectId)
+	err = db.Where("task_status = 2").Count(&specialInviteNumberData.PassNumber).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	return &specialInviteNumberData, nil
+}
+
+func GetSpecialLogisticNumber(ctx context.Context, projectId string) (*http_model.GetSpecialLogisticNumberData, error) {
+	var specialLogisticNumberData http_model.GetSpecialLogisticNumberData
+	db := GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_stage != 3", projectId)
+	err := db.Where("task_status = 2").Count(&specialLogisticNumberData.DeliverNumber).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetSpecialLogisticNumber] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2", projectId)
+	err = db.Where("logistics_status = 3").Count(&specialLogisticNumberData.SignedNumber).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetSpecialLogisticNumber] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2", projectId)
+	err = db.Where("logistics_status = 1").Count(&specialLogisticNumberData.UndeliveredNumber).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetSpecialLogisticNumber] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2", projectId)
+	err = db.Where("logistics_status = 2").Count(&specialLogisticNumberData.DeliveredNumber).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetSpecialLogisticNumber] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	return &specialLogisticNumberData, nil
+}
+
+func GetSpecialReviewNumber(ctx context.Context, projectId string) (*http_model.GetSpecialReviewNumberData, error) {
+	var specialReviewNumber http_model.GetSpecialReviewNumberData
+	db := GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2", projectId)
+	err := db.Where("").Count(&specialReviewNumber.ReviewNumber).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2", projectId)
+	err = db.Where("task_stage = 8").Count(&specialReviewNumber.ScriptUnreviewNumber).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2", projectId)
+	err = db.Where("task_stage > 8").Count(&specialReviewNumber.ScriptPassedNumber).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2", projectId)
+	err = db.Where("task_stage = 10").Count(&specialReviewNumber.SketchUnreviewNumber).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2", projectId)
+	err = db.Where("task_stage > 10").Count(&specialReviewNumber.SketchPassedNumber).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	return &specialReviewNumber, nil
+}
+
+func GetSpecialLinkNumber(ctx context.Context, projectId string) (*http_model.GetSpecialLinkNumberData, error) {
+	var specialLinkNumber http_model.GetSpecialLinkNumberData
+	db := GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2", projectId)
+	err := db.Where("").Count(&specialLinkNumber.LinkNumber).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2", projectId)
+	err = db.Where("task_stage = 12").Count(&specialLinkNumber.LinkUnreviewNumber).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2", projectId)
+	err = db.Where("task_stage > 12").Count(&specialLinkNumber.LinkPassedNumber).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	return &specialLinkNumber, nil
+}
+
+func GetSpecialDataNumber(ctx context.Context, projectId string) (*http_model.GetSpecialDataNumberData, error) {
+	var specialDataNumber http_model.GetSpecialDataNumberData
+	db := GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2", projectId)
+	err := db.Where("").Count(&specialDataNumber.DataNumber).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2", projectId)
+	err = db.Where("task_stage = 14").Count(&specialDataNumber.DataUnreviewNumber).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2", projectId)
+	err = db.Where("task_stage > 14").Count(&specialDataNumber.DataPassedNumber).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	return &specialDataNumber, nil
+}
+
+func GetSpecialSettleNumber(ctx context.Context, projectId string) (*http_model.GetSpecialSettleNumberData, error) {
+	var specialSettleNumber http_model.GetSpecialSettleNumberData
+	db := GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2 and task_stage = 15", projectId)
+	err := db.Where("").Count(&specialSettleNumber.SettleNumber).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetSpecialSettleNumber] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2 and task_stage = 15 and settle_status = 1", projectId)
+	err = db.Where("task_stage = 14").Count(&specialSettleNumber.UnsettleNumber).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetSpecialSettleNumber] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	db = GetReadDB(ctx).Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2 and task_stage = 15 and settle_status = 2", projectId)
+	err = db.Where("task_stage > 14").Count(&specialSettleNumber.SettledNumber).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetSpecialSettleNumber] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	return &specialSettleNumber, nil
+}

+ 2366 - 2366
db/operate.go

@@ -1,2366 +1,2366 @@
-package db
-
-import (
-	"context"
-	"encoding/json"
-	"fmt"
-	"log"
-	"reflect"
-	"strconv"
-	"time"
-	"youngee_m_api/model/common_model"
-	"youngee_m_api/model/gorm_model"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/util"
-
-	"github.com/caixw/lib.go/conv"
-	"github.com/sirupsen/logrus"
-	"github.com/tidwall/gjson"
-	"gorm.io/gorm"
-)
-
-func CreatePricingStrategy(ctx context.Context, req *http_model.AddPricingRequest) (string, string, error) {
-	db := GetReadDB(ctx)
-	project_type, fee_form, platform, fans_low, fans_up, service_charge, service_rate := req.ProjectType, req.ManuscriptForm, req.Platform, req.FansLow, req.FansHigh, req.ServiceCharge, req.ServiceRate*10
-	var IsExclusive, IsExclusive2, IsExclusive3, IsExclusive1 gorm_model.InfoPricingStrategy
-	err := db.Where(" fee_form = ? && platform = ? && fans_low <= ? && fans_up >= ?", fee_form, platform, fans_low, fans_up).First(&IsExclusive).Error
-	if err == nil {
-		return "该策略与已经运行的策略互斥,请修改相关字段后重新创建", "", nil
-	}
-	err = db.Where(" fee_form = ? && platform = ? && fans_low < ? && fans_up > ?", fee_form, platform, fans_low, fans_low).First(&IsExclusive1).Error
-	if err == nil {
-		return "该策略与已经运行的策略互斥,请修改相关字段后重新创建", "", nil
-	}
-	err = db.Where(" fee_form = ? && platform = ? && fans_low < ? && fans_up > ?", fee_form, platform, fans_up, fans_up).First(&IsExclusive2).Error
-	if err == nil {
-		return "该策略与已经运行的策略互斥,请修改相关字段后重新创建", "", nil
-	}
-	err = db.Where(" fee_form = ? && platform = ? && fans_low >= ? && fans_up <= ?", fee_form, platform, fans_low, fans_up).First(&IsExclusive3).Error
-	if err == nil {
-		return "该策略与已经运行的策略互斥,请修改相关字段后重新创建", "", nil
-	}
-	var newStrategy gorm_model.InfoPricingStrategy
-	var strategyInfo gorm_model.InfoPricingStrategy
-	getMonth := time.Now().Format("01") //获取月
-	getDay := time.Now().Day()          //获取日
-	dayString := ""
-	if getDay < 10 {
-		dayString = conv.MustString(getDay, "")
-		dayString = "0" + dayString
-	} else {
-		dayString = conv.MustString(getDay, "")
-	}
-	monthAndDay := conv.MustString(getMonth, "") + dayString
-	err = db.Where(fmt.Sprintf(" strategyId like '%s%%'", monthAndDay)).Last(&strategyInfo).Error
-
-	num := 1
-	if strategyInfo.StrategyId != "" {
-		num = conv.MustInt(strategyInfo.StrategyId[4:6], 0)
-		num = num + 1 //获取日
-	} else {
-		num = 1
-	}
-	numString := ""
-	if num < 10 {
-		numString = conv.MustString(num, "")
-		numString = "0" + numString
-	} else {
-		numString = conv.MustString(num, "")
-	}
-	newStrategy.StrategyId = monthAndDay + numString
-	newStrategy.Status = 0
-	newStrategy.FansLow = fans_low
-	newStrategy.FansUp = fans_up
-	newStrategy.ProjectType = conv.MustInt64(project_type, 0)
-	newStrategy.ServiceCharge = conv.MustFloat64(service_charge, 0)
-	newStrategy.Platform = conv.MustInt64(platform, 0)
-	newStrategy.FeeForm = conv.MustInt64(fee_form, 0)
-	newStrategy.ServiceRate = conv.MustInt64(service_rate, 0)
-	newStrategy.CreateAt = time.Now()
-	newStrategy.UpdateAt = time.Now()
-	err = db.Create(&newStrategy).Error
-	if err != nil {
-		return "创建失败", "", err
-	}
-	return "创建成功", monthAndDay + numString, nil
-}
-
-func CreateYoungeeStrategy(ctx context.Context, req *http_model.AddYoungeeRequest) (string, string, error) {
-	db := GetReadDB(ctx)
-	project_type, task_type, platform, content_type, reason, cash := req.ProjectType, req.TaskType, req.Platform, req.ContentType, req.Reason, req.Cash
-	var IsExclusive gorm_model.InfoYoungeeStrategy
-	err := db.Where(" platform = ? ").First(&IsExclusive).Error
-	if err == nil {
-		return "该策略与已经运行的策略互斥,请修改相关字段后重新创建", "", nil
-	}
-	var newStrategy gorm_model.InfoYoungeeStrategy
-	var strategyInfo gorm_model.InfoYoungeeStrategy
-	getMonth := time.Now().Format("01") //获取月
-	getDay := time.Now().Day()          //获取日
-	dayString := ""
-	if getDay < 10 {
-		dayString = conv.MustString(getDay, "")
-		dayString = "0" + dayString
-	} else {
-		dayString = conv.MustString(getDay, "")
-	}
-	monthAndDay := conv.MustString(getMonth, "") + dayString
-	err = db.Where(fmt.Sprintf(" strategyId like '%s%%'", monthAndDay)).Last(&strategyInfo).Error
-
-	num := 1
-	if strategyInfo.StrategyId != "" {
-		num = conv.MustInt(strategyInfo.StrategyId[4:6], 0)
-		num = num + 1 //获取日
-	} else {
-		num = 1
-	}
-	numString := ""
-	if num < 10 {
-		numString = conv.MustString(num, "")
-		numString = "0" + numString
-	} else {
-		numString = conv.MustString(num, "")
-	}
-	newStrategy.StrategyId = monthAndDay + numString
-	newStrategy.Status = 0
-	newStrategy.ProjectType = conv.MustInt64(project_type, 0)
-	newStrategy.TaskType = conv.MustInt64(task_type, 0)
-	newStrategy.Platform = conv.MustInt64(platform, 0)
-	newStrategy.ContentType = conv.MustInt(content_type, 0)
-	newStrategy.Reason = conv.MustInt(reason, 0)
-	//newStrategy.Points = conv.MustFloat64(points, 0)
-	newStrategy.Cash = conv.MustFloat64(cash, 0)
-	newStrategy.CreateAt = time.Now()
-	err = db.Create(&newStrategy).Error
-	if err != nil {
-		return "创建失败", "", err
-	}
-	return "创建成功", monthAndDay + numString, nil
-}
-
-func SearchPricing(ctx context.Context, pageSize, pageNum int32, conditions *common_model.PricingConditions) ([]*gorm_model.InfoPricingStrategy, int64, error) {
-	db := GetReadDB(ctx)
-	db = db.Model(gorm_model.InfoPricingStrategy{})
-	// 根据 查询条件过滤
-	conditionType := reflect.TypeOf(conditions).Elem()
-	conditionValue := reflect.ValueOf(conditions).Elem()
-	for i := 0; i < conditionType.NumField(); i++ {
-		field := conditionType.Field(i)
-		tag := field.Tag.Get("condition")
-		value := conditionValue.FieldByName(field.Name)
-		if !util.IsBlank(value) && tag != "update_at" {
-			db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-		} else if tag == "update_at" && value.Interface() != nil {
-			db = db.Where(fmt.Sprintf("update_at like '%s%%'", value.Interface()))
-		}
-	}
-	// 查询总数
-	var total int64
-	var PricingDatas []*gorm_model.InfoPricingStrategy
-	if err := db.Count(&total).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[SearchPricing] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	// 查询该页数据
-	limit := pageSize
-	offset := pageSize * pageNum // assert pageNum start with 0
-	err := db.Order("update_at desc").Limit(int(limit)).Offset(int(offset)).Find(&PricingDatas).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[SearchPricing] error query mysql find, err:%+v", err)
-		return nil, 0, err
-	}
-	return PricingDatas, total, nil
-}
-
-func SearchYoungee(ctx context.Context, pageSize, pageNum int32, conditions *common_model.YoungeeConditions) ([]*gorm_model.InfoYoungeeStrategy, int64, error) {
-	db := GetReadDB(ctx)
-	db = db.Model(gorm_model.InfoYoungeeStrategy{})
-	// 根据 查询条件过滤
-	conditionType := reflect.TypeOf(conditions).Elem()
-	conditionValue := reflect.ValueOf(conditions).Elem()
-	for i := 0; i < conditionType.NumField(); i++ {
-		field := conditionType.Field(i)
-		tag := field.Tag.Get("condition")
-		value := conditionValue.FieldByName(field.Name)
-		if !util.IsBlank(value) {
-			fmt.Println("tag:", tag)
-			db = db.Debug().Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-		}
-	}
-	// 查询总数
-	var total int64
-	var YoungeeDatas []*gorm_model.InfoYoungeeStrategy
-	if err := db.Count(&total).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[SearchYoungee] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	// 查询该页数据
-	limit := pageSize
-	offset := pageSize * pageNum // assert pageNum start with 0
-	err := db.Order("content_type desc").Limit(int(limit)).Offset(int(offset)).Find(&YoungeeDatas).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[SearchYoungee] error query mysql find, err:%+v", err)
-		return nil, 0, err
-	}
-	return YoungeeDatas, total, nil
-}
-
-func ModifyPricing(ctx context.Context, req *http_model.ModifyPricingRequest) (int, error) {
-	db := GetReadDB(ctx)
-	strategyId := req.StrategyId
-	db = db.Model(gorm_model.InfoPricingStrategy{})
-	project_type, fee_form, platform, fans_low, fans_up, service_charge, service_rate := req.ProjectType, req.FeeForm, req.Platform, req.FansLow, req.FansHigh, req.ServiceCharge, req.ServiceRate*10
-	var IsExclusive, IsExclusive2, IsExclusive3, IsExclusive1 int64
-	err := db.Debug().Where("strategyId <> ? && fee_form = ? && platform = ? && fans_low <= ? && fans_up >= ?", strategyId, fee_form, platform, fans_low, fans_up).Count(&IsExclusive).Error
-	if IsExclusive != 0 {
-		return 1, nil
-	}
-	err = db.Debug().Where("strategyId <> ? && fee_form = ? && platform = ? && fans_low < ? && fans_up > ?", strategyId, fee_form, platform, fans_low, fans_low).Count(&IsExclusive1).Error
-	if IsExclusive1 != 0 {
-		return 1, nil
-	}
-	err = db.Debug().Where("strategyId <> ? && fee_form = ? && platform = ? && fans_low < ? && fans_up > ?", strategyId, fee_form, platform, fans_up, fans_up).Count(&IsExclusive2).Error
-	if IsExclusive2 != 0 {
-		return 1, nil
-	}
-	err = db.Debug().Where("strategyId <> ? && fee_form = ? && platform = ? && fans_low >= ? && fans_up <= ?", strategyId, fee_form, platform, fans_low, fans_up).Count(&IsExclusive3).Error
-	if IsExclusive3 != 0 {
-		return 1, nil
-	}
-	if err != nil {
-		fmt.Printf("[ModifyPricing] error query mysql find, err:%+v", err)
-		logrus.WithContext(ctx).Errorf("[ModifyPricing] error query mysql find, err:%+v", err)
-		return 2, err
-	}
-	//fmt.Printf("service_rate:%+v", service_rate)
-	db1 := GetReadDB(ctx).Model(gorm_model.InfoPricingStrategy{}).Where("strategyId = ?", strategyId)
-	err1 := db1.Updates(map[string]interface{}{
-		"project_type": project_type, "service_rate": service_rate, "fee_form": fee_form,
-		"platform": platform, "fans_low": fans_low, "fans_up": fans_up, "service_charge": service_charge,
-	}).Error
-	if err1 != nil {
-		fmt.Printf("[ModifyPricing] error query mysql update, err:%+v", err)
-		logrus.WithContext(ctx).Errorf("[ModifyPricing] error query mysql update, err:%+v", err)
-		return 2, err
-	}
-	return 0, nil
-}
-
-func UpdateAutoTaskTime(ctx context.Context, time int32, num int32) error {
-	db := GetReadDB(ctx)
-	var autoTaskInfo gorm_model.InfoAutoTask
-	err := db.Model(gorm_model.InfoAutoTask{}).Last(&autoTaskInfo).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[UpdateAutoTaskTime] error get Last mysql, err:%+v", err)
-		return err
-	}
-	switch num {
-	case 1:
-		autoTaskInfo.SignInOffline = time
-	case 2:
-		autoTaskInfo.SignInVirtual = time
-	case 3:
-		autoTaskInfo.ReviewInMv = time
-	case 4:
-		autoTaskInfo.ReviewUnlimited = time
-	case 5:
-		autoTaskInfo.Postreview = time
-	case 6:
-		autoTaskInfo.CaseClose = time
-	case 7:
-		autoTaskInfo.Invalid = time
-	case 8:
-		autoTaskInfo.DraftDefaultInPic = time
-	case 9:
-		autoTaskInfo.DraftDefaultInMv = time
-	case 10:
-		autoTaskInfo.ScriptDefault = time
-	case 11:
-		autoTaskInfo.LinkBreach = time
-	case 12:
-		autoTaskInfo.CaseCloseDefault = time
-	}
-	autoTaskInfo.AutoTaskID += 1
-	err = db.Model(gorm_model.InfoAutoTask{}).Create(&autoTaskInfo).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[UpdateAutoTaskTime] error Create mysql, err:%+v", err)
-		return err
-	}
-	return nil
-}
-
-func UpdateAutoDefaultRate(ctx context.Context, rate int, num int32) error {
-	db := GetReadDB(ctx)
-	autoDefaultRateInfo := gorm_model.InfoAutoDefaultHandle{}
-	err := db.Model(&gorm_model.InfoAutoDefaultHandle{}).Last(&autoDefaultRateInfo).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[UpdateAutoDefaultRate] error get Last mysql, err:%+v", err)
-		return err
-	}
-	switch num {
-	case 1:
-		autoDefaultRateInfo.SketchReplaceNotUpload = rate
-	case 2:
-		autoDefaultRateInfo.SketchReplaceTimeOut = rate
-	case 3:
-		autoDefaultRateInfo.SketchOtherNotUpload = rate
-	case 4:
-		autoDefaultRateInfo.SketchOtherTimeOut = rate
-	case 5:
-		autoDefaultRateInfo.ScriptReplaceNotUpload = rate
-	case 6:
-		autoDefaultRateInfo.ScriptReplaceTimeOut = rate
-	case 7:
-		autoDefaultRateInfo.ScriptOtherNotUpload = rate
-	case 8:
-		autoDefaultRateInfo.ScriptOtherTimeOut = rate
-	case 9:
-		autoDefaultRateInfo.LinkReplaceNotUpload = rate
-	case 10:
-		autoDefaultRateInfo.LinkReplaceTimeOut = rate
-	case 11:
-		autoDefaultRateInfo.LinkOtherNotUpload = rate
-	case 12:
-		autoDefaultRateInfo.LinkOtherTimeOut = rate
-	case 13:
-		autoDefaultRateInfo.DataReplaceNotUpload = rate
-	case 14:
-		autoDefaultRateInfo.DataReplaceTimeOut = rate
-	case 15:
-		autoDefaultRateInfo.DataOtherNotUpload = rate
-	case 16:
-		autoDefaultRateInfo.DataOtherTimeOut = rate
-	}
-	autoDefaultRateInfo.AutoDefaultID += 1
-	err = db.Model(&gorm_model.InfoAutoDefaultHandle{}).Create(autoDefaultRateInfo).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[UpdateAutoDefaultRate] error Create mysql, err:%+v", err)
-		return err
-	}
-	return nil
-}
-
-func GetSignInOfflineTask(projectForm int32) error {
-	db := GetReadDB(context.Background())
-	var projectInfos []*gorm_model.ProjectInfo
-	err := db.Model(gorm_model.ProjectInfo{}).Where("project_type = ? AND project_form = ? AND project_status = 9", 1, projectForm).Find(&projectInfos).Error
-	if err != nil {
-		return err
-	}
-	projectIdMap := make(map[string]int64)
-	taskIDs := make(map[string]string)
-	var projectIds []string
-	var taskIds []string
-	var t int32
-	for _, projectInfo := range projectInfos {
-		autoTaskId := projectInfo.AutoTaskID
-		dbStart := GetReadDB(context.Background())
-		var autoTaskInfo gorm_model.InfoAutoTask
-		dbStart.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", autoTaskId).First(&autoTaskInfo)
-		// fmt.Println("t:", autoTaskInfo.SignInOffline)
-		if projectForm == 3 {
-			t = autoTaskInfo.SignInOffline
-		} else {
-			t = autoTaskInfo.SignInVirtual
-		}
-		projectIds = append(projectIds, projectInfo.ProjectID)
-		if _, ok := projectIdMap[projectInfo.ProjectID]; !ok {
-			projectIdMap[projectInfo.ProjectID] = projectInfo.ContentType
-			db1 := GetReadDB(context.Background())
-			var taskInfos []gorm_model.YoungeeTaskInfo
-			db1.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND logistics_status = ? AND task_stage = 5", projectInfo.ProjectID, 2).Find(&taskInfos)
-			//fmt.Println("taskInfos", taskInfos)
-			for _, taskInfo := range taskInfos {
-				//fmt.Println("TaskId", taskInfo.TaskId)
-				if _, ok1 := taskIDs[taskInfo.TaskId]; !ok1 {
-					taskIds = append(taskIds, taskInfo.TaskId)
-					taskIDs[taskInfo.TaskId] = taskInfo.ProjectId
-					var logisticInfo gorm_model.YoungeeTaskLogistics
-					db2 := GetReadDB(context.Background())
-					db2.Model(gorm_model.YoungeeTaskLogistics{}).Where("task_id = ?", taskInfo.TaskId).Find(&logisticInfo)
-					dd, _ := time.ParseDuration(conv.MustString(t, "") + "h")
-					if logisticInfo.AutoSignAt == nil || logisticInfo.AutoSignAt.IsZero() {
-						var t1 time.Time
-						if logisticInfo.ThingsType == 3 {
-							t1 = logisticInfo.ExplorestoreEndtime.Add(dd)
-						} else {
-							t1 = logisticInfo.DeliveryTime.Add(dd)
-						}
-						db5 := GetReadDB(context.Background())
-						db5.Model(gorm_model.YoungeeTaskLogistics{}).Where("logistics_id = ?", logisticInfo.LogisticsID).
-							Updates(&gorm_model.YoungeeTaskLogistics{AutoSignAt: &t1})
-						fmt.Println("已添加自动签收时间")
-					}
-				}
-			}
-		}
-	}
-	var logisticInfos []gorm_model.YoungeeTaskLogistics
-	db3 := GetReadDB(context.Background())
-	err = db3.Model(gorm_model.YoungeeTaskLogistics{}).Where("auto_sign_at <= ? AND task_id IN ?", time.Now(), taskIds).Find(&logisticInfos).Error
-	if err != nil {
-		log.Println("DB AutoGetSignInOfflineTask error :", err)
-		return err
-	}
-	var signedTaskId []string
-	for _, logisticInfo := range logisticInfos {
-		signedTaskId = append(signedTaskId, logisticInfo.TaskID)
-		if logisticInfo.Status == 0 {
-			if logisticInfo.ThingsType == 3 {
-				t := time.Now()
-				db6 := GetReadDB(context.Background())
-				db6.Model(gorm_model.YoungeeTaskLogistics{}).Where("logistics_id = ?", logisticInfo.LogisticsID).Updates(
-					&gorm_model.YoungeeTaskLogistics{SignedTime: &t, Status: 1})
-			} else {
-				db6 := GetReadDB(context.Background())
-				t := time.Now()
-				db6.Model(gorm_model.YoungeeTaskLogistics{}).Where("logistics_id = ?", logisticInfo.LogisticsID).Updates(
-					&gorm_model.YoungeeTaskLogistics{SignedTime: &t, Status: 1})
-			}
-			err = CreateTaskLog(context.Background(), logisticInfo.TaskID, "签收时间")
-			if err != nil {
-				logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
-			}
-
-			err = CreateMessageByTaskId(context.Background(), 9, 2, logisticInfo.TaskID)
-			if err != nil {
-				logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
-			}
-			fmt.Println("已更新签收时间")
-		}
-	}
-	signedTaskId = util.RemoveStrRepByMap(signedTaskId)
-	//fmt.Println("signedTaskId", signedTaskId)
-	for _, taskID := range signedTaskId {
-		//fmt.Println("taskID", taskID)
-		db4 := GetReadDB(context.Background())
-		taskNeedMod := gorm_model.YoungeeTaskInfo{}
-		db4.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskID).Find(&taskNeedMod)
-		if projectIdMap[taskIDs[taskID]] == 1 {
-			if taskNeedMod.LogisticsStatus == 2 && taskNeedMod.TaskStage == 5 {
-				db4.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskID).Updates(&gorm_model.YoungeeTaskInfo{LogisticsStatus: 3, TaskStage: 9})
-				fmt.Println("内容形式为图片的项目 已修改任务状态为待传初稿 及物流状态为已签收")
-			}
-		} else if projectIdMap[taskIDs[taskID]] == 2 {
-			if taskNeedMod.LogisticsStatus == 2 && taskNeedMod.TaskStage == 5 {
-				db4.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskID).Updates(&gorm_model.YoungeeTaskInfo{LogisticsStatus: 3, TaskStage: 7})
-				fmt.Println("内容形式为视频的项目 已修改任务状态为待传脚本 及物流状态为已签收")
-			}
-		}
-	}
-	return nil
-}
-
-func GetAutoReviewTask(contentType int32) error {
-	db := GetReadDB(context.Background())
-	var projectInfos []*gorm_model.ProjectInfo
-	if contentType == 2 {
-		// 项目内容形式为视频
-		// 1. 补全scriptInfo表中的自动审核脚本时间
-		err := db.Model(gorm_model.ProjectInfo{}).Where("project_type = ? AND content_type = ? AND project_status = 9", 1, contentType).Find(&projectInfos).Error
-		if err != nil {
-			return err
-		}
-		var projectIds []string
-		projectIdToAutoTaskIdMap := map[string]int{}
-		for _, projectInfo := range projectInfos {
-			projectIds = append(projectIds, projectInfo.ProjectID)
-			projectIdToAutoTaskIdMap[projectInfo.ProjectID] = int(projectInfo.AutoTaskID)
-		}
-		//fmt.Println("projectIds:", projectIds)
-		db1 := GetReadDB(context.Background())
-		for _, projectId := range projectIds {
-			// 获取 autoTaskId 及其对应的限制时间、
-			autoTaskId := projectIdToAutoTaskIdMap[projectId]
-			dbStart := GetReadDB(context.Background())
-			var ReviewInMv int32
-			dbStart.Model(gorm_model.InfoAutoTask{}).Select("review_in_mv").Where("auto_task_id = ?", autoTaskId).First(&ReviewInMv)
-			//fmt.Println("t:", autoTaskInfo.ReviewInMv)
-			// 获取 projectId 对应的 taskId 及添加脚本自动审核时间
-			var taskInfos []gorm_model.YoungeeTaskInfo
-			db1.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_status = 2 AND task_stage = 8", projectId).Find(&taskInfos)
-			for _, taskInfo := range taskInfos {
-				//fmt.Println("TaskID:", taskInfo.TaskId)
-				db2 := GetReadDB(context.Background())
-				var scriptInfos gorm_model.YounggeeScriptInfo
-				db2.Model(gorm_model.YounggeeScriptInfo{}).Where("task_id = ? AND is_submit = ? AND is_review = ? ", taskInfo.TaskId, 1, 0).Find(&scriptInfos)
-				dd, _ := time.ParseDuration(conv.MustString(ReviewInMv, "") + "h")
-				if scriptInfos.AutoAgreeAt.IsZero() {
-					db3 := GetReadDB(context.Background())
-					db3.Model(gorm_model.YounggeeScriptInfo{}).Where("task_id = ?", taskInfo.TaskId).
-						Updates(&gorm_model.YounggeeScriptInfo{AutoAgreeAt: scriptInfos.SubmitAt.Add(dd)})
-					fmt.Println("已添加脚本自动审核时间")
-				}
-			}
-		}
-		//fmt.Println("taskId:", taskId)
-
-		// 2. 查询scriptInfo表中应该被自动审稿的脚本
-		var newScriptInfos []gorm_model.YounggeeScriptInfo
-		db3 := GetReadDB(context.Background())
-		err = db3.Model(gorm_model.YounggeeScriptInfo{}).Where("auto_agree_at <= ? AND is_submit = ? AND is_review = ? ", time.Now(), 1, 0).Find(&newScriptInfos).Error
-		if err != nil {
-			log.Println("DB GetAutoReviewTask error in script:", err)
-			return err
-		}
-		// 记录其task_id
-		var taskIds []string
-		for _, scriptInfo := range newScriptInfos {
-			taskIds = append(taskIds, scriptInfo.TaskID)
-		}
-		// 3. 执行审核脚本操作
-		// 1). 更新scriptInfo表
-		db4 := GetReadDB(context.Background())
-		err = db4.Model(gorm_model.YounggeeScriptInfo{}).Where("auto_agree_at <= ? AND is_submit = ? AND is_review = ? ", time.Now(), 1, 0).Updates(
-			&gorm_model.YounggeeScriptInfo{AgreeAt: time.Now(), IsReview: 1, IsOk: 1}).Error
-		if err != nil {
-			log.Println("DB GetAutoReviewTask error in script:", err)
-			return err
-		}
-		var num int64
-		db4.Model(gorm_model.YounggeeScriptInfo{}).Where("auto_agree_at <= ? AND is_submit = ? AND is_review = ? ", time.Now(), 1, 0).Count(&num)
-		if num != 0 {
-			fmt.Println("自动审核脚本:已更新scriptInfo表")
-		}
-		// 2).更新taskInfo表
-		db5 := GetReadDB(context.Background())
-		err = db5.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", taskIds).Updates(
-			&gorm_model.YoungeeTaskInfo{ScriptStatus: 5, TaskStage: 9}).Error
-		if err != nil {
-			log.Println("DB GetAutoReviewTask error in script:", err)
-			return err
-		}
-		for _, taskId := range taskIds {
-			err = CreateTaskLog(context.Background(), taskId, "脚本通过")
-			if err != nil {
-				logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
-			}
-
-			err = CreateMessageByTaskId(context.Background(), 2, 1, taskId)
-			if err != nil {
-				logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
-			}
-		}
-		if len(taskIds) != 0 {
-			fmt.Println("以下任务状态需要变更:", taskIds)
-			fmt.Println("自动审核脚本:已更新taskInfo表,任务阶段为待传链接 及脚本上传状态为已通过")
-		}
-		return nil
-	} else {
-		// 项目内容形式为图文
-		// 1. 补全sketchInfo表中的自动审核初稿时间
-		err := db.Model(gorm_model.ProjectInfo{}).Where("project_type = ? AND project_status = 9", 1).Find(&projectInfos).Error
-		if err != nil {
-			return err
-		}
-		var projectIds []string
-		projectIdToAutoTaskIdMap := map[string]int{}
-		for _, projectInfo := range projectInfos {
-			projectIds = append(projectIds, projectInfo.ProjectID)
-			projectIdToAutoTaskIdMap[projectInfo.ProjectID] = int(projectInfo.AutoTaskID)
-		}
-		//fmt.Println("projectIds:", projectIds)
-		db1 := GetReadDB(context.Background())
-		for _, projectId := range projectIds {
-			// 获取 autoTaskId 及其对应的限制时间、
-			autoTaskId := projectIdToAutoTaskIdMap[projectId]
-			dbStart := GetReadDB(context.Background())
-			var ReviewUnlimited int32
-			dbStart.Model(gorm_model.InfoAutoTask{}).Select("review_unlimited").Where("auto_task_id = ?", autoTaskId).First(&ReviewUnlimited)
-			//fmt.Println("t:", autoTaskInfo.ReviewUnlimited)
-			var taskInfos []gorm_model.YoungeeTaskInfo
-			db1.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_status = 2 AND task_stage = 10", projectId).Find(&taskInfos)
-			for _, taskInfo := range taskInfos {
-				db2 := GetReadDB(context.Background())
-				var sketchInfo gorm_model.YounggeeSketchInfo
-				db2.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id = ? AND is_submit = ? AND is_review = ? ", taskInfo.TaskId, 1, 0).Find(&sketchInfo)
-				dd, _ := time.ParseDuration(conv.MustString(ReviewUnlimited, "") + "h")
-				if sketchInfo.AutoAgreeAt.IsZero() {
-					db3 := GetReadDB(context.Background())
-					db3.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id = ?", sketchInfo.TaskID).Updates(&gorm_model.YounggeeSketchInfo{
-						AutoAgreeAt: sketchInfo.SubmitAt.Add(dd),
-					})
-					fmt.Println("已添加初稿自动审核时间")
-				}
-			}
-		}
-		// 2. 查询sketchInfo表中应该被自动审稿的初稿
-		var newSketchInfos []gorm_model.YounggeeSketchInfo
-		db3 := GetReadDB(context.Background())
-		err = db3.Model(gorm_model.YounggeeSketchInfo{}).Where("auto_agree_at <= ? AND is_submit = ? AND is_review = ? ", time.Now(), 1, 0).Find(&newSketchInfos).Error
-		if err != nil {
-			log.Println("DB GetAutoReviewTask error in sketch:", err)
-			return err
-		}
-		// 记录其task_id
-		var taskIds []string
-		for _, sketchInfo := range newSketchInfos {
-			taskIds = append(taskIds, sketchInfo.TaskID)
-		}
-		// 3. 执行审核初稿操作
-		// 1). 更新sketchInfo表
-		db4 := GetReadDB(context.Background())
-		err = db4.Model(gorm_model.YounggeeSketchInfo{}).Where("auto_agree_at <= ? AND is_submit = ? AND is_review = ? ", time.Now(), 1, 0).Updates(
-			&gorm_model.YounggeeSketchInfo{AgreeAt: time.Now(), IsReview: 1, IsOk: 1}).Error
-		if err != nil {
-			log.Println("DB GetAutoReviewTask error in sketch:", err)
-			return err
-		}
-		var num int64
-		db4.Model(gorm_model.YounggeeSketchInfo{}).Where("auto_agree_at <= ? AND is_submit = ? AND is_review = ? ", time.Now(), 1, 0).Count(&num)
-		if num != 0 {
-			fmt.Println("自动审核初稿:已更新sketchInfo表")
-		}
-		// 2).更新taskInfo表
-		db5 := GetReadDB(context.Background())
-		err = db5.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", taskIds).Updates(
-			&gorm_model.YoungeeTaskInfo{SketchStatus: 5, TaskStage: 11}).Error
-		if err != nil {
-			log.Println("DB GetAutoReviewTask error in sketch:", err)
-			return err
-		}
-		for _, taskId := range taskIds {
-			err = CreateTaskLog(context.Background(), taskId, "初稿通过")
-			if err != nil {
-				logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
-			}
-			err = CreateMessageByTaskId(context.Background(), 3, 1, taskId)
-			if err != nil {
-				logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
-			}
-		}
-		if len(taskIds) != 0 {
-			fmt.Println("以下任务状态需要变更:", taskIds)
-			fmt.Println("自动审核初稿:已更新taskInfo表,任务阶段为待传链接 及初稿上传状态为已通过")
-		}
-		return nil
-	}
-}
-
-func GetAutoPostReviewTask() error {
-	// 1. 补全linkInfo表中的自动审核链接时间
-	db := GetReadDB(context.Background())
-	var projectInfos []*gorm_model.ProjectInfo
-	err := db.Model(gorm_model.ProjectInfo{}).Where("project_type = ? AND project_status = 9", 1).Find(&projectInfos).Error
-	if err != nil {
-		return err
-	}
-	var projectIds []string
-	projectIdToAutoTaskIdMap := map[string]int{}
-	for _, projectInfo := range projectInfos {
-		projectIds = append(projectIds, projectInfo.ProjectID)
-		projectIdToAutoTaskIdMap[projectInfo.ProjectID] = int(projectInfo.AutoTaskID)
-	}
-	//fmt.Println("projectIds:", projectIds)
-	db1 := GetReadDB(context.Background())
-	for _, projectId := range projectIds {
-		// 获取 autoTaskId 及其对应的限制时间、
-		autoTaskId := projectIdToAutoTaskIdMap[projectId]
-		dbStart := GetReadDB(context.Background())
-		var Postreview int32
-		dbStart.Model(gorm_model.InfoAutoTask{}).Select("postreview").Where("auto_task_id = ?", autoTaskId).First(&Postreview)
-		//fmt.Println("t:", autoTaskInfo.Postreview)
-		var taskInfos []gorm_model.YoungeeTaskInfo
-		db1.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_status = 2 AND task_stage = 12", projectId).Find(&taskInfos)
-		for _, taskInfo := range taskInfos {
-			db2 := GetReadDB(context.Background())
-			var linkInfos gorm_model.YounggeeLinkInfo
-			db2.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id = ? AND is_submit = ? AND is_review = ? ", taskInfo.TaskId, 1, 0).Find(&linkInfos)
-			dd, _ := time.ParseDuration(conv.MustString(Postreview, "") + "h")
-			if linkInfos.AutoAgreeAt.IsZero() && linkInfos.IsSubmit == 1 {
-				db3 := GetReadDB(context.Background())
-				db3.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id = ?", linkInfos.TaskID).Updates(&gorm_model.YounggeeLinkInfo{AutoAgreeAt: linkInfos.SubmitAt.Add(dd)})
-				fmt.Println("已添加链接自动审核时间")
-			}
-		}
-	}
-
-	// 2. 查询linkInfo表中应该被自动审稿的链接
-	var newLinkInfos []gorm_model.YounggeeLinkInfo
-	db3 := GetReadDB(context.Background())
-	err = db3.Model(gorm_model.YounggeeLinkInfo{}).Where("auto_agree_at <= ? AND is_submit = ? AND is_review = ? ", time.Now(), 1, 0).Find(&newLinkInfos).Error
-	if err != nil {
-		log.Println("DB GetAutoPostReviewTask error in link:", err)
-		return err
-	}
-	// 记录其task_id
-	var taskIds []string
-	for _, linkInfo := range newLinkInfos {
-		taskIds = append(taskIds, linkInfo.TaskID)
-	}
-	// 3. 执行审核链接操作
-	// 1). 更新linkInfo表
-	db4 := GetReadDB(context.Background())
-	err = db4.Model(gorm_model.YounggeeLinkInfo{}).Where("auto_agree_at <= ? AND is_submit = ? AND is_review = ? ", time.Now(), 1, 0).Updates(
-		&gorm_model.YounggeeLinkInfo{AgreeAt: time.Now(), IsReview: 1, IsOk: 1}).Error
-	if err != nil {
-		log.Println("DB GetAutoPostReviewTask error in link:", err)
-		return err
-	}
-	var num int64
-	db4.Model(gorm_model.YounggeeLinkInfo{}).Where("auto_agree_at <= ? AND is_submit = ? AND is_review = ? ", time.Now(), 1, 0).Count(&num)
-	if num != 0 {
-		fmt.Println("自动审核链接:已更新linkInfo表")
-	}
-	// 2).更新taskInfo表
-	db5 := GetReadDB(context.Background())
-	err = db5.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", taskIds).Updates(
-		&gorm_model.YoungeeTaskInfo{LinkStatus: 5, TaskStage: 13}).Error
-	if err != nil {
-		log.Println("DB GetAutoPostReviewTask error in link:", err)
-		return err
-	}
-	for _, taskId := range taskIds {
-		err = CreateTaskLog(context.Background(), taskId, "链接通过")
-		if err != nil {
-			logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
-		}
-		err = CreateMessageByTaskId(context.Background(), 4, 1, taskId)
-		if err != nil {
-			logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
-		}
-	}
-	if len(taskIds) != 0 {
-		fmt.Println("以下任务状态需要变更:", taskIds)
-		fmt.Println("自动审核链接:已更新taskInfo表,任务阶段为待传链接 及链接上传状态为已通过")
-	}
-	return nil
-}
-
-func GetAutoCaseCloseTask() error {
-	// 1. 补全dataInfo表中的自动审核数据时间
-	db := GetReadDB(context.Background())
-	var projectInfos []*gorm_model.ProjectInfo
-	err := db.Model(gorm_model.ProjectInfo{}).Where("project_type = ? AND project_status = 9", 1).Find(&projectInfos).Error
-	if err != nil {
-		return err
-	}
-	var projectIds []string
-	projectIdToAutoTaskIdMap := map[string]int{}
-	for _, projectInfo := range projectInfos {
-		projectIds = append(projectIds, projectInfo.ProjectID)
-		projectIdToAutoTaskIdMap[projectInfo.ProjectID] = int(projectInfo.AutoTaskID)
-	}
-	//fmt.Println("projectIds:", projectIds)
-	db1 := GetReadDB(context.Background())
-	for _, projectId := range projectIds {
-		// 获取 autoTaskId 及其对应的限制时间、
-		autoTaskId := projectIdToAutoTaskIdMap[projectId]
-		dbStart := GetReadDB(context.Background())
-		var CaseClose int32
-		dbStart.Model(gorm_model.InfoAutoTask{}).Select("case_close").Where("auto_task_id = ?", autoTaskId).First(&CaseClose)
-		//fmt.Println("t:", autoTaskInfo.CaseClose)
-		var taskInfos []gorm_model.YoungeeTaskInfo
-		db1.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_status = 2 AND task_stage = 14", projectId).Find(&taskInfos)
-		for _, taskInfo := range taskInfos {
-			db2 := GetReadDB(context.Background())
-			var dataInfos gorm_model.YounggeeDataInfo
-			db2.Model(gorm_model.YounggeeDataInfo{}).Where("task_id = ? AND is_submit = ? AND is_review = ? ", taskInfo.TaskId, 1, 0).Find(&dataInfos)
-			dd, _ := time.ParseDuration(conv.MustString(CaseClose, "") + "h")
-			if dataInfos.AutoAgreeAt.IsZero() && dataInfos.IsSubmit == 1 {
-				db3 := GetReadDB(context.Background())
-				db3.Model(gorm_model.YounggeeDataInfo{}).Where("task_id = ?", dataInfos.TaskID).Updates(&gorm_model.YounggeeDataInfo{AutoAgreeAt: dataInfos.SubmitAt.Add(dd)})
-				fmt.Println("已添加数据自动审核时间")
-			}
-		}
-	}
-
-	// 2. 查询dataInfo表中应该被自动审稿的数据
-	var newDataInfos []gorm_model.YounggeeDataInfo
-	db3 := GetReadDB(context.Background())
-	err = db3.Model(gorm_model.YounggeeDataInfo{}).Where("auto_agree_at <= ? AND is_submit = ? AND is_review = ? ", time.Now(), 1, 0).Find(&newDataInfos).Error
-	if err != nil {
-		log.Println("DB GetAutoCaseCloseTask error in data:", err)
-		return err
-	}
-	// 记录其task_id
-	taskIdToDataInfoMap := map[string]gorm_model.YounggeeDataInfo{}
-	taskIdToTaskInfoMap := map[string]gorm_model.YoungeeTaskInfo{}
-	var taskIds []string
-	db6 := GetReadDB(context.Background())
-	for _, dataInfo := range newDataInfos {
-		taskIdToDataInfoMap[dataInfo.TaskID] = dataInfo
-		taskIds = append(taskIds, dataInfo.TaskID)
-		taskInfo := gorm_model.YoungeeTaskInfo{}
-		err = db6.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", dataInfo.TaskID).Find(&taskInfo).Error
-		if err != nil {
-			log.Println("DB GetAutoCaseCloseTask error in data:", err)
-			return err
-		}
-		taskIdToTaskInfoMap[dataInfo.TaskID] = taskInfo
-	}
-	// 3. 执行审核数据操作
-	// 1). 更新dataInfo表
-	db4 := GetReadDB(context.Background())
-	err = db4.Model(gorm_model.YounggeeDataInfo{}).Where("auto_agree_at <= ? AND is_submit = ? AND is_review = ? ", time.Now(), 1, 0).Updates(
-		&gorm_model.YounggeeDataInfo{AgreeAt: time.Now(), IsReview: 1, IsOk: 1}).Error
-	if err != nil {
-		log.Println("DB GetAutoCaseCloseTask error in data:", err)
-		return err
-	}
-	var num int64
-	db4.Model(gorm_model.YounggeeDataInfo{}).Where("auto_agree_at <= ? AND is_submit = ? AND is_review = ? ", time.Now(), 1, 0).Count(&num)
-	if num != 0 {
-		fmt.Println("自动审核数据:已更新dataInfo表")
-	}
-	// 2).更新taskInfo表
-	db5 := GetReadDB(context.Background())
-	err = db5.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", taskIds).Updates(
-		&gorm_model.YoungeeTaskInfo{DataStatus: 5, TaskStage: 15, CompleteDate: time.Now(), CompleteStatus: 2, WithdrawStatus: 2}).Error
-	if err != nil {
-		log.Println("DB GetAutoCaseCloseTask error in data:", err)
-		return err
-	}
-	for _, taskId := range taskIds {
-		err = CreateTaskLog(context.Background(), taskId, "数据通过")
-		if err != nil {
-			logrus.WithContext(context.Background()).Errorf("[auto] call CreateTaskLog error,err:%+v", err)
-		}
-		err = CreateMessageByTaskId(context.Background(), 5, 1, taskId)
-		if err != nil {
-			logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
-		}
-	}
-	err = SetTalentIncome(context.Background(), taskIds)
-	if err != nil {
-		logrus.WithContext(context.Background()).Errorf("[auto] call SetTalentIncome error,err:%+v", err)
-	}
-	if len(taskIds) != 0 {
-		fmt.Println("以下任务状态需要变更:", taskIds)
-		fmt.Println("自动审核数据:已更新taskInfo表,任务阶段为待传数据 及数据上传状态为已通过")
-	}
-
-	// 3). 创建任务收益并更新recruitStrategy表
-	for _, taskId := range taskIds {
-		taskInfo := taskIdToTaskInfoMap[taskId]
-		dataInfo := taskIdToDataInfoMap[taskId]
-		db7 := GetReadDB(context.Background())
-
-		//查询project_info
-		projectInfo := gorm_model.ProjectInfo{}
-		err1 := db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", taskInfo.ProjectId).Scan(&projectInfo).Error
-		if err1 != nil {
-			log.Println("DB GetAutoCaseCloseTask error in data:", err)
-			return err1
-		}
-		// 2. 创建任务收益
-		var productStruct gorm_model.YounggeeProduct
-		if err = json.Unmarshal([]byte(projectInfo.ProductSnap), &productStruct); err != nil {
-			log.Println("DB GetAutoCaseCloseTask error in data:", err)
-			return err
-		}
-		t := time.Now()
-		income := gorm_model.YounggeeTalentIncome{
-			TalentID:       taskInfo.TalentId,
-			ProjectID:      taskInfo.ProjectId,
-			SectaskID:      taskInfo.TaskId,
-			BrandName:      productStruct.BrandName,
-			TaskName:       projectInfo.ProjectName,
-			Income:         strconv.FormatFloat(taskInfo.SettleAmount, 'f', 10, 32),
-			IncomeType:     1,
-			WithdrawStatus: 1,
-			IncomeAt:       &t,
-			WithdrawAt:     nil,
-		}
-		err = CreateIncome(context.Background(), income, nil)
-		if err != nil {
-			log.Println("DB GetAutoCaseCloseTask error in data:", err)
-			return err
-		}
-
-		// 更新招募策略
-		db7 = db7.Model(gorm_model.RecruitStrategy{}).Where("project_id = ? and strategy_id = ?", taskInfo.ProjectId, taskInfo.StrategyId)
-		fansCount, _ := strconv.Atoi(conv.MustString(gjson.Get(taskInfo.TalentPlatformInfoSnap, "fans_count"), ""))
-		err = db7.Updates(map[string]interface{}{
-			"fan_number":     gorm.Expr("fan_number + ?", fansCount),
-			"play_number":    gorm.Expr("play_number + ?", dataInfo.PlayNumber),
-			"like_number":    gorm.Expr("like_number + ?", dataInfo.LikeNumber),
-			"collect_number": gorm.Expr("collect_number + ?", dataInfo.CollectNumber),
-			"comment_number": gorm.Expr("comment_number + ?", dataInfo.CommentNumber),
-			"finish_number":  gorm.Expr("finish_number + 1"),
-			"total_offer":    gorm.Expr("total_offer + ?", taskInfo.RealPayment)}).Error
-		if err != nil {
-			log.Println("DB GetAutoCaseCloseTask error in data:", err)
-			return err
-		}
-	}
-
-	// 4. 判断是否全部任务已结案,若已全部结案则触发项目结案
-	// 查询 task_stage < 15 的任务数量
-	for _, projectInfo := range projectInfos {
-		var unFinishedTaskNumber int64
-		db8 := GetReadDB(context.Background())
-		err = db8.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2 and task_stage < 15", projectInfo.ProjectID).Count(&unFinishedTaskNumber).Error
-		if err != nil {
-			log.Println("DB GetAutoCaseCloseTask error in data:", err)
-			return err
-		}
-		var finishedNum int64
-		db8.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2 and task_stage >= 15", projectInfo.ProjectID).Count(&finishedNum)
-		if unFinishedTaskNumber == 0 && finishedNum != 0 {
-			// 若为0则触发项目结案
-			db9 := GetReadDB(context.Background())
-			// 2. 释放企业账户因项目冻结的资金
-			// 	1). 计算剩余资金
-			var allPayment float64
-			var realPayment float64
-			err = db9.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2 and task_stage >= 15", projectInfo.ProjectID).
-				Pluck("COALESCE(SUM(all_payment), 0) as allPayment", &allPayment).Error
-			if err != nil {
-				log.Println("DB GetAutoCaseCloseTask error in data:", err)
-				return err
-			}
-			err = db9.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2 and task_stage >= 15", projectInfo.ProjectID).
-				Pluck("COALESCE(SUM(real_payment), 0) as realPayment", &realPayment).Error
-			if err != nil {
-				log.Println("DB GetAutoCaseCloseTask error in data:", err)
-				return err
-			}
-			fmt.Println("企业应支付金额总计:", allPayment, "实际支付总计:", realPayment)
-
-			// 	2). 释放剩余资金
-			err = db9.Model(gorm_model.Enterprise{}).Where("enterprise_id = ?", projectInfo.EnterpriseID).Updates(
-				map[string]interface{}{
-					"frozen_balance":    gorm.Expr("frozen_balance - ?", allPayment),
-					"balance":           gorm.Expr("balance - ?", realPayment),
-					"available_balance": gorm.Expr("available_balance + ?", allPayment-realPayment)}).Error
-			if err != nil {
-				log.Println("DB GetAutoCaseCloseTask error in data:", err)
-				return err
-			}
-			// 1. 更新项目状态为已结束
-			t := time.Now()
-			err := db9.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectInfo.ProjectID).
-				Updates(map[string]interface{}{"project_status": 10, "payment_amount": realPayment, "finish_at": &t}).Error
-			if err != nil {
-				log.Println("DB GetAutoCaseCloseTask error in data:", err)
-				return err
-			}
-		}
-	}
-	return nil
-}
-
-func GetAutoInvalidTask() error {
-	db := GetReadDB(context.Background())
-	var projectInfos []*gorm_model.ProjectInfo
-	err := db.Model(gorm_model.ProjectInfo{}).Where("project_type = ? AND project_status = ? ", 1, 6).Find(&projectInfos).Error
-	if err != nil {
-		return err
-	}
-	var projectIds []string
-	projectIdToAutoTaskIdMap := map[string]int{}
-	for _, projectInfo := range projectInfos {
-		projectIds = append(projectIds, projectInfo.ProjectID)
-		projectIdToAutoTaskIdMap[projectInfo.ProjectID] = int(projectInfo.AutoTaskID)
-	}
-	for _, projectId := range projectIds {
-		// 获取 autoTaskId 及其对应的限制时间
-		autoTaskId := projectIdToAutoTaskIdMap[projectId]
-		dbStart := GetReadDB(context.Background())
-		var Invalid int32
-		dbStart.Model(gorm_model.InfoAutoTask{}).Select("invalid").Where("auto_task_id = ?", autoTaskId).First(&Invalid)
-		//fmt.Println("t:", autoTaskInfo.Invalid)
-		db1 := GetReadDB(context.Background())
-		project := gorm_model.ProjectInfo{}
-		db1.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectId).First(&project)
-		//if project.AutoFailAt.IsZero() {
-		//	dd, _ := time.ParseDuration(conv.MustString(Invalid, "") + "h")
-		//	t := project.RecruitDdl.Add(dd)
-		//	db2 := GetReadDB(context.Background())
-		//	db2.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectId).Updates(&gorm_model.ProjectInfo{AutoFailAt: &t})
-		//	fmt.Println("已添加失效自动处理时间")
-		//}
-
-		dd, _ := time.ParseDuration(conv.MustString(Invalid, "") + "h")
-		project.RecruitDdl.Add(dd)
-		t := project.RecruitDdl.Add(dd)
-		//fmt.Println("已存在的失效时间是否跟要添加的相等", project.AutoFailAt.Equal(t))
-		if project.AutoFailAt == nil || project.AutoFailAt.IsZero() {
-			db3 := GetReadDB(context.Background())
-			db3.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectId).Updates(&gorm_model.ProjectInfo{AutoFailAt: &t})
-			fmt.Println("已添加失效自动处理时间")
-		}
-
-		projectNeedMod := gorm_model.ProjectInfo{}
-		db2 := GetReadDB(context.Background())
-		db2 = db2.Where("project_id = ?", projectId).First(&projectNeedMod)
-		fmt.Println("失效自动处理时间为:", projectNeedMod.AutoFailAt)
-		if !projectNeedMod.AutoFailAt.IsZero() || projectNeedMod.AutoFailAt != nil {
-			fmt.Printf("项目 %v 失效自动处理时间不为空\n", projectNeedMod.ProjectID)
-			fmt.Println("距离失效自动处理时间还有:,项目当前状态为", projectNeedMod.AutoFailAt.Sub(time.Now()), projectNeedMod.ProjectStatus)
-			if projectNeedMod.AutoFailAt.Sub(time.Now()) <= 0 && projectNeedMod.ProjectStatus < 8 {
-				db4 := GetReadDB(context.Background())
-				t := time.Now()
-				err1 := db4.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectId).Updates(&gorm_model.ProjectInfo{ProjectStatus: 8, FinishAt: &t, FailReason: 1}).Error
-				if err1 != nil {
-					return err1
-				}
-				fmt.Println("已更新项目状态为超时未支付的失效状态")
-				dbT := GetReadDB(context.TODO())
-				dbT.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ?", projectId).Updates(gorm_model.YoungeeTaskInfo{TaskStage: 3, CompleteStatus: 3, CompleteDate: time.Now()})
-			}
-		}
-	}
-	return nil
-}
-
-// 图文-初稿超时违约判断
-func GetAutoDraftDefaultInPicTask() error {
-	db := GetReadDB(context.Background())
-	var projectInfos []*gorm_model.ProjectInfo
-	err := db.Model(gorm_model.ProjectInfo{}).Where("project_type = ? AND content_type = ? ", 1, 1).Find(&projectInfos).Error
-	if err != nil {
-		return err
-	}
-	var projectIds []string
-	projectIdToAutoTaskIdMap := map[string]int{}    // 项目id 对 定时任务id 的map
-	projectIdToAutoDefaultIdMap := map[string]int{} // 项目id 对 违约扣款设置id 的map
-	taskIdToFeeFormMap := make(map[string]int)      // taskId 对 稿费形式的 map
-	TaskIdToProjectId := make(map[string]string)    // taskId 对 项目id的 map
-	var taskNeedModIds []string                     // 首次提交初稿的任务记录id
-	var submitTaskNeedModIds []string               // 修改后提交初稿的任务记录id
-	// 构造map及list
-	for _, projectInfo := range projectInfos {
-		projectIds = append(projectIds, projectInfo.ProjectID)
-		projectIdToAutoTaskIdMap[projectInfo.ProjectID] = int(projectInfo.AutoTaskID)
-		projectIdToAutoDefaultIdMap[projectInfo.ProjectID] = int(projectInfo.AutoDefaultID)
-	}
-	for _, projectId := range projectIds {
-		db1 := GetReadDB(context.Background())
-
-		var taskInfos []gorm_model.YoungeeTaskInfo
-		db1.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_status = ? AND task_stage = ? AND cur_default_type = ? AND logistics_status = 3", projectId, 2, 9, 0).Find(&taskInfos)
-		for _, taskInfo := range taskInfos {
-			TaskIdToProjectId[taskInfo.TaskId] = projectId
-			taskNeedMod := gorm_model.YoungeeTaskInfo{}
-			db2 := GetReadDB(context.Background())
-			// 保存所有满足物流状态为 3 且 初稿上传状态为 1或 3 的任务记录的id
-			db2.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskInfo.TaskId).First(&taskNeedMod)
-			taskIdToFeeFormMap[taskInfo.TaskId] = taskInfo.FeeForm
-			if taskNeedMod.TaskStage == 9 && taskNeedMod.SketchStatus == 1 {
-				taskNeedModIds = append(taskNeedModIds, taskInfo.TaskId)
-			}
-			if taskNeedMod.TaskStage == 9 && taskNeedMod.SketchStatus == 3 {
-				submitTaskNeedModIds = append(submitTaskNeedModIds, taskInfo.TaskId)
-			}
-		}
-	}
-	// 判断应首次上传初稿的任务
-	for _, taskNeedModId := range taskNeedModIds {
-		// 获取 autoTaskId 及其对应的限制时间
-		autoTaskId := projectIdToAutoTaskIdMap[TaskIdToProjectId[taskNeedModId]]
-		dbStart := GetReadDB(context.Background())
-		var DraftDefaultInPic int32
-		dbStart.Model(gorm_model.InfoAutoTask{}).Select("draft_default_in_pic").Where("auto_task_id = ?", autoTaskId).First(&DraftDefaultInPic)
-		db3 := GetReadDB(context.Background())
-
-		taskLogisticNeedMod := gorm_model.YoungeeTaskLogistics{}
-		db3.Model(gorm_model.YoungeeTaskLogistics{}).Where("task_id = ?", taskNeedModId).First(&taskLogisticNeedMod)
-
-		// 查询违约扣款比例
-		autoDefaultHandle := gorm_model.InfoAutoDefaultHandle{}
-		db6 := GetReadDB(context.Background())
-		db6.Model(gorm_model.InfoAutoDefaultHandle{}).Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[TaskIdToProjectId[taskNeedModId]]).Find(&autoDefaultHandle)
-
-		var sketchDefaultRate int
-		var sketchErrRate int
-		if taskIdToFeeFormMap[taskNeedModId] == 1 { // 稿费形式为产品置换
-			sketchDefaultRate = autoDefaultHandle.SketchReplaceTimeOut
-			sketchErrRate = autoDefaultHandle.SketchReplaceNotUpload
-			// db6 := GetReadDB(context.Background())
-			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("sketch_replace_time_out", "sketch_replace_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[TaskIdToProjectId[taskNeedModId]]).Find(&autoDefaultHandle)
-		} else { // 稿费形式为其他
-			sketchDefaultRate = autoDefaultHandle.SketchOtherTimeOut
-			sketchErrRate = autoDefaultHandle.SketchOtherNotUpload
-			// db6 := GetReadDB(context.Background())
-			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("sketch_other_time_out", "sketch_other_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[TaskIdToProjectId[taskNeedModId]]).Find(&sketchDefaultRate, &sketchErrRate)
-		}
-
-		//	添加初稿违约自动处理时间
-		if taskLogisticNeedMod.Status == 1 && taskLogisticNeedMod.TaskID != "" && taskLogisticNeedMod.AutoSketchBreakAt == nil || taskLogisticNeedMod.AutoSketchBreakAt.IsZero() {
-			dd, _ := time.ParseDuration(conv.MustString(DraftDefaultInPic, "") + "h")
-			db4 := GetReadDB(context.Background())
-			t := taskLogisticNeedMod.SignedTime.Add(dd)
-			db4.Where("task_id = ?", taskNeedModId).Updates(&gorm_model.YoungeeTaskLogistics{
-				AutoSketchBreakAt: &t,
-			})
-			taskLogisticNeedMod.AutoSketchBreakAt = &t
-			fmt.Println("已添加图片初稿违约自动处理时间")
-		}
-
-		// 判断是否超时违约
-		if taskLogisticNeedMod.TaskID != "" && taskLogisticNeedMod.AutoSketchBreakAt.Sub(time.Now()) <= 0 {
-			// 超时违约处理
-			db5 := GetReadDB(context.Background())
-			err1 := db5.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
-				TaskID: taskLogisticNeedMod.TaskID, ProjectID: TaskIdToProjectId[taskNeedModId], BreakType: 2, BreakAt: time.Now(), DefaultStatus: 1}).Error
-			if err1 != nil {
-				return err1
-			}
-			taskInfo := gorm_model.YoungeeTaskInfo{}
-			dbt := GetReadDB(context.Background())
-			err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskLogisticNeedMod.TaskID).Find(&taskInfo).Error
-			if err2 != nil {
-				return err2
-			}
-			settleAmount := taskInfo.TaskReward * (1.0 - float64(taskInfo.LinkBreakRate+taskInfo.DataBreakRate+sketchDefaultRate+taskInfo.ScriptBreakRate)/100)
-			if settleAmount <= 0 {
-				settleAmount = 0.0
-			}
-			realPayment := taskInfo.AllPayment * (1.0 - float64(sketchErrRate)/100)
-			if realPayment <= 0 {
-				realPayment = 0.0
-			}
-			db8 := GetReadDB(context.Background())
-			db8.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskLogisticNeedMod.TaskID).Updates(
-				map[string]interface{}{
-					"cur_default_type":  3,
-					"sketch_break_rate": sketchDefaultRate,
-					"settle_amount":     settleAmount,
-					"err_break_rate":    sketchErrRate,
-					"real_payment":      realPayment,
-				})
-
-			err = CreateTaskLog(context.Background(), taskLogisticNeedMod.TaskID, "初稿逾期")
-			if err != nil {
-				logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
-			}
-			err = CreateMessageByTaskId(context.Background(), 22, 4, taskLogisticNeedMod.TaskID)
-			if err != nil {
-				logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
-			}
-			fmt.Println("已创建图文类型的初稿违约记录")
-		}
-	}
-	// 判断应修改后上传初稿的任务
-	for _, submitTaskNeedModId := range submitTaskNeedModIds {
-		// 获取 autoTaskId 及其对应的限制时间
-		db2 := GetReadDB(context.Background())
-		var DraftDefaultInMv int32
-		db2.Model(&gorm_model.InfoAutoTask{}).Select("draft_default_in_mv").Where("auto_task_id = ?", projectIdToAutoTaskIdMap[TaskIdToProjectId[submitTaskNeedModId]]).First(&DraftDefaultInMv)
-		dd, _ := time.ParseDuration(conv.MustString(DraftDefaultInMv, "") + "h")
-
-		// 查询违约扣款比例
-		autoDefaultHandle := gorm_model.InfoAutoDefaultHandle{}
-		db6 := GetReadDB(context.Background())
-		db6.Model(gorm_model.InfoAutoDefaultHandle{}).Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[TaskIdToProjectId[submitTaskNeedModId]]).Find(&autoDefaultHandle)
-
-		var sketchDefaultRate int
-		var sketchErrRate int
-		if taskIdToFeeFormMap[submitTaskNeedModId] == 1 {
-			sketchDefaultRate = autoDefaultHandle.SketchReplaceTimeOut
-			sketchErrRate = autoDefaultHandle.SketchReplaceNotUpload
-			// db6 := GetReadDB(context.Background())
-			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("sketch_replace_time_out", "sketch_replace_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[TaskIdToProjectId[submitTaskNeedModId]]).Find(&sketchDefaultRate, &sketchErrRate)
-		} else {
-			sketchDefaultRate = autoDefaultHandle.SketchOtherTimeOut
-			sketchErrRate = autoDefaultHandle.SketchOtherNotUpload
-			// db6 := GetReadDB(context.Background())
-			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("sketch_other_time_out", "sketch_other_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[TaskIdToProjectId[submitTaskNeedModId]]).Find(&sketchDefaultRate, &sketchErrRate)
-		}
-		//	添加初稿违约自动处理时间
-		db1 := GetReadDB(context.Background())
-		var taskSketchInfo gorm_model.YounggeeSketchInfo
-		db1.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id = ? and is_review = 1", submitTaskNeedModId).Order("reject_at desc").First(&taskSketchInfo)
-		if taskSketchInfo.AutoSketchBreakAt.IsZero() {
-			err4 := db1.Where("task_id = ?", submitTaskNeedModId).Updates(&gorm_model.YounggeeSketchInfo{AutoSketchBreakAt: taskSketchInfo.RejectAt.Add(dd)}).Error
-			if err4 != nil {
-				return err4
-			}
-			taskSketchInfo.AutoSketchBreakAt = taskSketchInfo.RejectAt.Add(dd)
-			fmt.Println("已添加图文形式的初稿违约自动处理时间")
-		}
-
-		// 判断是否违约
-		if taskSketchInfo.TaskID != "" && taskSketchInfo.AutoSketchBreakAt.Sub(time.Now()) <= 0 {
-			db4 := GetReadDB(context.Background())
-			err1 := db4.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
-				TaskID: submitTaskNeedModId, ProjectID: TaskIdToProjectId[submitTaskNeedModId], BreakType: 2, BreakAt: time.Now(), DefaultStatus: 1}).Error
-			if err1 != nil {
-				return err1
-			}
-			taskInfo := gorm_model.YoungeeTaskInfo{}
-			dbt := GetReadDB(context.Background())
-			err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitTaskNeedModId).Find(&taskInfo).Error
-			if err2 != nil {
-				return err2
-			}
-			settleAmount := taskInfo.TaskReward * (1.0 - float64(sketchDefaultRate+taskInfo.DataBreakRate+taskInfo.LinkBreakRate+taskInfo.ScriptBreakRate)/100)
-			if settleAmount <= 0 {
-				settleAmount = 0.
-			}
-			realPayment := taskInfo.AllPayment * (1.0 - float64(sketchErrRate)/100)
-			if realPayment <= 0 {
-				realPayment = 0.0
-			}
-			db3 := GetReadDB(context.Background())
-			err2 = db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitTaskNeedModId).Updates(
-				map[string]interface{}{
-					"cur_default_type":  3,
-					"sketch_break_rate": sketchDefaultRate,
-					"settle_amount":     settleAmount,
-					"err_break_rate":    sketchErrRate,
-					"real_payment":      realPayment,
-				}).Error
-			if err2 != nil {
-				return err2
-			}
-			err = CreateTaskLog(context.Background(), submitTaskNeedModId, "初稿逾期")
-			if err != nil {
-				logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
-			}
-			err = CreateMessageByTaskId(context.Background(), 22, 4, submitTaskNeedModId)
-			if err != nil {
-				logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
-			}
-			fmt.Println("创建已提交初稿的图文类型的初稿违约记录")
-		}
-	}
-	return nil
-}
-
-// GetAutoDraftDefaultInMvTask 视频-初稿超时违约判断
-func GetAutoDraftDefaultInMvTask() error {
-	db := GetReadDB(context.Background())
-	var projectInfos []*gorm_model.ProjectInfo
-	err := db.Model(gorm_model.ProjectInfo{}).Where("project_type = ? AND content_type = ? ", 1, 2).Find(&projectInfos).Error
-	if err != nil {
-		return err
-	}
-	var projectIds []string
-	// 任务id 对 项目id 的map
-	taskIdToProjectIdMap := map[string]string{}
-	// 项目id 对 定时任务id 的map
-	projectIdToAutoTaskIdMap := map[string]int{}
-	// 项目 id 对 违约定时任务 id 的 map
-	projectIdToAutoDefaultIdMap := map[string]int{}
-	// taskId 对 稿费形式的 map
-	taskIdToFeeFormMap := make(map[string]int)
-	var videoTaskIds []string
-	// 构造map及list
-	for _, projectInfo := range projectInfos {
-		projectIds = append(projectIds, projectInfo.ProjectID)
-		projectIdToAutoTaskIdMap[projectInfo.ProjectID] = int(projectInfo.AutoTaskID)
-		projectIdToAutoDefaultIdMap[projectInfo.ProjectID] = int(projectInfo.AutoDefaultID)
-
-		var videoTaskInfos []*gorm_model.YoungeeTaskInfo
-		db1 := GetReadDB(context.Background())
-		db1.Model(&gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_status = ? AND task_stage = ? AND cur_default_type = ? AND logistics_status = 3",
-			projectInfo.ProjectID, 2, 9, 0).Find(&videoTaskInfos)
-		for _, videoTaskInfo := range videoTaskInfos {
-			taskIdToProjectIdMap[videoTaskInfo.TaskId] = projectInfo.ProjectID
-			taskIdToFeeFormMap[videoTaskInfo.TaskId] = videoTaskInfo.FeeForm
-			videoTaskIds = append(videoTaskIds, videoTaskInfo.TaskId)
-		}
-	}
-
-	// 首次提交初稿的任务记录id
-	var videoTaskNeedModIds []string
-	// 已提交初稿的任务记录id
-	var submitVideoTaskNeedModIds []string
-	for _, videoTaskId := range videoTaskIds {
-		var taskInfo gorm_model.YoungeeTaskInfo
-		db3 := GetReadDB(context.Background())
-		// 保存所有初稿上传状态为 1  且任务阶段为9 的任务记录的id
-		db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", videoTaskId).First(&taskInfo)
-		if taskInfo.SketchStatus == 1 && taskInfo.TaskStage == 9 {
-			videoTaskNeedModIds = append(videoTaskNeedModIds, videoTaskId)
-		}
-		// 保存所有初稿上传状态为 3  且任务阶段为9 的任务记录的id
-		if taskInfo.SketchStatus == 3 && taskInfo.TaskStage == 9 {
-			submitVideoTaskNeedModIds = append(submitVideoTaskNeedModIds, videoTaskId)
-		}
-	}
-	// 判断应首次提交初稿的任务
-	for _, videoTaskNeedModId := range videoTaskNeedModIds {
-		db2 := GetReadDB(context.Background())
-		var DraftDefaultInMv int32
-		db2.Model(&gorm_model.InfoAutoTask{}).Select("draft_default_in_mv").Where("auto_task_id = ?", projectIdToAutoTaskIdMap[taskIdToProjectIdMap[videoTaskNeedModId]]).First(&DraftDefaultInMv)
-		dd, _ := time.ParseDuration(conv.MustString(DraftDefaultInMv, "") + "h")
-
-		autoDefaultHandle := gorm_model.InfoAutoDefaultHandle{}
-		db6 := GetReadDB(context.Background())
-		db6.Model(gorm_model.InfoAutoDefaultHandle{}).Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[videoTaskNeedModId]]).Find(&autoDefaultHandle)
-
-		var sketchDefaultRate int
-		var sketchErrRate int
-		if taskIdToFeeFormMap[videoTaskNeedModId] == 1 {
-			sketchDefaultRate = autoDefaultHandle.SketchReplaceTimeOut
-			sketchErrRate = autoDefaultHandle.SketchReplaceNotUpload
-			// db6 := GetReadDB(context.Background())
-			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("sketch_replace_time_out", "sketch_replace_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[videoTaskNeedModId]]).Find(&sketchDefaultRate, &sketchErrRate)
-		} else {
-			sketchDefaultRate = autoDefaultHandle.SketchOtherTimeOut
-			sketchErrRate = autoDefaultHandle.SketchOtherNotUpload
-			// db6 := GetReadDB(context.Background())
-			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("sketch_other_time_out", "sketch_other_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[videoTaskNeedModId]]).Find(&sketchDefaultRate, &sketchErrRate)
-		}
-		db1 := GetReadDB(context.Background())
-		var taskScriptInfo gorm_model.YounggeeScriptInfo
-		db1.Model(gorm_model.YounggeeScriptInfo{}).Where("task_id = ? AND is_ok = ?", videoTaskNeedModId, 1).Find(&taskScriptInfo)
-		if taskScriptInfo.AutoSketchBreakAt.IsZero() {
-			db1.Where("task_id = ?", videoTaskNeedModId).Updates(&gorm_model.YounggeeScriptInfo{AutoSketchBreakAt: taskScriptInfo.AgreeAt.Add(dd)})
-			taskScriptInfo.AutoSketchBreakAt = taskScriptInfo.AgreeAt.Add(dd)
-			fmt.Println("已添加视频形式的初稿违约自动处理时间")
-		}
-
-		if taskScriptInfo.TaskID != "" && taskScriptInfo.AutoSketchBreakAt.Sub(time.Now()) <= 0 {
-			db4 := GetReadDB(context.Background())
-			err1 := db4.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
-				TaskID: videoTaskNeedModId, ProjectID: taskIdToProjectIdMap[videoTaskNeedModId], BreakType: 2, BreakAt: time.Now(), DefaultStatus: 1}).Error
-			if err1 != nil {
-				return err1
-			}
-			taskInfo := gorm_model.YoungeeTaskInfo{}
-			dbt := GetReadDB(context.Background())
-			err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", videoTaskNeedModId).Find(&taskInfo).Error
-			if err2 != nil {
-				return err2
-			}
-			settleAmount := taskInfo.TaskReward * (1.0 - float64(taskInfo.LinkBreakRate+taskInfo.DataBreakRate+sketchDefaultRate+taskInfo.ScriptBreakRate)/100)
-			if settleAmount <= 0 {
-				settleAmount = 0.0
-			}
-			realPayment := taskInfo.AllPayment * (1.0 - float64(sketchErrRate)/100)
-			if realPayment <= 0 {
-				realPayment = 0.0
-			}
-			db3 := GetReadDB(context.Background())
-			err2 = db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", videoTaskNeedModId).Updates(
-				map[string]interface{}{
-					"cur_default_type":  3,
-					"sketch_break_rate": sketchDefaultRate,
-					"settle_amount":     settleAmount,
-					"err_break_rate":    sketchErrRate,
-					"real_payment":      realPayment,
-				}).Error
-			if err2 != nil {
-				return err2
-			}
-			err = CreateTaskLog(context.Background(), videoTaskNeedModId, "初稿逾期")
-			if err != nil {
-				logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
-			}
-			err = CreateMessageByTaskId(context.Background(), 22, 4, videoTaskNeedModId)
-			if err != nil {
-				logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
-			}
-			fmt.Println("已创建视频类型的初稿违约记录")
-		}
-	}
-
-	// 判断应修改后上传初稿的任务
-	for _, submitVideoTaskNeedModId := range submitVideoTaskNeedModIds {
-		db2 := GetReadDB(context.Background())
-		var DraftDefaultInMv int32
-		db2.Model(&gorm_model.InfoAutoTask{}).Select("draft_default_in_mv").Where("auto_task_id = ?", projectIdToAutoTaskIdMap[taskIdToProjectIdMap[submitVideoTaskNeedModId]]).First(&DraftDefaultInMv)
-		dd, _ := time.ParseDuration(conv.MustString(DraftDefaultInMv, "") + "h")
-
-		autoDefaultHandle := gorm_model.InfoAutoDefaultHandle{}
-		db6 := GetReadDB(context.Background())
-		db6.Model(gorm_model.InfoAutoDefaultHandle{}).Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[submitVideoTaskNeedModId]]).Find(&autoDefaultHandle)
-
-		var sketchDefaultRate int
-		var sketchErrRate int
-		if taskIdToFeeFormMap[submitVideoTaskNeedModId] == 1 {
-			sketchDefaultRate = autoDefaultHandle.SketchReplaceTimeOut
-			sketchErrRate = autoDefaultHandle.SketchReplaceNotUpload
-			// db6 := GetReadDB(context.Background())
-			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("sketch_replace_time_out", "sketch_replace_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[submitVideoTaskNeedModId]]).Find(&sketchDefaultRate, &sketchErrRate)
-		} else {
-			sketchDefaultRate = autoDefaultHandle.SketchOtherTimeOut
-			sketchErrRate = autoDefaultHandle.SketchOtherNotUpload
-			// db6 := GetReadDB(context.Background())
-			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("sketch_other_time_out", "sketch_other_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[submitVideoTaskNeedModId]]).Find(&sketchDefaultRate, &sketchErrRate)
-		}
-		db1 := GetReadDB(context.Background())
-		var taskSketchInfo gorm_model.YounggeeSketchInfo
-		db1.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id = ? and is_review = 1", submitVideoTaskNeedModId).Order("reject_at desc").First(&taskSketchInfo)
-		if taskSketchInfo.AutoSketchBreakAt.IsZero() {
-			err4 := db1.Where("task_id = ?", submitVideoTaskNeedModId).Updates(&gorm_model.YounggeeSketchInfo{AutoSketchBreakAt: taskSketchInfo.RejectAt.Add(dd)}).Error
-			if err4 != nil {
-				return err4
-			}
-			taskSketchInfo.AutoSketchBreakAt = taskSketchInfo.RejectAt.Add(dd)
-			fmt.Println("已添加视频形式的初稿违约自动处理时间")
-		}
-		if taskSketchInfo.TaskID != "" && taskSketchInfo.AutoSketchBreakAt.Sub(time.Now()) <= 0 {
-			db4 := GetReadDB(context.Background())
-			err1 := db4.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
-				TaskID: submitVideoTaskNeedModId, ProjectID: taskIdToProjectIdMap[submitVideoTaskNeedModId], BreakType: 2, BreakAt: time.Now(), DefaultStatus: 1}).Error
-			if err1 != nil {
-				return err1
-			}
-			taskInfo := gorm_model.YoungeeTaskInfo{}
-			dbt := GetReadDB(context.Background())
-			err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitVideoTaskNeedModId).Find(&taskInfo).Error
-			if err2 != nil {
-				return err2
-			}
-			settleAmount := taskInfo.TaskReward * (1.0 - float64(taskInfo.LinkBreakRate+taskInfo.DataBreakRate+sketchDefaultRate+taskInfo.ScriptBreakRate)/100)
-			if settleAmount <= 0 {
-				settleAmount = 0.0
-			}
-			realPayment := taskInfo.AllPayment * (1.0 - float64(sketchErrRate)/100)
-			if realPayment <= 0 {
-				realPayment = 0.0
-			}
-			db3 := GetReadDB(context.Background())
-			err2 = db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitVideoTaskNeedModId).Updates(
-				map[string]interface{}{
-					"cur_default_type":  3,
-					"sketch_break_rate": sketchDefaultRate,
-					"settle_amount":     settleAmount,
-					"err_break_rate":    sketchErrRate,
-					"real_payment":      realPayment,
-				}).Error
-			if err2 != nil {
-				return err2
-			}
-			err = CreateTaskLog(context.Background(), submitVideoTaskNeedModId, "初稿逾期")
-			if err != nil {
-				logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
-			}
-			err = CreateMessageByTaskId(context.Background(), 22, 4, submitVideoTaskNeedModId)
-			if err != nil {
-				logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
-			}
-			fmt.Println("创建已提交初稿的视频类型的初稿违约记录")
-		}
-	}
-	return nil
-}
-
-// GetAutoScriptDefaultTask 脚本超时违约判断
-func GetAutoScriptDefaultTask() error {
-	db := GetReadDB(context.Background())
-	var projectInfos []*gorm_model.ProjectInfo
-	err := db.Model(gorm_model.ProjectInfo{}).Where("project_type = ? AND content_type = ?", 1, 2).Find(&projectInfos).Error
-	if err != nil {
-		return err
-	}
-	var projectIds []string
-	// 任务id 对 项目id 的map
-	taskIdToProjectIdMap := map[string]string{}
-	// 项目id 对 定时任务id 的map
-	projectIdToAutoTaskIdMap := map[string]int{}
-	// 项目id 对 违约定时任务id 的map
-	projectIdToAutoDefaultIdMap := map[string]int{}
-	// taskId 对 稿费形式的 map
-	taskIdToFeeFormMap := make(map[string]int)
-	// 首次提交脚本的任务记录id
-	var videoTaskNeedModIds []string
-	// 已提交脚本的任务记录id
-	var submitVideoTaskNeedModIds []string
-	var videoTaskIds []string
-	// 构造map及list
-	for _, projectInfo := range projectInfos {
-		projectIds = append(projectIds, projectInfo.ProjectID)
-		projectIdToAutoTaskIdMap[projectInfo.ProjectID] = int(projectInfo.AutoTaskID)
-		projectIdToAutoDefaultIdMap[projectInfo.ProjectID] = int(projectInfo.AutoDefaultID)
-
-		var videoTaskInfos []*gorm_model.YoungeeTaskInfo
-		db1 := GetReadDB(context.Background())
-		db1.Model(&gorm_model.YoungeeTaskInfo{}).
-			Where("project_id = ?  AND task_status = ? AND task_stage = ? AND cur_default_type = ? AND logistics_status = 3", projectInfo.ProjectID, 2, 7, 0).Find(&videoTaskInfos)
-		for _, videoTaskInfo := range videoTaskInfos {
-			taskIdToProjectIdMap[videoTaskInfo.TaskId] = projectInfo.ProjectID
-			taskIdToFeeFormMap[videoTaskInfo.TaskId] = videoTaskInfo.FeeForm
-			videoTaskIds = append(videoTaskIds, videoTaskInfo.TaskId)
-		}
-	}
-	for _, videoTaskId := range videoTaskIds {
-		var taskInfo gorm_model.YoungeeTaskInfo
-		db3 := GetReadDB(context.Background())
-		// 保存所有脚本上传状态为 1  且任务状态为8 的任务记录的id
-		db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", videoTaskId).First(&taskInfo)
-		if taskInfo.ScriptStatus == 1 && taskInfo.TaskStage == 7 {
-			videoTaskNeedModIds = append(videoTaskNeedModIds, videoTaskId)
-		}
-		// 保存所有脚本上传状态为 3  且任务状态为8 的任务记录的id
-		if taskInfo.ScriptStatus == 3 && taskInfo.TaskStage == 7 {
-			submitVideoTaskNeedModIds = append(submitVideoTaskNeedModIds, videoTaskId)
-		}
-	}
-	// 判断应首次上传脚本的任务
-	for _, videoTaskNeedModId := range videoTaskNeedModIds {
-		db2 := GetReadDB(context.Background())
-		var ScriptDefault int32
-		db2.Model(&gorm_model.InfoAutoTask{}).Select("script_default").Where("auto_task_id = ?", projectIdToAutoTaskIdMap[taskIdToProjectIdMap[videoTaskNeedModId]]).First(&ScriptDefault)
-		dd, _ := time.ParseDuration(conv.MustString(ScriptDefault, "") + "h")
-		db1 := GetReadDB(context.Background())
-		var taskLogisticInfo gorm_model.YoungeeTaskLogistics
-		db1.Model(gorm_model.YoungeeTaskLogistics{}).Where("task_id = ?", videoTaskNeedModId).Find(&taskLogisticInfo)
-
-		autoDefaultHandle := gorm_model.InfoAutoDefaultHandle{}
-		db6 := GetReadDB(context.Background())
-		db6.Model(gorm_model.InfoAutoDefaultHandle{}).Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[videoTaskNeedModId]]).Find(&autoDefaultHandle)
-		//fmt.Printf("autoDefaultHandle%+v\n", autoDefaultHandle)
-		var scriptDefaultRate int
-		var scriptErrRate int
-		if taskIdToFeeFormMap[videoTaskNeedModId] == 1 {
-			scriptDefaultRate = autoDefaultHandle.ScriptReplaceTimeOut
-			scriptErrRate = autoDefaultHandle.ScriptReplaceNotUpload
-			// db6 := GetReadDB(context.Background())
-			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("script_replace_time_out", "script_replace_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[videoTaskNeedModId]]).Find(&scriptDefaultRate, &scriptErrRate)
-		} else {
-			scriptDefaultRate = autoDefaultHandle.ScriptOtherTimeOut
-			scriptErrRate = autoDefaultHandle.ScriptOtherNotUpload
-			// db6 := GetReadDB(context.Background())
-			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("script_other_time_out", "script_other_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[videoTaskNeedModId]]).Find(&scriptDefaultRate, &scriptErrRate)
-		}
-		if taskLogisticInfo.AutoScriptBreakAt == nil || taskLogisticInfo.AutoScriptBreakAt.IsZero() {
-			t := taskLogisticInfo.SignedTime.Add(dd)
-			db1.Where("task_id = ?", videoTaskNeedModId).Updates(&gorm_model.YoungeeTaskLogistics{AutoScriptBreakAt: &t})
-			fmt.Println("已添加视频形式的脚本违约自动处理时间")
-			if taskLogisticInfo.Status == 1 && taskLogisticInfo.TaskID != "" && taskLogisticInfo.SignedTime.Add(dd).Sub(time.Now()) <= 0 {
-				db4 := GetReadDB(context.Background())
-				err1 := db4.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
-					TaskID: videoTaskNeedModId, ProjectID: taskIdToProjectIdMap[videoTaskNeedModId], BreakType: 1, BreakAt: time.Now(), DefaultStatus: 1}).Error
-				if err1 != nil {
-					return err1
-				}
-				taskInfo := gorm_model.YoungeeTaskInfo{}
-				dbt := GetReadDB(context.Background())
-				err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", videoTaskNeedModId).Find(&taskInfo).Error
-				if err2 != nil {
-					return err2
-				}
-				settleAmount := taskInfo.TaskReward * (1.0 - float64(taskInfo.SketchBreakRate+taskInfo.DataBreakRate+taskInfo.LinkBreakRate+scriptDefaultRate)/100)
-				if settleAmount <= 0 {
-					settleAmount = 0.0
-				}
-				realPayment := taskInfo.AllPayment * (1.0 - float64(scriptErrRate)/100)
-				if realPayment <= 0 {
-					realPayment = 0.0
-				}
-				db3 := GetReadDB(context.Background())
-				err2 = db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", videoTaskNeedModId).Updates(
-					map[string]interface{}{
-						"cur_default_type":  1,
-						"sketch_break_rate": scriptDefaultRate,
-						"settle_amount":     settleAmount,
-						"err_break_rate":    scriptErrRate,
-						"real_payment":      realPayment,
-					}).Error
-				if err2 != nil {
-					return err2
-				}
-				err = CreateTaskLog(context.Background(), videoTaskNeedModId, "脚本逾期")
-				if err != nil {
-					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
-				}
-				err = CreateMessageByTaskId(context.Background(), 21, 4, videoTaskNeedModId)
-				if err != nil {
-					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
-				}
-				fmt.Println("创建时已违约则创建视频类型的脚本违约记录")
-			}
-		} else {
-			if taskLogisticInfo.Status == 1 && taskLogisticInfo.TaskID != "" && taskLogisticInfo.AutoScriptBreakAt.Sub(time.Now()) <= 0 {
-				db4 := GetReadDB(context.Background())
-				err1 := db4.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
-					TaskID: videoTaskNeedModId, ProjectID: taskIdToProjectIdMap[videoTaskNeedModId], BreakType: 1, BreakAt: time.Now(), DefaultStatus: 1}).Error
-				if err1 != nil {
-					return err1
-				}
-				taskInfo := gorm_model.YoungeeTaskInfo{}
-				dbt := GetReadDB(context.Background())
-				err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", videoTaskNeedModId).Find(&taskInfo).Error
-				if err2 != nil {
-					return err2
-				}
-				settleAmount := taskInfo.TaskReward * (1.0 - float64(taskInfo.SketchBreakRate+taskInfo.DataBreakRate+taskInfo.LinkBreakRate+scriptDefaultRate)/100)
-				if settleAmount <= 0 {
-					settleAmount = 0.0
-				}
-				realPayment := taskInfo.AllPayment * (1.0 - float64(scriptErrRate)/100)
-				if realPayment <= 0 {
-					realPayment = 0.0
-				}
-				fmt.Printf("脚本未上传扣款率: %+v\nrealPayment:%+v\n", scriptErrRate, realPayment)
-				db3 := GetReadDB(context.Background())
-				err2 = db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", videoTaskNeedModId).Updates(
-					map[string]interface{}{
-						"cur_default_type":  1,
-						"script_break_rate": scriptDefaultRate,
-						"settle_amount":     settleAmount,
-						"err_break_rate":    scriptErrRate,
-						"real_payment":      realPayment,
-					}).Error
-				if err2 != nil {
-					return err2
-				}
-				err = CreateTaskLog(context.Background(), videoTaskNeedModId, "脚本逾期")
-				if err != nil {
-					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
-				}
-				err = CreateMessageByTaskId(context.Background(), 21, 4, videoTaskNeedModId)
-				if err != nil {
-					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
-				}
-				fmt.Println("已创建视频类型的脚本违约记录")
-			}
-		}
-	}
-	// 根据最近一次拒绝时间判断当前是否违约
-	for _, submitVideoTaskNeedModId := range submitVideoTaskNeedModIds {
-		db2 := GetReadDB(context.Background())
-		var ScriptDefault int32
-		db2.Model(&gorm_model.InfoAutoTask{}).Select("script_default").Where("auto_task_id = ?", projectIdToAutoTaskIdMap[taskIdToProjectIdMap[submitVideoTaskNeedModId]]).First(&ScriptDefault)
-		dd, _ := time.ParseDuration(conv.MustString(ScriptDefault, "") + "h")
-		db1 := GetReadDB(context.Background())
-		var taskScriptInfo gorm_model.YounggeeScriptInfo
-		db1.Model(gorm_model.YounggeeScriptInfo{}).Where("task_id = ? and is_review = 1", submitVideoTaskNeedModId).Order("reject_at desc").First(&taskScriptInfo)
-
-		autoDefaultHandle := gorm_model.InfoAutoDefaultHandle{}
-		db6 := GetReadDB(context.Background())
-		db6.Model(gorm_model.InfoAutoDefaultHandle{}).Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[submitVideoTaskNeedModId]]).Find(&autoDefaultHandle)
-
-		var scriptDefaultRate int
-		var scriptErrRate int
-		if taskIdToFeeFormMap[submitVideoTaskNeedModId] == 1 {
-			scriptDefaultRate = autoDefaultHandle.ScriptReplaceTimeOut
-			scriptErrRate = autoDefaultHandle.ScriptReplaceNotUpload
-			// db6 := GetReadDB(context.Background())
-			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("script_replace_time_out", "script_replace_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[submitVideoTaskNeedModId]]).Find(&scriptDefaultRate, &scriptErrRate)
-		} else {
-			scriptDefaultRate = autoDefaultHandle.ScriptOtherTimeOut
-			scriptErrRate = autoDefaultHandle.ScriptOtherNotUpload
-			// db6 := GetReadDB(context.Background())
-			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("script_other_time_out", "script_other_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[submitVideoTaskNeedModId]]).Find(&scriptDefaultRate, &scriptErrRate)
-		}
-		if taskScriptInfo.AutoScriptBreakAt.IsZero() {
-			err4 := db1.Where("task_id = ?", submitVideoTaskNeedModId).Updates(&gorm_model.YounggeeScriptInfo{AutoScriptBreakAt: taskScriptInfo.RejectAt.Add(dd)}).Error
-			if err4 != nil {
-				return err4
-			}
-			fmt.Println("已添加视频形式的脚本违约自动处理时间")
-			if taskScriptInfo.TaskID != "" && taskScriptInfo.RejectAt.Add(dd).Sub(time.Now()) <= 0 {
-				db4 := GetReadDB(context.Background())
-				err1 := db4.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
-					TaskID: submitVideoTaskNeedModId, ProjectID: taskIdToProjectIdMap[submitVideoTaskNeedModId], BreakType: 1, BreakAt: time.Now(), DefaultStatus: 1}).Error
-				if err1 != nil {
-					return err1
-				}
-				taskInfo := gorm_model.YoungeeTaskInfo{}
-				dbt := GetReadDB(context.Background())
-				err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitVideoTaskNeedModId).Find(&taskInfo).Error
-				if err2 != nil {
-					return err2
-				}
-				settleAmount := taskInfo.TaskReward * (1.0 - float64(taskInfo.SketchBreakRate+taskInfo.DataBreakRate+taskInfo.LinkBreakRate+scriptDefaultRate)/100)
-				if settleAmount <= 0 {
-					settleAmount = 0.0
-				}
-				realPayment := taskInfo.AllPayment * (1.0 - float64(scriptErrRate)/100)
-				if realPayment <= 0 {
-					realPayment = 0.0
-				}
-				db3 := GetReadDB(context.Background())
-				err3 := db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitVideoTaskNeedModId).Updates(
-					map[string]interface{}{
-						"cur_default_type":  1,
-						"script_break_rate": scriptDefaultRate,
-						"settle_amount":     settleAmount,
-						"err_break_rate":    scriptErrRate,
-						"real_payment":      realPayment,
-					}).Error
-				if err3 != nil {
-					return err3
-				}
-				err = CreateTaskLog(context.Background(), submitVideoTaskNeedModId, "脚本逾期")
-				if err != nil {
-					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
-				}
-				err = CreateMessageByTaskId(context.Background(), 21, 4, submitVideoTaskNeedModId)
-				if err != nil {
-					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
-				}
-				fmt.Println("创建时已违约则创建已提交脚本的视频类型的脚本违约记录")
-			}
-		} else {
-			if taskScriptInfo.TaskID != "" && taskScriptInfo.AutoScriptBreakAt.Sub(time.Now()) <= 0 {
-				db4 := GetReadDB(context.Background())
-				err1 := db4.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
-					TaskID: submitVideoTaskNeedModId, ProjectID: taskIdToProjectIdMap[submitVideoTaskNeedModId], BreakType: 1, BreakAt: time.Now(), DefaultStatus: 1}).Error
-				if err1 != nil {
-					return err1
-				}
-				taskInfo := gorm_model.YoungeeTaskInfo{}
-				dbt := GetReadDB(context.Background())
-				err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitVideoTaskNeedModId).Find(&taskInfo).Error
-				if err2 != nil {
-					return err2
-				}
-				settleAmount := taskInfo.TaskReward * (1.0 - float64(taskInfo.SketchBreakRate+taskInfo.DataBreakRate+taskInfo.LinkBreakRate+scriptDefaultRate)/100)
-				if settleAmount <= 0 {
-					settleAmount = 0.0
-				}
-				realPayment := taskInfo.AllPayment * (1.0 - float64(scriptErrRate)/100)
-				if realPayment <= 0 {
-					realPayment = 0.0
-				}
-				db3 := GetReadDB(context.Background())
-				err3 := db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitVideoTaskNeedModId).Updates(
-					map[string]interface{}{
-						"cur_default_type":  1,
-						"sketch_break_rate": scriptDefaultRate,
-						"settle_amount":     settleAmount,
-						"err_break_rate":    scriptErrRate,
-						"real_payment":      realPayment,
-					}).Error
-				if err3 != nil {
-					return err3
-				}
-				err = CreateTaskLog(context.Background(), submitVideoTaskNeedModId, "脚本逾期")
-				if err != nil {
-					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
-				}
-				err = CreateMessageByTaskId(context.Background(), 21, 4, submitVideoTaskNeedModId)
-				if err != nil {
-					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
-				}
-				fmt.Println("创建已提交脚本的视频类型的脚本违约记录")
-			}
-		}
-	}
-	return nil
-}
-
-// GetAutoLinkBreachTask 链接超时违约判断
-func GetAutoLinkBreachTask() error {
-	db := GetReadDB(context.Background())
-	var projectInfos []*gorm_model.ProjectInfo
-	err := db.Model(gorm_model.ProjectInfo{}).Where("project_type = ?", 1).Find(&projectInfos).Error
-	if err != nil {
-		return err
-	}
-	var projectIds []string
-	// 任务id 对 项目id 的map
-	taskIdToProjectIdMap := map[string]string{}
-	// 项目id 对 定时任务id 的map
-	projectIdToAutoTaskIdMap := map[string]int{}
-	// 项目id 对 违约定时任务id 的map
-	projectIdToAutoDefaultIdMap := map[string]int{}
-	var taskIds []string
-	// taskId 对 稿费形式的 map
-	taskIdToFeeFormMap := make(map[string]int)
-	for _, projectInfo := range projectInfos {
-		projectIds = append(projectIds, projectInfo.ProjectID)
-		projectIdToAutoTaskIdMap[projectInfo.ProjectID] = int(projectInfo.AutoTaskID)
-		projectIdToAutoDefaultIdMap[projectInfo.ProjectID] = int(projectInfo.AutoDefaultID)
-
-		var taskInfos []*gorm_model.YoungeeTaskInfo
-		db1 := GetReadDB(context.Background())
-		db1.Model(&gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_status = ? AND task_stage = ? AND cur_default_type = ? ", projectInfo.ProjectID, 2, 11, 0).Find(&taskInfos)
-		for _, taskInfo := range taskInfos {
-			taskIdToProjectIdMap[taskInfo.TaskId] = projectInfo.ProjectID
-			taskIds = append(taskIds, taskInfo.TaskId)
-			taskIdToFeeFormMap[taskInfo.TaskId] = taskInfo.FeeForm
-		}
-	}
-	// 首次提交链接的任务记录id
-	var taskNeedModIds []string
-	// 已提交链接的任务记录id
-	var submitTaskNeedModIds []string
-	for _, taskId := range taskIds {
-		var taskInfo gorm_model.YoungeeTaskInfo
-		db3 := GetReadDB(context.Background())
-		// 保存所有链接上传状态为 1  且任务状态为12 的任务记录的id
-		db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).First(&taskInfo)
-		if taskInfo.LinkStatus == 1 && taskInfo.TaskStage == 11 {
-			taskNeedModIds = append(taskNeedModIds, taskId)
-		}
-		// 保存所有链接上传状态为 3  且任务状态为12 的任务记录的id
-		if taskInfo.LinkStatus == 3 && taskInfo.TaskStage == 11 {
-			submitTaskNeedModIds = append(submitTaskNeedModIds, taskId)
-		}
-	}
-	for _, taskNeedModId := range taskNeedModIds {
-		db2 := GetReadDB(context.Background())
-		var linkBreach int32
-		db2.Model(&gorm_model.InfoAutoTask{}).Select("link_breach").Where("auto_task_id = ?", projectIdToAutoTaskIdMap[taskIdToProjectIdMap[taskNeedModId]]).First(&linkBreach)
-		dd, _ := time.ParseDuration(conv.MustString(linkBreach, "") + "h")
-
-		autoDefaultHandle := gorm_model.InfoAutoDefaultHandle{}
-		db6 := GetReadDB(context.Background())
-		db6.Model(gorm_model.InfoAutoDefaultHandle{}).Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[taskNeedModId]]).Find(&autoDefaultHandle)
-
-		var linkDefaultRate int
-		var linkErrRate int
-		if taskIdToFeeFormMap[taskNeedModId] == 1 {
-			linkDefaultRate = autoDefaultHandle.LinkReplaceTimeOut
-			linkErrRate = autoDefaultHandle.LinkReplaceNotUpload
-			// db6 := GetReadDB(context.Background())
-			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("link_replace_time_out", "link_replace_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[taskNeedModId]]).Find(&linkDefaultRate, &linkErrRate)
-		} else {
-			linkDefaultRate = autoDefaultHandle.LinkOtherTimeOut
-			linkErrRate = autoDefaultHandle.LinkOtherNotUpload
-			// db6 := GetReadDB(context.Background())
-			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("link_other_time_out", "link_other_not_uploadsg").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[taskNeedModId]]).Find(&linkDefaultRate, &linkErrRate)
-		}
-		db1 := GetReadDB(context.Background())
-		var taskSketchInfo gorm_model.YounggeeSketchInfo
-		db1.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id = ? AND is_ok = ?", taskNeedModId, 1).Find(&taskSketchInfo)
-		if taskSketchInfo.AutoLinkBreakAt.IsZero() {
-			db1.Where("task_id = ?", taskNeedModId).Updates(&gorm_model.YounggeeSketchInfo{AutoLinkBreakAt: taskSketchInfo.AgreeAt.Add(dd)})
-			fmt.Println("已添加链接违约自动处理时间")
-			if taskSketchInfo.TaskID != "" && taskSketchInfo.AgreeAt.Add(dd).Sub(time.Now()) <= 0 {
-				db4 := GetReadDB(context.Background())
-				err1 := db4.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
-					TaskID: taskNeedModId, ProjectID: taskIdToProjectIdMap[taskNeedModId], BreakType: 3, BreakAt: time.Now(), DefaultStatus: 1}).Error
-				if err1 != nil {
-					return err1
-				}
-				taskInfo := gorm_model.YoungeeTaskInfo{}
-				dbt := GetReadDB(context.Background())
-				err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskNeedModId).Find(&taskInfo).Error
-				if err2 != nil {
-					return err2
-				}
-				settleAmount := taskInfo.TaskReward * (1.0 - float64(linkDefaultRate+taskInfo.DataBreakRate+taskInfo.SketchBreakRate+taskInfo.ScriptBreakRate)/100)
-				if settleAmount <= 0 {
-					settleAmount = 0.0
-				}
-				realPayment := taskInfo.AllPayment * (1.0 - float64(linkErrRate)/100)
-				if realPayment <= 0 {
-					realPayment = 0.0
-				}
-				db3 := GetReadDB(context.Background())
-				err2 = db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskNeedModId).Updates(
-					map[string]interface{}{
-						"cur_default_type": 5,
-						"link_break_rate":  linkDefaultRate,
-						"settle_amount":    settleAmount,
-						"err_break_rate":   linkErrRate,
-						"real_payment":     realPayment,
-					}).Error
-				if err2 != nil {
-					return err2
-				}
-				err = CreateTaskLog(context.Background(), taskNeedModId, "链接逾期")
-				if err != nil {
-					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
-				}
-				err = CreateMessageByTaskId(context.Background(), 23, 4, taskNeedModId)
-				if err != nil {
-					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
-				}
-				fmt.Println("创建时已违约则创建链接违约记录")
-			}
-		} else {
-			if taskSketchInfo.TaskID != "" && taskSketchInfo.AutoLinkBreakAt.Sub(time.Now()) <= 0 {
-				db4 := GetReadDB(context.Background())
-				err1 := db4.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
-					TaskID: taskNeedModId, ProjectID: taskIdToProjectIdMap[taskNeedModId], BreakType: 3, BreakAt: time.Now(), DefaultStatus: 1}).Error
-				if err1 != nil {
-					return err1
-				}
-				taskInfo := gorm_model.YoungeeTaskInfo{}
-				dbt := GetReadDB(context.Background())
-				err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskNeedModId).Find(&taskInfo).Error
-				if err2 != nil {
-					return err2
-				}
-				settleAmount := taskInfo.TaskReward * (1.0 - float64(linkDefaultRate+taskInfo.DataBreakRate+taskInfo.SketchBreakRate+taskInfo.ScriptBreakRate)/100)
-				if settleAmount <= 0 {
-					settleAmount = 0.0
-				}
-				realPayment := taskInfo.AllPayment * (1.0 - float64(linkErrRate)/100)
-				if realPayment <= 0 {
-					realPayment = 0.0
-				}
-				db3 := GetReadDB(context.Background())
-				err2 = db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskNeedModId).Updates(
-					map[string]interface{}{
-						"cur_default_type": 5,
-						"link_break_rate":  linkDefaultRate,
-						"settle_amount":    settleAmount,
-						"err_break_rate":   linkErrRate,
-						"real_payment":     realPayment,
-					}).Error
-				if err2 != nil {
-					return err2
-				}
-				err = CreateTaskLog(context.Background(), taskNeedModId, "链接逾期")
-				if err != nil {
-					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
-				}
-				err = CreateMessageByTaskId(context.Background(), 23, 4, taskNeedModId)
-				if err != nil {
-					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
-				}
-				fmt.Println("已创建链接违约记录")
-			}
-		}
-	}
-	// 根据最近一次拒绝时间判断当前是否违约
-	for _, submitTaskNeedModId := range submitTaskNeedModIds {
-		db2 := GetReadDB(context.Background())
-		var LinkBreach int32
-		db2.Model(&gorm_model.InfoAutoTask{}).Select("link_breach").Where("auto_task_id = ?", projectIdToAutoTaskIdMap[taskIdToProjectIdMap[submitTaskNeedModId]]).First(&LinkBreach)
-		dd, _ := time.ParseDuration(conv.MustString(LinkBreach, "") + "h")
-
-		autoDefaultHandle := gorm_model.InfoAutoDefaultHandle{}
-		db6 := GetReadDB(context.Background())
-		db6.Model(gorm_model.InfoAutoDefaultHandle{}).Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[submitTaskNeedModId]]).Find(&autoDefaultHandle)
-
-		var linkDefaultRate int
-		var linkErrRate int
-		if taskIdToFeeFormMap[submitTaskNeedModId] == 1 {
-			linkDefaultRate = autoDefaultHandle.LinkReplaceTimeOut
-			linkErrRate = autoDefaultHandle.LinkReplaceNotUpload
-			// db6 := GetReadDB(context.Background())
-			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("link_replace_time_out", "link_replace_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[submitTaskNeedModId]]).Find(&linkDefaultRate, &linkErrRate)
-		} else {
-			linkDefaultRate = autoDefaultHandle.LinkOtherTimeOut
-			linkErrRate = autoDefaultHandle.LinkOtherNotUpload
-			// db6 := GetReadDB(context.Background())
-			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("link_other_time_out", "link_other_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[submitTaskNeedModId]]).Find(&linkDefaultRate, &linkErrRate)
-		}
-		db1 := GetReadDB(context.Background())
-		var taskLinkInfo gorm_model.YounggeeLinkInfo
-		db1.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id = ?", submitTaskNeedModId).Order("reject_at desc").First(&taskLinkInfo)
-		if taskLinkInfo.AutoLinkBreakAt.IsZero() {
-			err4 := db1.Where("task_id = ?", submitTaskNeedModId).Updates(&gorm_model.YounggeeLinkInfo{AutoLinkBreakAt: taskLinkInfo.RejectAt.Add(dd)}).Error
-			if err4 != nil {
-				return err4
-			}
-			fmt.Println("已添加链接违约自动处理时间")
-			if taskLinkInfo.TaskID != "" && taskLinkInfo.RejectAt.Add(dd).Sub(time.Now()) <= 0 {
-				db4 := GetReadDB(context.Background())
-				err1 := db4.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
-					TaskID: submitTaskNeedModId, ProjectID: taskIdToProjectIdMap[submitTaskNeedModId], BreakType: 3, BreakAt: time.Now(), DefaultStatus: 1}).Error
-				if err1 != nil {
-					return err1
-				}
-				taskInfo := gorm_model.YoungeeTaskInfo{}
-				dbt := GetReadDB(context.Background())
-				err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitTaskNeedModId).Find(&taskInfo).Error
-				if err2 != nil {
-					return err2
-				}
-				settleAmount := taskInfo.TaskReward * (1.0 - float64(linkDefaultRate+taskInfo.DataBreakRate+taskInfo.SketchBreakRate+taskInfo.ScriptBreakRate)/100)
-				if settleAmount <= 0 {
-					settleAmount = 0.0
-				}
-				realPayment := taskInfo.AllPayment * (1.0 - float64(linkErrRate)/100)
-				if realPayment <= 0 {
-					realPayment = 0.0
-				}
-				db3 := GetReadDB(context.Background())
-				err2 = db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitTaskNeedModId).Updates(
-					map[string]interface{}{
-						"cur_default_type": 5,
-						"link_break_rate":  linkDefaultRate,
-						"settle_amount":    settleAmount,
-						"err_break_rate":   linkErrRate,
-						"real_payment":     realPayment,
-					}).Error
-				if err2 != nil {
-					return err2
-				}
-				err = CreateTaskLog(context.Background(), submitTaskNeedModId, "链接逾期")
-				if err != nil {
-					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
-				}
-				err = CreateMessageByTaskId(context.Background(), 23, 4, submitTaskNeedModId)
-				if err != nil {
-					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
-				}
-				fmt.Println("创建时已违约则创建已提交链接的链接违约记录")
-			}
-		} else {
-			if taskLinkInfo.TaskID != "" && taskLinkInfo.AutoLinkBreakAt.Sub(time.Now()) <= 0 {
-				db4 := GetReadDB(context.Background())
-				err1 := db4.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
-					TaskID: submitTaskNeedModId, ProjectID: taskIdToProjectIdMap[submitTaskNeedModId], BreakType: 3, BreakAt: time.Now(), DefaultStatus: 1}).Error
-				if err1 != nil {
-					return err1
-				}
-				taskInfo := gorm_model.YoungeeTaskInfo{}
-				dbt := GetReadDB(context.Background())
-				err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitTaskNeedModId).Find(&taskInfo).Error
-				if err2 != nil {
-					return err2
-				}
-				settleAmount := taskInfo.TaskReward * (1.0 - float64(linkDefaultRate+taskInfo.DataBreakRate+taskInfo.SketchBreakRate+taskInfo.ScriptBreakRate)/100)
-				if settleAmount <= 0 {
-					settleAmount = 0.0
-				}
-				realPayment := taskInfo.AllPayment * (1.0 - float64(linkErrRate)/100)
-				if realPayment <= 0 {
-					realPayment = 0.0
-				}
-				db3 := GetReadDB(context.Background())
-				err2 = db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitTaskNeedModId).Updates(
-					map[string]interface{}{
-						"cur_default_type":  5,
-						"sketch_break_rate": linkDefaultRate,
-						"settle_amount":     settleAmount,
-						"err_break_rate":    linkErrRate,
-						"real_payment":      realPayment,
-					}).Error
-				if err2 != nil {
-					return err2
-				}
-				err = CreateTaskLog(context.Background(), submitTaskNeedModId, "链接逾期")
-				if err != nil {
-					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
-				}
-				err = CreateMessageByTaskId(context.Background(), 23, 4, submitTaskNeedModId)
-				if err != nil {
-					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
-				}
-				fmt.Println("创建已提交链接的链接违约记录")
-			}
-		}
-	}
-	return nil
-}
-
-// GetAutoCaseCloseDefaultTask 数据超时违约判断
-func GetAutoCaseCloseDefaultTask() error {
-	db := GetReadDB(context.Background())
-	var projectInfos []*gorm_model.ProjectInfo
-	err := db.Model(gorm_model.ProjectInfo{}).Where("project_type = ?", 1).Find(&projectInfos).Error
-	if err != nil {
-		return err
-	}
-	var projectIds []string
-	// 任务id 对 项目id 的map
-	taskIdToProjectIdMap := map[string]string{}
-	// 项目id 对 定时任务id 的map
-	projectIdToAutoTaskIdMap := map[string]int{}
-	// 项目id 对 违约定时任务id 的map
-	projectIdToAutoDefaultIdMap := map[string]int{}
-	var taskIds []string
-	for _, projectInfo := range projectInfos {
-		projectIds = append(projectIds, projectInfo.ProjectID)
-		projectIdToAutoTaskIdMap[projectInfo.ProjectID] = int(projectInfo.AutoTaskID)
-		projectIdToAutoDefaultIdMap[projectInfo.ProjectID] = int(projectInfo.AutoDefaultID)
-
-		var taskInfos []string
-		db1 := GetReadDB(context.Background())
-		db1.Select("task_id").Model(&gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_status = ? AND task_stage = ? AND cur_default_type = ? ", projectInfo.ProjectID, 2, 13, 0).Find(&taskInfos)
-		for _, taskInfo := range taskInfos {
-			taskIdToProjectIdMap[taskInfo] = projectInfo.ProjectID
-			taskIds = append(taskIds, taskInfo)
-		}
-	}
-	// 首次提交链接的任务记录id
-	var taskNeedModIds []string
-	// 已提交链接的任务记录id
-	var submitTaskNeedModIds []string
-	// taskId 对 稿费形式的 map
-	taskIdToFeeFormMap := make(map[string]int)
-	for _, taskId := range taskIds {
-		var taskInfo gorm_model.YoungeeTaskInfo
-		db3 := GetReadDB(context.Background())
-		// 保存所有数据上传状态为 1  且任务状态为14 的任务记录的id
-		db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).First(&taskInfo)
-		if taskInfo.DataStatus == 1 && taskInfo.TaskStage == 13 {
-			taskNeedModIds = append(taskNeedModIds, taskId)
-		}
-		// 保存所有数据上传状态为 3  且任务状态为14 的任务记录的id
-		if taskInfo.DataStatus == 3 && taskInfo.TaskStage == 13 {
-			submitTaskNeedModIds = append(submitTaskNeedModIds, taskId)
-		}
-		taskIdToFeeFormMap[taskId] = taskInfo.FeeForm
-	}
-	for _, taskNeedModId := range taskNeedModIds {
-		db2 := GetReadDB(context.Background())
-		var CaseCloseDefault int32
-		db2.Model(&gorm_model.InfoAutoTask{}).Select("case_close_default").Where("auto_task_id = ?", projectIdToAutoTaskIdMap[taskIdToProjectIdMap[taskNeedModId]]).First(&CaseCloseDefault)
-		dd, _ := time.ParseDuration(conv.MustString(CaseCloseDefault, "") + "h")
-
-		autoDefaultHandle := gorm_model.InfoAutoDefaultHandle{}
-		db6 := GetReadDB(context.Background())
-		db6.Model(gorm_model.InfoAutoDefaultHandle{}).Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[taskNeedModId]]).Find(&autoDefaultHandle)
-
-		var dataDefaultRate int
-		var dataErrRate int
-		if taskIdToFeeFormMap[taskNeedModId] == 1 {
-			dataDefaultRate = autoDefaultHandle.DataReplaceTimeOut
-			dataErrRate = autoDefaultHandle.DataReplaceNotUpload
-			// db6 := GetReadDB(context.Background())
-			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("data_replace_time_out", "data_replace_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[taskNeedModId]]).Find(&dataDefaultRate, &dataErrRate)
-		} else {
-			dataDefaultRate = autoDefaultHandle.DataOtherTimeOut
-			dataErrRate = autoDefaultHandle.DataOtherNotUpload
-			// db6 := GetReadDB(context.Background())
-			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("data_other_time_out", "data_other_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[taskNeedModId]]).Find(&dataDefaultRate, &dataErrRate)
-		}
-		//fmt.Println("dataDefaultRate:", dataDefaultRate)
-		db1 := GetReadDB(context.Background())
-		var taskLinkInfo gorm_model.YounggeeLinkInfo
-		db1.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id = ? AND is_ok = ?", taskNeedModId, 1).Find(&taskLinkInfo)
-		if taskLinkInfo.AutoDataBreakAt.IsZero() {
-			db1.Where("task_id = ?", taskNeedModId).Updates(&gorm_model.YounggeeLinkInfo{AutoDataBreakAt: taskLinkInfo.AgreeAt.Add(dd)})
-			fmt.Println("已添加数据违约自动处理时间")
-			if taskLinkInfo.TaskID != "" && taskLinkInfo.AgreeAt.Add(dd).Sub(time.Now()) <= 0 {
-				db4 := GetReadDB(context.Background())
-				err1 := db4.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
-					TaskID: taskNeedModId, ProjectID: taskIdToProjectIdMap[taskNeedModId], BreakType: 4, BreakAt: time.Now(), DefaultStatus: 1}).Error
-				if err1 != nil {
-					return err1
-				}
-				taskInfo := gorm_model.YoungeeTaskInfo{}
-				dbt := GetReadDB(context.Background())
-				err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskNeedModId).Find(&taskInfo).Error
-				if err2 != nil {
-					return err2
-				}
-				settleAmount := taskInfo.TaskReward * (1.0 - float64(taskInfo.SketchBreakRate+dataDefaultRate+taskInfo.LinkBreakRate+taskInfo.ScriptBreakRate)/100)
-				if settleAmount <= 0 {
-					settleAmount = 0.0
-				}
-				realPayment := taskInfo.AllPayment * (1.0 - float64(dataErrRate)/100)
-				if realPayment <= 0 {
-					realPayment = 0.0
-				}
-				db3 := GetReadDB(context.Background())
-				err2 = db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskNeedModId).Updates(
-					map[string]interface{}{
-						"cur_default_type": 7,
-						"data_break_rate":  dataDefaultRate,
-						"settle_amount":    settleAmount,
-						"err_break_rate":   dataErrRate,
-						"real_payment":     realPayment,
-					}).Error
-				if err2 != nil {
-					return err2
-				}
-				err = CreateTaskLog(context.Background(), taskNeedModId, "数据逾期")
-				if err != nil {
-					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
-				}
-				err = CreateMessageByTaskId(context.Background(), 24, 4, taskNeedModId)
-				if err != nil {
-					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
-				}
-				fmt.Println("创建时已违约则创建数据违约记录")
-			}
-		} else {
-			if taskLinkInfo.TaskID != "" && taskLinkInfo.AutoDataBreakAt.Sub(time.Now()) <= 0 {
-				db4 := GetReadDB(context.Background())
-				err1 := db4.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
-					TaskID: taskNeedModId, ProjectID: taskIdToProjectIdMap[taskNeedModId], BreakType: 4, BreakAt: time.Now(), DefaultStatus: 1}).Error
-				if err1 != nil {
-					return err1
-				}
-				taskInfo := gorm_model.YoungeeTaskInfo{}
-				dbt := GetReadDB(context.Background())
-				err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskNeedModId).Find(&taskInfo).Error
-				if err2 != nil {
-					return err2
-				}
-				settleAmount := taskInfo.TaskReward * (1.0 - float64(taskInfo.SketchBreakRate+dataDefaultRate+taskInfo.LinkBreakRate+taskInfo.ScriptBreakRate)/100)
-				if settleAmount <= 0 {
-					settleAmount = 0.0
-				}
-				realPayment := taskInfo.AllPayment * (1.0 - float64(dataErrRate)/100)
-				if realPayment <= 0 {
-					realPayment = 0.0
-				}
-				fmt.Println("settleAmount: ", settleAmount)
-				db3 := GetReadDB(context.Background())
-				err2 = db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskNeedModId).Updates(
-					map[string]interface{}{
-						"cur_default_type":  7,
-						"sketch_break_rate": dataDefaultRate,
-						"settle_amount":     settleAmount,
-						"err_break_rate":    dataErrRate,
-						"real_payment":      realPayment,
-					}).Error
-				if err2 != nil {
-					return err2
-				}
-				err = CreateTaskLog(context.Background(), taskNeedModId, "数据逾期")
-				if err != nil {
-					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
-				}
-				err = CreateMessageByTaskId(context.Background(), 24, 4, taskNeedModId)
-				if err != nil {
-					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
-				}
-				fmt.Println("已创建数据违约记录")
-			}
-		}
-	}
-	// 根据最近一次拒绝时间判断当前是否违约
-	for _, submitTaskNeedModId := range submitTaskNeedModIds {
-		db2 := GetReadDB(context.Background())
-		var LinkBreach int32
-		db2.Model(&gorm_model.InfoAutoTask{}).Select("case_close_default").Where("auto_task_id = ?", projectIdToAutoTaskIdMap[taskIdToProjectIdMap[submitTaskNeedModId]]).First(&LinkBreach)
-		dd, _ := time.ParseDuration(conv.MustString(LinkBreach, "") + "h")
-
-		autoDefaultHandle := gorm_model.InfoAutoDefaultHandle{}
-		db6 := GetReadDB(context.Background())
-		db6.Model(gorm_model.InfoAutoDefaultHandle{}).Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[submitTaskNeedModId]]).Find(&autoDefaultHandle)
-
-		var dataDefaultRate int
-		var dataErrRate int
-		if taskIdToFeeFormMap[submitTaskNeedModId] == 1 {
-			dataDefaultRate = autoDefaultHandle.DataReplaceTimeOut
-			dataErrRate = autoDefaultHandle.DataReplaceNotUpload
-			// db6 := GetReadDB(context.Background())
-			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("data_replace_time_out", "data_replace_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[submitTaskNeedModId]]).Find(&dataDefaultRate, &dataErrRate)
-		} else {
-			dataDefaultRate = autoDefaultHandle.DataOtherTimeOut
-			dataErrRate = autoDefaultHandle.DataOtherNotUpload
-			// db6 := GetReadDB(context.Background())
-			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("data_other_time_out", "data_other_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[submitTaskNeedModId]]).Find(&dataDefaultRate, &dataErrRate)
-		}
-		db1 := GetReadDB(context.Background())
-		var taskDataInfo gorm_model.YounggeeDataInfo
-		db1.Model(gorm_model.YounggeeDataInfo{}).Where("task_id = ? and is_review = 1", submitTaskNeedModId).Order("reject_at desc").First(&taskDataInfo)
-		if taskDataInfo.AutoDataBreakAt.IsZero() {
-			err4 := db1.Where("task_id = ?", submitTaskNeedModId).Updates(&gorm_model.YounggeeDataInfo{AutoDataBreakAt: taskDataInfo.RejectAt.Add(dd)}).Error
-			if err4 != nil {
-				return err4
-			}
-			fmt.Println("已添加数据违约自动处理时间")
-			if taskDataInfo.TaskID != "" && taskDataInfo.RejectAt.Add(dd).Sub(time.Now()) <= 0 {
-				db4 := GetReadDB(context.Background())
-				err1 := db4.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
-					TaskID: submitTaskNeedModId, ProjectID: taskIdToProjectIdMap[submitTaskNeedModId], BreakType: 4, BreakAt: time.Now(), DefaultStatus: 1}).Error
-				if err1 != nil {
-					return err1
-				}
-				taskInfo := gorm_model.YoungeeTaskInfo{}
-				dbt := GetReadDB(context.Background())
-				err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitTaskNeedModId).Find(&taskInfo).Error
-				if err2 != nil {
-					return err2
-				}
-				settleAmount := taskInfo.TaskReward * (1.0 - float64(taskInfo.SketchBreakRate+dataDefaultRate+taskInfo.LinkBreakRate+taskInfo.ScriptBreakRate)/100)
-				if settleAmount <= 0 {
-					settleAmount = 0.0
-				}
-				realPayment := taskInfo.AllPayment * (1.0 - float64(dataErrRate)/100)
-				if realPayment <= 0 {
-					realPayment = 0.0
-				}
-				db3 := GetReadDB(context.Background())
-				err2 = db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitTaskNeedModId).Updates(
-					map[string]interface{}{
-						"cur_default_type": 7,
-						"data_break_rate":  dataDefaultRate,
-						"settle_amount":    settleAmount,
-						"err_break_rate":   dataErrRate,
-						"real_payment":     realPayment,
-					}).Error
-				if err2 != nil {
-					return err2
-				}
-				err = CreateTaskLog(context.Background(), submitTaskNeedModId, "数据逾期")
-				if err != nil {
-					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
-				}
-				err = CreateMessageByTaskId(context.Background(), 24, 4, submitTaskNeedModId)
-				if err != nil {
-					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
-				}
-				fmt.Println("创建时已违约则创建已提交数据的数据违约记录")
-			}
-		} else {
-			if taskDataInfo.TaskID != "" && taskDataInfo.AutoDataBreakAt.Sub(time.Now()) <= 0 {
-				db4 := GetReadDB(context.Background())
-				err1 := db4.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
-					TaskID: submitTaskNeedModId, ProjectID: taskIdToProjectIdMap[submitTaskNeedModId], BreakType: 4, BreakAt: time.Now(), DefaultStatus: 1}).Error
-				if err1 != nil {
-					return err1
-				}
-				taskInfo := gorm_model.YoungeeTaskInfo{}
-				dbt := GetReadDB(context.Background())
-				err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitTaskNeedModId).Find(&taskInfo).Error
-				if err2 != nil {
-					return err2
-				}
-				settleAmount := taskInfo.TaskReward * (1.0 - float64(taskInfo.SketchBreakRate+dataDefaultRate+taskInfo.LinkBreakRate+taskInfo.ScriptBreakRate)/100)
-				if settleAmount <= 0 {
-					settleAmount = 0.0
-				}
-				realPayment := taskInfo.AllPayment * (1.0 - float64(dataErrRate)/100)
-				if realPayment <= 0 {
-					realPayment = 0.0
-				}
-				db3 := GetReadDB(context.Background())
-				err2 = db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitTaskNeedModId).Updates(
-					map[string]interface{}{
-						"cur_default_type": 7,
-						"data_break_rate":  dataDefaultRate,
-						"settle_amount":    settleAmount,
-						"err_break_rate":   dataErrRate,
-						"real_payment":     realPayment,
-					}).Error
-				if err2 != nil {
-					return err2
-				}
-				err = CreateTaskLog(context.Background(), submitTaskNeedModId, "数据逾期")
-				if err != nil {
-					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
-				}
-				err = CreateMessageByTaskId(context.Background(), 24, 4, submitTaskNeedModId)
-				if err != nil {
-					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
-				}
-				fmt.Println("创建已提交数据的数据违约记录")
-			}
-		}
-	}
-	return nil
-}
-
-func GetHours(ctx context.Context) (*http_model.Hours, error) {
-	db := GetReadDB(ctx)
-	infoAuto := gorm_model.InfoAutoTask{}
-	err := db.Model(gorm_model.InfoAutoTask{}).Last(&infoAuto).Error
-	if err != nil {
-		return nil, err
-	}
-	Hours := http_model.Hours{}
-	Hours.DraftDefaultInPic = infoAuto.DraftDefaultInPic
-	Hours.DraftDefaultInMv = infoAuto.DraftDefaultInMv
-	Hours.ScriptDefault = infoAuto.ScriptDefault
-	Hours.Invalid = infoAuto.Invalid
-	Hours.LinkBreach = infoAuto.LinkBreach
-	Hours.CaseClose = infoAuto.CaseClose
-	Hours.CaseCloseDefault = infoAuto.CaseCloseDefault
-	Hours.ReviewInMv = infoAuto.ReviewInMv
-	Hours.ReviewUnlimited = infoAuto.ReviewUnlimited
-	Hours.PostReview = infoAuto.Postreview
-	Hours.SignInVirtual = infoAuto.SignInVirtual
-	Hours.SignInOffline = infoAuto.SignInOffline
-	return &Hours, err
-}
-
-func GetPercents(ctx context.Context) (*http_model.Percents, error) {
-	db := GetReadDB(ctx)
-	percentsInfo := gorm_model.InfoAutoDefaultHandle{}
-	err := db.Model(gorm_model.InfoAutoDefaultHandle{}).Last(&percentsInfo).Error
-	if err != nil {
-		return nil, err
-	}
-	Percents := http_model.Percents{}
-	Percents.DataReplaceNotUpload = percentsInfo.DataReplaceNotUpload
-	Percents.DataReplaceTimeOut = percentsInfo.DataReplaceTimeOut
-	Percents.DataOtherTimeOut = percentsInfo.DataOtherTimeOut
-	Percents.DataOtherNotUpload = percentsInfo.DataOtherNotUpload
-	Percents.LinkReplaceTimeOut = percentsInfo.LinkReplaceTimeOut
-	Percents.LinkReplaceNotUpload = percentsInfo.LinkReplaceNotUpload
-	Percents.LinkOtherTimeOut = percentsInfo.LinkOtherTimeOut
-	Percents.LinkOtherNotUpload = percentsInfo.LinkOtherNotUpload
-	Percents.ScriptReplaceTimeOut = percentsInfo.ScriptReplaceTimeOut
-	Percents.ScriptReplaceNotUpload = percentsInfo.ScriptReplaceNotUpload
-	Percents.ScriptOtherNotUpload = percentsInfo.ScriptOtherNotUpload
-	Percents.ScriptOtherTimeOut = percentsInfo.ScriptOtherTimeOut
-	Percents.SketchReplaceTimeOut = percentsInfo.SketchReplaceTimeOut
-	Percents.SketchOtherNotUpload = percentsInfo.SketchOtherNotUpload
-	Percents.SketchOtherTimeOut = percentsInfo.SketchOtherTimeOut
-	Percents.SketchReplaceNotUpload = percentsInfo.SketchReplaceNotUpload
-	return &Percents, err
-}
+package db
+
+import (
+	"context"
+	"encoding/json"
+	"fmt"
+	"log"
+	"reflect"
+	"strconv"
+	"time"
+	"youngee_m_api/model/common_model"
+	"youngee_m_api/model/gorm_model"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/util"
+
+	"github.com/caixw/lib.go/conv"
+	"github.com/sirupsen/logrus"
+	"github.com/tidwall/gjson"
+	"gorm.io/gorm"
+)
+
+func CreatePricingStrategy(ctx context.Context, req *http_model.AddPricingRequest) (string, string, error) {
+	db := GetReadDB(ctx)
+	project_type, fee_form, platform, fans_low, fans_up, service_charge, service_rate := req.ProjectType, req.ManuscriptForm, req.Platform, req.FansLow, req.FansHigh, req.ServiceCharge, req.ServiceRate*10
+	var IsExclusive, IsExclusive2, IsExclusive3, IsExclusive1 gorm_model.InfoPricingStrategy
+	err := db.Where(" fee_form = ? && platform = ? && fans_low <= ? && fans_up >= ?", fee_form, platform, fans_low, fans_up).First(&IsExclusive).Error
+	if err == nil {
+		return "该策略与已经运行的策略互斥,请修改相关字段后重新创建", "", nil
+	}
+	err = db.Where(" fee_form = ? && platform = ? && fans_low < ? && fans_up > ?", fee_form, platform, fans_low, fans_low).First(&IsExclusive1).Error
+	if err == nil {
+		return "该策略与已经运行的策略互斥,请修改相关字段后重新创建", "", nil
+	}
+	err = db.Where(" fee_form = ? && platform = ? && fans_low < ? && fans_up > ?", fee_form, platform, fans_up, fans_up).First(&IsExclusive2).Error
+	if err == nil {
+		return "该策略与已经运行的策略互斥,请修改相关字段后重新创建", "", nil
+	}
+	err = db.Where(" fee_form = ? && platform = ? && fans_low >= ? && fans_up <= ?", fee_form, platform, fans_low, fans_up).First(&IsExclusive3).Error
+	if err == nil {
+		return "该策略与已经运行的策略互斥,请修改相关字段后重新创建", "", nil
+	}
+	var newStrategy gorm_model.InfoPricingStrategy
+	var strategyInfo gorm_model.InfoPricingStrategy
+	getMonth := time.Now().Format("01") //获取月
+	getDay := time.Now().Day()          //获取日
+	dayString := ""
+	if getDay < 10 {
+		dayString = conv.MustString(getDay, "")
+		dayString = "0" + dayString
+	} else {
+		dayString = conv.MustString(getDay, "")
+	}
+	monthAndDay := conv.MustString(getMonth, "") + dayString
+	err = db.Where(fmt.Sprintf(" strategyId like '%s%%'", monthAndDay)).Last(&strategyInfo).Error
+
+	num := 1
+	if strategyInfo.StrategyId != "" {
+		num = conv.MustInt(strategyInfo.StrategyId[4:6], 0)
+		num = num + 1 //获取日
+	} else {
+		num = 1
+	}
+	numString := ""
+	if num < 10 {
+		numString = conv.MustString(num, "")
+		numString = "0" + numString
+	} else {
+		numString = conv.MustString(num, "")
+	}
+	newStrategy.StrategyId = monthAndDay + numString
+	newStrategy.Status = 0
+	newStrategy.FansLow = fans_low
+	newStrategy.FansUp = fans_up
+	newStrategy.ProjectType = conv.MustInt64(project_type, 0)
+	newStrategy.ServiceCharge = conv.MustFloat64(service_charge, 0)
+	newStrategy.Platform = conv.MustInt64(platform, 0)
+	newStrategy.FeeForm = conv.MustInt64(fee_form, 0)
+	newStrategy.ServiceRate = conv.MustInt64(service_rate, 0)
+	newStrategy.CreateAt = time.Now()
+	newStrategy.UpdateAt = time.Now()
+	err = db.Create(&newStrategy).Error
+	if err != nil {
+		return "创建失败", "", err
+	}
+	return "创建成功", monthAndDay + numString, nil
+}
+
+func CreateYoungeeStrategy(ctx context.Context, req *http_model.AddYoungeeRequest) (string, string, error) {
+	db := GetReadDB(ctx)
+	project_type, task_type, platform, content_type, reason, cash := req.ProjectType, req.TaskType, req.Platform, req.ContentType, req.Reason, req.Cash
+	var IsExclusive gorm_model.InfoYoungeeStrategy
+	err := db.Where(" platform = ? ").First(&IsExclusive).Error
+	if err == nil {
+		return "该策略与已经运行的策略互斥,请修改相关字段后重新创建", "", nil
+	}
+	var newStrategy gorm_model.InfoYoungeeStrategy
+	var strategyInfo gorm_model.InfoYoungeeStrategy
+	getMonth := time.Now().Format("01") //获取月
+	getDay := time.Now().Day()          //获取日
+	dayString := ""
+	if getDay < 10 {
+		dayString = conv.MustString(getDay, "")
+		dayString = "0" + dayString
+	} else {
+		dayString = conv.MustString(getDay, "")
+	}
+	monthAndDay := conv.MustString(getMonth, "") + dayString
+	err = db.Where(fmt.Sprintf(" strategyId like '%s%%'", monthAndDay)).Last(&strategyInfo).Error
+
+	num := 1
+	if strategyInfo.StrategyId != "" {
+		num = conv.MustInt(strategyInfo.StrategyId[4:6], 0)
+		num = num + 1 //获取日
+	} else {
+		num = 1
+	}
+	numString := ""
+	if num < 10 {
+		numString = conv.MustString(num, "")
+		numString = "0" + numString
+	} else {
+		numString = conv.MustString(num, "")
+	}
+	newStrategy.StrategyId = monthAndDay + numString
+	newStrategy.Status = 0
+	newStrategy.ProjectType = conv.MustInt64(project_type, 0)
+	newStrategy.TaskType = conv.MustInt64(task_type, 0)
+	newStrategy.Platform = conv.MustInt64(platform, 0)
+	newStrategy.ContentType = conv.MustInt(content_type, 0)
+	newStrategy.Reason = conv.MustInt(reason, 0)
+	//newStrategy.Points = conv.MustFloat64(points, 0)
+	newStrategy.Cash = conv.MustFloat64(cash, 0)
+	newStrategy.CreateAt = time.Now()
+	err = db.Create(&newStrategy).Error
+	if err != nil {
+		return "创建失败", "", err
+	}
+	return "创建成功", monthAndDay + numString, nil
+}
+
+func SearchPricing(ctx context.Context, pageSize, pageNum int32, conditions *common_model.PricingConditions) ([]*gorm_model.InfoPricingStrategy, int64, error) {
+	db := GetReadDB(ctx)
+	db = db.Model(gorm_model.InfoPricingStrategy{})
+	// 根据 查询条件过滤
+	conditionType := reflect.TypeOf(conditions).Elem()
+	conditionValue := reflect.ValueOf(conditions).Elem()
+	for i := 0; i < conditionType.NumField(); i++ {
+		field := conditionType.Field(i)
+		tag := field.Tag.Get("condition")
+		value := conditionValue.FieldByName(field.Name)
+		if !util.IsBlank(value) && tag != "update_at" {
+			db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+		} else if tag == "update_at" && value.Interface() != nil {
+			db = db.Where(fmt.Sprintf("update_at like '%s%%'", value.Interface()))
+		}
+	}
+	// 查询总数
+	var total int64
+	var PricingDatas []*gorm_model.InfoPricingStrategy
+	if err := db.Count(&total).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[SearchPricing] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	// 查询该页数据
+	limit := pageSize
+	offset := pageSize * pageNum // assert pageNum start with 0
+	err := db.Order("update_at desc").Limit(int(limit)).Offset(int(offset)).Find(&PricingDatas).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[SearchPricing] error query mysql find, err:%+v", err)
+		return nil, 0, err
+	}
+	return PricingDatas, total, nil
+}
+
+func SearchYoungee(ctx context.Context, pageSize, pageNum int32, conditions *common_model.YoungeeConditions) ([]*gorm_model.InfoYoungeeStrategy, int64, error) {
+	db := GetReadDB(ctx)
+	db = db.Model(gorm_model.InfoYoungeeStrategy{})
+	// 根据 查询条件过滤
+	conditionType := reflect.TypeOf(conditions).Elem()
+	conditionValue := reflect.ValueOf(conditions).Elem()
+	for i := 0; i < conditionType.NumField(); i++ {
+		field := conditionType.Field(i)
+		tag := field.Tag.Get("condition")
+		value := conditionValue.FieldByName(field.Name)
+		if !util.IsBlank(value) {
+			fmt.Println("tag:", tag)
+			db = db.Debug().Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+		}
+	}
+	// 查询总数
+	var total int64
+	var YoungeeDatas []*gorm_model.InfoYoungeeStrategy
+	if err := db.Count(&total).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[SearchYoungee] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	// 查询该页数据
+	limit := pageSize
+	offset := pageSize * pageNum // assert pageNum start with 0
+	err := db.Order("content_type desc").Limit(int(limit)).Offset(int(offset)).Find(&YoungeeDatas).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[SearchYoungee] error query mysql find, err:%+v", err)
+		return nil, 0, err
+	}
+	return YoungeeDatas, total, nil
+}
+
+func ModifyPricing(ctx context.Context, req *http_model.ModifyPricingRequest) (int, error) {
+	db := GetReadDB(ctx)
+	strategyId := req.StrategyId
+	db = db.Model(gorm_model.InfoPricingStrategy{})
+	project_type, fee_form, platform, fans_low, fans_up, service_charge, service_rate := req.ProjectType, req.FeeForm, req.Platform, req.FansLow, req.FansHigh, req.ServiceCharge, req.ServiceRate*10
+	var IsExclusive, IsExclusive2, IsExclusive3, IsExclusive1 int64
+	err := db.Debug().Where("strategyId <> ? && fee_form = ? && platform = ? && fans_low <= ? && fans_up >= ?", strategyId, fee_form, platform, fans_low, fans_up).Count(&IsExclusive).Error
+	if IsExclusive != 0 {
+		return 1, nil
+	}
+	err = db.Debug().Where("strategyId <> ? && fee_form = ? && platform = ? && fans_low < ? && fans_up > ?", strategyId, fee_form, platform, fans_low, fans_low).Count(&IsExclusive1).Error
+	if IsExclusive1 != 0 {
+		return 1, nil
+	}
+	err = db.Debug().Where("strategyId <> ? && fee_form = ? && platform = ? && fans_low < ? && fans_up > ?", strategyId, fee_form, platform, fans_up, fans_up).Count(&IsExclusive2).Error
+	if IsExclusive2 != 0 {
+		return 1, nil
+	}
+	err = db.Debug().Where("strategyId <> ? && fee_form = ? && platform = ? && fans_low >= ? && fans_up <= ?", strategyId, fee_form, platform, fans_low, fans_up).Count(&IsExclusive3).Error
+	if IsExclusive3 != 0 {
+		return 1, nil
+	}
+	if err != nil {
+		fmt.Printf("[ModifyPricing] error query mysql find, err:%+v", err)
+		logrus.WithContext(ctx).Errorf("[ModifyPricing] error query mysql find, err:%+v", err)
+		return 2, err
+	}
+	//fmt.Printf("service_rate:%+v", service_rate)
+	db1 := GetReadDB(ctx).Model(gorm_model.InfoPricingStrategy{}).Where("strategyId = ?", strategyId)
+	err1 := db1.Updates(map[string]interface{}{
+		"project_type": project_type, "service_rate": service_rate, "fee_form": fee_form,
+		"platform": platform, "fans_low": fans_low, "fans_up": fans_up, "service_charge": service_charge,
+	}).Error
+	if err1 != nil {
+		fmt.Printf("[ModifyPricing] error query mysql update, err:%+v", err)
+		logrus.WithContext(ctx).Errorf("[ModifyPricing] error query mysql update, err:%+v", err)
+		return 2, err
+	}
+	return 0, nil
+}
+
+func UpdateAutoTaskTime(ctx context.Context, time int32, num int32) error {
+	db := GetReadDB(ctx)
+	var autoTaskInfo gorm_model.InfoAutoTask
+	err := db.Model(gorm_model.InfoAutoTask{}).Last(&autoTaskInfo).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[UpdateAutoTaskTime] error get Last mysql, err:%+v", err)
+		return err
+	}
+	switch num {
+	case 1:
+		autoTaskInfo.SignInOffline = time
+	case 2:
+		autoTaskInfo.SignInVirtual = time
+	case 3:
+		autoTaskInfo.ReviewInMv = time
+	case 4:
+		autoTaskInfo.ReviewUnlimited = time
+	case 5:
+		autoTaskInfo.Postreview = time
+	case 6:
+		autoTaskInfo.CaseClose = time
+	case 7:
+		autoTaskInfo.Invalid = time
+	case 8:
+		autoTaskInfo.DraftDefaultInPic = time
+	case 9:
+		autoTaskInfo.DraftDefaultInMv = time
+	case 10:
+		autoTaskInfo.ScriptDefault = time
+	case 11:
+		autoTaskInfo.LinkBreach = time
+	case 12:
+		autoTaskInfo.CaseCloseDefault = time
+	}
+	autoTaskInfo.AutoTaskID += 1
+	err = db.Model(gorm_model.InfoAutoTask{}).Create(&autoTaskInfo).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[UpdateAutoTaskTime] error Create mysql, err:%+v", err)
+		return err
+	}
+	return nil
+}
+
+func UpdateAutoDefaultRate(ctx context.Context, rate int, num int32) error {
+	db := GetReadDB(ctx)
+	autoDefaultRateInfo := gorm_model.InfoAutoDefaultHandle{}
+	err := db.Model(&gorm_model.InfoAutoDefaultHandle{}).Last(&autoDefaultRateInfo).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[UpdateAutoDefaultRate] error get Last mysql, err:%+v", err)
+		return err
+	}
+	switch num {
+	case 1:
+		autoDefaultRateInfo.SketchReplaceNotUpload = rate
+	case 2:
+		autoDefaultRateInfo.SketchReplaceTimeOut = rate
+	case 3:
+		autoDefaultRateInfo.SketchOtherNotUpload = rate
+	case 4:
+		autoDefaultRateInfo.SketchOtherTimeOut = rate
+	case 5:
+		autoDefaultRateInfo.ScriptReplaceNotUpload = rate
+	case 6:
+		autoDefaultRateInfo.ScriptReplaceTimeOut = rate
+	case 7:
+		autoDefaultRateInfo.ScriptOtherNotUpload = rate
+	case 8:
+		autoDefaultRateInfo.ScriptOtherTimeOut = rate
+	case 9:
+		autoDefaultRateInfo.LinkReplaceNotUpload = rate
+	case 10:
+		autoDefaultRateInfo.LinkReplaceTimeOut = rate
+	case 11:
+		autoDefaultRateInfo.LinkOtherNotUpload = rate
+	case 12:
+		autoDefaultRateInfo.LinkOtherTimeOut = rate
+	case 13:
+		autoDefaultRateInfo.DataReplaceNotUpload = rate
+	case 14:
+		autoDefaultRateInfo.DataReplaceTimeOut = rate
+	case 15:
+		autoDefaultRateInfo.DataOtherNotUpload = rate
+	case 16:
+		autoDefaultRateInfo.DataOtherTimeOut = rate
+	}
+	autoDefaultRateInfo.AutoDefaultID += 1
+	err = db.Model(&gorm_model.InfoAutoDefaultHandle{}).Create(autoDefaultRateInfo).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[UpdateAutoDefaultRate] error Create mysql, err:%+v", err)
+		return err
+	}
+	return nil
+}
+
+func GetSignInOfflineTask(projectForm int32) error {
+	db := GetReadDB(context.Background())
+	var projectInfos []*gorm_model.ProjectInfo
+	err := db.Model(gorm_model.ProjectInfo{}).Where("project_type = ? AND project_form = ? AND project_status = 9", 1, projectForm).Find(&projectInfos).Error
+	if err != nil {
+		return err
+	}
+	projectIdMap := make(map[string]int64)
+	taskIDs := make(map[string]string)
+	var projectIds []string
+	var taskIds []string
+	var t int32
+	for _, projectInfo := range projectInfos {
+		autoTaskId := projectInfo.AutoTaskID
+		dbStart := GetReadDB(context.Background())
+		var autoTaskInfo gorm_model.InfoAutoTask
+		dbStart.Model(gorm_model.InfoAutoTask{}).Where("auto_task_id = ?", autoTaskId).First(&autoTaskInfo)
+		// fmt.Println("t:", autoTaskInfo.SignInOffline)
+		if projectForm == 3 {
+			t = autoTaskInfo.SignInOffline
+		} else {
+			t = autoTaskInfo.SignInVirtual
+		}
+		projectIds = append(projectIds, projectInfo.ProjectID)
+		if _, ok := projectIdMap[projectInfo.ProjectID]; !ok {
+			projectIdMap[projectInfo.ProjectID] = projectInfo.ContentType
+			db1 := GetReadDB(context.Background())
+			var taskInfos []gorm_model.YoungeeTaskInfo
+			db1.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND logistics_status = ? AND task_stage = 5", projectInfo.ProjectID, 2).Find(&taskInfos)
+			//fmt.Println("taskInfos", taskInfos)
+			for _, taskInfo := range taskInfos {
+				//fmt.Println("TaskId", taskInfo.TaskId)
+				if _, ok1 := taskIDs[taskInfo.TaskId]; !ok1 {
+					taskIds = append(taskIds, taskInfo.TaskId)
+					taskIDs[taskInfo.TaskId] = taskInfo.ProjectId
+					var logisticInfo gorm_model.YoungeeTaskLogistics
+					db2 := GetReadDB(context.Background())
+					db2.Model(gorm_model.YoungeeTaskLogistics{}).Where("task_id = ?", taskInfo.TaskId).Find(&logisticInfo)
+					dd, _ := time.ParseDuration(conv.MustString(t, "") + "h")
+					if logisticInfo.AutoSignAt == nil || logisticInfo.AutoSignAt.IsZero() {
+						var t1 time.Time
+						if logisticInfo.ThingsType == 3 {
+							t1 = logisticInfo.ExplorestoreEndtime.Add(dd)
+						} else {
+							t1 = logisticInfo.DeliveryTime.Add(dd)
+						}
+						db5 := GetReadDB(context.Background())
+						db5.Model(gorm_model.YoungeeTaskLogistics{}).Where("logistics_id = ?", logisticInfo.LogisticsID).
+							Updates(&gorm_model.YoungeeTaskLogistics{AutoSignAt: &t1})
+						fmt.Println("已添加自动签收时间")
+					}
+				}
+			}
+		}
+	}
+	var logisticInfos []gorm_model.YoungeeTaskLogistics
+	db3 := GetReadDB(context.Background())
+	err = db3.Model(gorm_model.YoungeeTaskLogistics{}).Where("auto_sign_at <= ? AND task_id IN ?", time.Now(), taskIds).Find(&logisticInfos).Error
+	if err != nil {
+		log.Println("DB AutoGetSignInOfflineTask error :", err)
+		return err
+	}
+	var signedTaskId []string
+	for _, logisticInfo := range logisticInfos {
+		signedTaskId = append(signedTaskId, logisticInfo.TaskID)
+		if logisticInfo.Status == 0 {
+			if logisticInfo.ThingsType == 3 {
+				t := time.Now()
+				db6 := GetReadDB(context.Background())
+				db6.Model(gorm_model.YoungeeTaskLogistics{}).Where("logistics_id = ?", logisticInfo.LogisticsID).Updates(
+					&gorm_model.YoungeeTaskLogistics{SignedTime: &t, Status: 1})
+			} else {
+				db6 := GetReadDB(context.Background())
+				t := time.Now()
+				db6.Model(gorm_model.YoungeeTaskLogistics{}).Where("logistics_id = ?", logisticInfo.LogisticsID).Updates(
+					&gorm_model.YoungeeTaskLogistics{SignedTime: &t, Status: 1})
+			}
+			err = CreateTaskLog(context.Background(), logisticInfo.TaskID, "签收时间")
+			if err != nil {
+				logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
+			}
+
+			err = CreateMessageByTaskId(context.Background(), 9, 2, logisticInfo.TaskID)
+			if err != nil {
+				logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
+			}
+			fmt.Println("已更新签收时间")
+		}
+	}
+	signedTaskId = util.RemoveStrRepByMap(signedTaskId)
+	//fmt.Println("signedTaskId", signedTaskId)
+	for _, taskID := range signedTaskId {
+		//fmt.Println("taskID", taskID)
+		db4 := GetReadDB(context.Background())
+		taskNeedMod := gorm_model.YoungeeTaskInfo{}
+		db4.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskID).Find(&taskNeedMod)
+		if projectIdMap[taskIDs[taskID]] == 1 {
+			if taskNeedMod.LogisticsStatus == 2 && taskNeedMod.TaskStage == 5 {
+				db4.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskID).Updates(&gorm_model.YoungeeTaskInfo{LogisticsStatus: 3, TaskStage: 9})
+				fmt.Println("内容形式为图片的项目 已修改任务状态为待传初稿 及物流状态为已签收")
+			}
+		} else if projectIdMap[taskIDs[taskID]] == 2 {
+			if taskNeedMod.LogisticsStatus == 2 && taskNeedMod.TaskStage == 5 {
+				db4.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskID).Updates(&gorm_model.YoungeeTaskInfo{LogisticsStatus: 3, TaskStage: 7})
+				fmt.Println("内容形式为视频的项目 已修改任务状态为待传脚本 及物流状态为已签收")
+			}
+		}
+	}
+	return nil
+}
+
+func GetAutoReviewTask(contentType int32) error {
+	db := GetReadDB(context.Background())
+	var projectInfos []*gorm_model.ProjectInfo
+	if contentType == 2 {
+		// 项目内容形式为视频
+		// 1. 补全scriptInfo表中的自动审核脚本时间
+		err := db.Model(gorm_model.ProjectInfo{}).Where("project_type = ? AND content_type = ? AND project_status = 9", 1, contentType).Find(&projectInfos).Error
+		if err != nil {
+			return err
+		}
+		var projectIds []string
+		projectIdToAutoTaskIdMap := map[string]int{}
+		for _, projectInfo := range projectInfos {
+			projectIds = append(projectIds, projectInfo.ProjectID)
+			projectIdToAutoTaskIdMap[projectInfo.ProjectID] = int(projectInfo.AutoTaskID)
+		}
+		//fmt.Println("projectIds:", projectIds)
+		db1 := GetReadDB(context.Background())
+		for _, projectId := range projectIds {
+			// 获取 autoTaskId 及其对应的限制时间、
+			autoTaskId := projectIdToAutoTaskIdMap[projectId]
+			dbStart := GetReadDB(context.Background())
+			var ReviewInMv int32
+			dbStart.Model(gorm_model.InfoAutoTask{}).Select("review_in_mv").Where("auto_task_id = ?", autoTaskId).First(&ReviewInMv)
+			//fmt.Println("t:", autoTaskInfo.ReviewInMv)
+			// 获取 projectId 对应的 taskId 及添加脚本自动审核时间
+			var taskInfos []gorm_model.YoungeeTaskInfo
+			db1.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_status = 2 AND task_stage = 8", projectId).Find(&taskInfos)
+			for _, taskInfo := range taskInfos {
+				//fmt.Println("TaskID:", taskInfo.TaskId)
+				db2 := GetReadDB(context.Background())
+				var scriptInfos gorm_model.YounggeeScriptInfo
+				db2.Model(gorm_model.YounggeeScriptInfo{}).Where("task_id = ? AND is_submit = ? AND is_review = ? ", taskInfo.TaskId, 1, 0).Find(&scriptInfos)
+				dd, _ := time.ParseDuration(conv.MustString(ReviewInMv, "") + "h")
+				if scriptInfos.AutoAgreeAt.IsZero() {
+					db3 := GetReadDB(context.Background())
+					db3.Model(gorm_model.YounggeeScriptInfo{}).Where("task_id = ?", taskInfo.TaskId).
+						Updates(&gorm_model.YounggeeScriptInfo{AutoAgreeAt: scriptInfos.SubmitAt.Add(dd)})
+					fmt.Println("已添加脚本自动审核时间")
+				}
+			}
+		}
+		//fmt.Println("taskId:", taskId)
+
+		// 2. 查询scriptInfo表中应该被自动审稿的脚本
+		var newScriptInfos []gorm_model.YounggeeScriptInfo
+		db3 := GetReadDB(context.Background())
+		err = db3.Model(gorm_model.YounggeeScriptInfo{}).Where("auto_agree_at <= ? AND is_submit = ? AND is_review = ? ", time.Now(), 1, 0).Find(&newScriptInfos).Error
+		if err != nil {
+			log.Println("DB GetAutoReviewTask error in script:", err)
+			return err
+		}
+		// 记录其task_id
+		var taskIds []string
+		for _, scriptInfo := range newScriptInfos {
+			taskIds = append(taskIds, scriptInfo.TaskID)
+		}
+		// 3. 执行审核脚本操作
+		// 1). 更新scriptInfo表
+		db4 := GetReadDB(context.Background())
+		err = db4.Model(gorm_model.YounggeeScriptInfo{}).Where("auto_agree_at <= ? AND is_submit = ? AND is_review = ? ", time.Now(), 1, 0).Updates(
+			&gorm_model.YounggeeScriptInfo{AgreeAt: time.Now(), IsReview: 1, IsOk: 1}).Error
+		if err != nil {
+			log.Println("DB GetAutoReviewTask error in script:", err)
+			return err
+		}
+		var num int64
+		db4.Model(gorm_model.YounggeeScriptInfo{}).Where("auto_agree_at <= ? AND is_submit = ? AND is_review = ? ", time.Now(), 1, 0).Count(&num)
+		if num != 0 {
+			fmt.Println("自动审核脚本:已更新scriptInfo表")
+		}
+		// 2).更新taskInfo表
+		db5 := GetReadDB(context.Background())
+		err = db5.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", taskIds).Updates(
+			&gorm_model.YoungeeTaskInfo{ScriptStatus: 5, TaskStage: 9}).Error
+		if err != nil {
+			log.Println("DB GetAutoReviewTask error in script:", err)
+			return err
+		}
+		for _, taskId := range taskIds {
+			err = CreateTaskLog(context.Background(), taskId, "脚本通过")
+			if err != nil {
+				logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
+			}
+
+			err = CreateMessageByTaskId(context.Background(), 2, 1, taskId)
+			if err != nil {
+				logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
+			}
+		}
+		if len(taskIds) != 0 {
+			fmt.Println("以下任务状态需要变更:", taskIds)
+			fmt.Println("自动审核脚本:已更新taskInfo表,任务阶段为待传链接 及脚本上传状态为已通过")
+		}
+		return nil
+	} else {
+		// 项目内容形式为图文
+		// 1. 补全sketchInfo表中的自动审核初稿时间
+		err := db.Model(gorm_model.ProjectInfo{}).Where("project_type = ? AND project_status = 9", 1).Find(&projectInfos).Error
+		if err != nil {
+			return err
+		}
+		var projectIds []string
+		projectIdToAutoTaskIdMap := map[string]int{}
+		for _, projectInfo := range projectInfos {
+			projectIds = append(projectIds, projectInfo.ProjectID)
+			projectIdToAutoTaskIdMap[projectInfo.ProjectID] = int(projectInfo.AutoTaskID)
+		}
+		//fmt.Println("projectIds:", projectIds)
+		db1 := GetReadDB(context.Background())
+		for _, projectId := range projectIds {
+			// 获取 autoTaskId 及其对应的限制时间、
+			autoTaskId := projectIdToAutoTaskIdMap[projectId]
+			dbStart := GetReadDB(context.Background())
+			var ReviewUnlimited int32
+			dbStart.Model(gorm_model.InfoAutoTask{}).Select("review_unlimited").Where("auto_task_id = ?", autoTaskId).First(&ReviewUnlimited)
+			//fmt.Println("t:", autoTaskInfo.ReviewUnlimited)
+			var taskInfos []gorm_model.YoungeeTaskInfo
+			db1.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_status = 2 AND task_stage = 10", projectId).Find(&taskInfos)
+			for _, taskInfo := range taskInfos {
+				db2 := GetReadDB(context.Background())
+				var sketchInfo gorm_model.YounggeeSketchInfo
+				db2.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id = ? AND is_submit = ? AND is_review = ? ", taskInfo.TaskId, 1, 0).Find(&sketchInfo)
+				dd, _ := time.ParseDuration(conv.MustString(ReviewUnlimited, "") + "h")
+				if sketchInfo.AutoAgreeAt.IsZero() {
+					db3 := GetReadDB(context.Background())
+					db3.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id = ?", sketchInfo.TaskID).Updates(&gorm_model.YounggeeSketchInfo{
+						AutoAgreeAt: sketchInfo.SubmitAt.Add(dd),
+					})
+					fmt.Println("已添加初稿自动审核时间")
+				}
+			}
+		}
+		// 2. 查询sketchInfo表中应该被自动审稿的初稿
+		var newSketchInfos []gorm_model.YounggeeSketchInfo
+		db3 := GetReadDB(context.Background())
+		err = db3.Model(gorm_model.YounggeeSketchInfo{}).Where("auto_agree_at <= ? AND is_submit = ? AND is_review = ? ", time.Now(), 1, 0).Find(&newSketchInfos).Error
+		if err != nil {
+			log.Println("DB GetAutoReviewTask error in sketch:", err)
+			return err
+		}
+		// 记录其task_id
+		var taskIds []string
+		for _, sketchInfo := range newSketchInfos {
+			taskIds = append(taskIds, sketchInfo.TaskID)
+		}
+		// 3. 执行审核初稿操作
+		// 1). 更新sketchInfo表
+		db4 := GetReadDB(context.Background())
+		err = db4.Model(gorm_model.YounggeeSketchInfo{}).Where("auto_agree_at <= ? AND is_submit = ? AND is_review = ? ", time.Now(), 1, 0).Updates(
+			&gorm_model.YounggeeSketchInfo{AgreeAt: time.Now(), IsReview: 1, IsOk: 1}).Error
+		if err != nil {
+			log.Println("DB GetAutoReviewTask error in sketch:", err)
+			return err
+		}
+		var num int64
+		db4.Model(gorm_model.YounggeeSketchInfo{}).Where("auto_agree_at <= ? AND is_submit = ? AND is_review = ? ", time.Now(), 1, 0).Count(&num)
+		if num != 0 {
+			fmt.Println("自动审核初稿:已更新sketchInfo表")
+		}
+		// 2).更新taskInfo表
+		db5 := GetReadDB(context.Background())
+		err = db5.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", taskIds).Updates(
+			&gorm_model.YoungeeTaskInfo{SketchStatus: 5, TaskStage: 11}).Error
+		if err != nil {
+			log.Println("DB GetAutoReviewTask error in sketch:", err)
+			return err
+		}
+		for _, taskId := range taskIds {
+			err = CreateTaskLog(context.Background(), taskId, "初稿通过")
+			if err != nil {
+				logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
+			}
+			err = CreateMessageByTaskId(context.Background(), 3, 1, taskId)
+			if err != nil {
+				logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
+			}
+		}
+		if len(taskIds) != 0 {
+			fmt.Println("以下任务状态需要变更:", taskIds)
+			fmt.Println("自动审核初稿:已更新taskInfo表,任务阶段为待传链接 及初稿上传状态为已通过")
+		}
+		return nil
+	}
+}
+
+func GetAutoPostReviewTask() error {
+	// 1. 补全linkInfo表中的自动审核链接时间
+	db := GetReadDB(context.Background())
+	var projectInfos []*gorm_model.ProjectInfo
+	err := db.Model(gorm_model.ProjectInfo{}).Where("project_type = ? AND project_status = 9", 1).Find(&projectInfos).Error
+	if err != nil {
+		return err
+	}
+	var projectIds []string
+	projectIdToAutoTaskIdMap := map[string]int{}
+	for _, projectInfo := range projectInfos {
+		projectIds = append(projectIds, projectInfo.ProjectID)
+		projectIdToAutoTaskIdMap[projectInfo.ProjectID] = int(projectInfo.AutoTaskID)
+	}
+	//fmt.Println("projectIds:", projectIds)
+	db1 := GetReadDB(context.Background())
+	for _, projectId := range projectIds {
+		// 获取 autoTaskId 及其对应的限制时间、
+		autoTaskId := projectIdToAutoTaskIdMap[projectId]
+		dbStart := GetReadDB(context.Background())
+		var Postreview int32
+		dbStart.Model(gorm_model.InfoAutoTask{}).Select("postreview").Where("auto_task_id = ?", autoTaskId).First(&Postreview)
+		//fmt.Println("t:", autoTaskInfo.Postreview)
+		var taskInfos []gorm_model.YoungeeTaskInfo
+		db1.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_status = 2 AND task_stage = 12", projectId).Find(&taskInfos)
+		for _, taskInfo := range taskInfos {
+			db2 := GetReadDB(context.Background())
+			var linkInfos gorm_model.YounggeeLinkInfo
+			db2.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id = ? AND is_submit = ? AND is_review = ? ", taskInfo.TaskId, 1, 0).Find(&linkInfos)
+			dd, _ := time.ParseDuration(conv.MustString(Postreview, "") + "h")
+			if linkInfos.AutoAgreeAt.IsZero() && linkInfos.IsSubmit == 1 {
+				db3 := GetReadDB(context.Background())
+				db3.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id = ?", linkInfos.TaskID).Updates(&gorm_model.YounggeeLinkInfo{AutoAgreeAt: linkInfos.SubmitAt.Add(dd)})
+				fmt.Println("已添加链接自动审核时间")
+			}
+		}
+	}
+
+	// 2. 查询linkInfo表中应该被自动审稿的链接
+	var newLinkInfos []gorm_model.YounggeeLinkInfo
+	db3 := GetReadDB(context.Background())
+	err = db3.Model(gorm_model.YounggeeLinkInfo{}).Where("auto_agree_at <= ? AND is_submit = ? AND is_review = ? ", time.Now(), 1, 0).Find(&newLinkInfos).Error
+	if err != nil {
+		log.Println("DB GetAutoPostReviewTask error in link:", err)
+		return err
+	}
+	// 记录其task_id
+	var taskIds []string
+	for _, linkInfo := range newLinkInfos {
+		taskIds = append(taskIds, linkInfo.TaskID)
+	}
+	// 3. 执行审核链接操作
+	// 1). 更新linkInfo表
+	db4 := GetReadDB(context.Background())
+	err = db4.Model(gorm_model.YounggeeLinkInfo{}).Where("auto_agree_at <= ? AND is_submit = ? AND is_review = ? ", time.Now(), 1, 0).Updates(
+		&gorm_model.YounggeeLinkInfo{AgreeAt: time.Now(), IsReview: 1, IsOk: 1}).Error
+	if err != nil {
+		log.Println("DB GetAutoPostReviewTask error in link:", err)
+		return err
+	}
+	var num int64
+	db4.Model(gorm_model.YounggeeLinkInfo{}).Where("auto_agree_at <= ? AND is_submit = ? AND is_review = ? ", time.Now(), 1, 0).Count(&num)
+	if num != 0 {
+		fmt.Println("自动审核链接:已更新linkInfo表")
+	}
+	// 2).更新taskInfo表
+	db5 := GetReadDB(context.Background())
+	err = db5.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", taskIds).Updates(
+		&gorm_model.YoungeeTaskInfo{LinkStatus: 5, TaskStage: 13}).Error
+	if err != nil {
+		log.Println("DB GetAutoPostReviewTask error in link:", err)
+		return err
+	}
+	for _, taskId := range taskIds {
+		err = CreateTaskLog(context.Background(), taskId, "链接通过")
+		if err != nil {
+			logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
+		}
+		err = CreateMessageByTaskId(context.Background(), 4, 1, taskId)
+		if err != nil {
+			logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
+		}
+	}
+	if len(taskIds) != 0 {
+		fmt.Println("以下任务状态需要变更:", taskIds)
+		fmt.Println("自动审核链接:已更新taskInfo表,任务阶段为待传链接 及链接上传状态为已通过")
+	}
+	return nil
+}
+
+func GetAutoCaseCloseTask() error {
+	// 1. 补全dataInfo表中的自动审核数据时间
+	db := GetReadDB(context.Background())
+	var projectInfos []*gorm_model.ProjectInfo
+	err := db.Model(gorm_model.ProjectInfo{}).Where("project_type = ? AND project_status = 9", 1).Find(&projectInfos).Error
+	if err != nil {
+		return err
+	}
+	var projectIds []string
+	projectIdToAutoTaskIdMap := map[string]int{}
+	for _, projectInfo := range projectInfos {
+		projectIds = append(projectIds, projectInfo.ProjectID)
+		projectIdToAutoTaskIdMap[projectInfo.ProjectID] = int(projectInfo.AutoTaskID)
+	}
+	//fmt.Println("projectIds:", projectIds)
+	db1 := GetReadDB(context.Background())
+	for _, projectId := range projectIds {
+		// 获取 autoTaskId 及其对应的限制时间、
+		autoTaskId := projectIdToAutoTaskIdMap[projectId]
+		dbStart := GetReadDB(context.Background())
+		var CaseClose int32
+		dbStart.Model(gorm_model.InfoAutoTask{}).Select("case_close").Where("auto_task_id = ?", autoTaskId).First(&CaseClose)
+		//fmt.Println("t:", autoTaskInfo.CaseClose)
+		var taskInfos []gorm_model.YoungeeTaskInfo
+		db1.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_status = 2 AND task_stage = 14", projectId).Find(&taskInfos)
+		for _, taskInfo := range taskInfos {
+			db2 := GetReadDB(context.Background())
+			var dataInfos gorm_model.YounggeeDataInfo
+			db2.Model(gorm_model.YounggeeDataInfo{}).Where("task_id = ? AND is_submit = ? AND is_review = ? ", taskInfo.TaskId, 1, 0).Find(&dataInfos)
+			dd, _ := time.ParseDuration(conv.MustString(CaseClose, "") + "h")
+			if dataInfos.AutoAgreeAt.IsZero() && dataInfos.IsSubmit == 1 {
+				db3 := GetReadDB(context.Background())
+				db3.Model(gorm_model.YounggeeDataInfo{}).Where("task_id = ?", dataInfos.TaskID).Updates(&gorm_model.YounggeeDataInfo{AutoAgreeAt: dataInfos.SubmitAt.Add(dd)})
+				fmt.Println("已添加数据自动审核时间")
+			}
+		}
+	}
+
+	// 2. 查询dataInfo表中应该被自动审稿的数据
+	var newDataInfos []gorm_model.YounggeeDataInfo
+	db3 := GetReadDB(context.Background())
+	err = db3.Model(gorm_model.YounggeeDataInfo{}).Where("auto_agree_at <= ? AND is_submit = ? AND is_review = ? ", time.Now(), 1, 0).Find(&newDataInfos).Error
+	if err != nil {
+		log.Println("DB GetAutoCaseCloseTask error in data:", err)
+		return err
+	}
+	// 记录其task_id
+	taskIdToDataInfoMap := map[string]gorm_model.YounggeeDataInfo{}
+	taskIdToTaskInfoMap := map[string]gorm_model.YoungeeTaskInfo{}
+	var taskIds []string
+	db6 := GetReadDB(context.Background())
+	for _, dataInfo := range newDataInfos {
+		taskIdToDataInfoMap[dataInfo.TaskID] = dataInfo
+		taskIds = append(taskIds, dataInfo.TaskID)
+		taskInfo := gorm_model.YoungeeTaskInfo{}
+		err = db6.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", dataInfo.TaskID).Find(&taskInfo).Error
+		if err != nil {
+			log.Println("DB GetAutoCaseCloseTask error in data:", err)
+			return err
+		}
+		taskIdToTaskInfoMap[dataInfo.TaskID] = taskInfo
+	}
+	// 3. 执行审核数据操作
+	// 1). 更新dataInfo表
+	db4 := GetReadDB(context.Background())
+	err = db4.Model(gorm_model.YounggeeDataInfo{}).Where("auto_agree_at <= ? AND is_submit = ? AND is_review = ? ", time.Now(), 1, 0).Updates(
+		&gorm_model.YounggeeDataInfo{AgreeAt: time.Now(), IsReview: 1, IsOk: 1}).Error
+	if err != nil {
+		log.Println("DB GetAutoCaseCloseTask error in data:", err)
+		return err
+	}
+	var num int64
+	db4.Model(gorm_model.YounggeeDataInfo{}).Where("auto_agree_at <= ? AND is_submit = ? AND is_review = ? ", time.Now(), 1, 0).Count(&num)
+	if num != 0 {
+		fmt.Println("自动审核数据:已更新dataInfo表")
+	}
+	// 2).更新taskInfo表
+	db5 := GetReadDB(context.Background())
+	err = db5.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", taskIds).Updates(
+		&gorm_model.YoungeeTaskInfo{DataStatus: 5, TaskStage: 15, CompleteDate: time.Now(), CompleteStatus: 2, WithdrawStatus: 2}).Error
+	if err != nil {
+		log.Println("DB GetAutoCaseCloseTask error in data:", err)
+		return err
+	}
+	for _, taskId := range taskIds {
+		err = CreateTaskLog(context.Background(), taskId, "数据通过")
+		if err != nil {
+			logrus.WithContext(context.Background()).Errorf("[auto] call CreateTaskLog error,err:%+v", err)
+		}
+		err = CreateMessageByTaskId(context.Background(), 5, 1, taskId)
+		if err != nil {
+			logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
+		}
+	}
+	err = SetTalentIncome(context.Background(), taskIds)
+	if err != nil {
+		logrus.WithContext(context.Background()).Errorf("[auto] call SetTalentIncome error,err:%+v", err)
+	}
+	if len(taskIds) != 0 {
+		fmt.Println("以下任务状态需要变更:", taskIds)
+		fmt.Println("自动审核数据:已更新taskInfo表,任务阶段为待传数据 及数据上传状态为已通过")
+	}
+
+	// 3). 创建任务收益并更新recruitStrategy表
+	for _, taskId := range taskIds {
+		taskInfo := taskIdToTaskInfoMap[taskId]
+		dataInfo := taskIdToDataInfoMap[taskId]
+		db7 := GetReadDB(context.Background())
+
+		//查询project_info
+		projectInfo := gorm_model.ProjectInfo{}
+		err1 := db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", taskInfo.ProjectId).Scan(&projectInfo).Error
+		if err1 != nil {
+			log.Println("DB GetAutoCaseCloseTask error in data:", err)
+			return err1
+		}
+		// 2. 创建任务收益
+		var productStruct gorm_model.YounggeeProduct
+		if err = json.Unmarshal([]byte(projectInfo.ProductSnap), &productStruct); err != nil {
+			log.Println("DB GetAutoCaseCloseTask error in data:", err)
+			return err
+		}
+		t := time.Now()
+		income := gorm_model.YounggeeTalentIncome{
+			TalentID:       taskInfo.TalentId,
+			ProjectID:      taskInfo.ProjectId,
+			SectaskID:      taskInfo.TaskId,
+			BrandName:      productStruct.BrandName,
+			TaskName:       projectInfo.ProjectName,
+			Income:         strconv.FormatFloat(taskInfo.SettleAmount, 'f', 10, 32),
+			IncomeType:     1,
+			WithdrawStatus: 1,
+			IncomeAt:       &t,
+			WithdrawAt:     nil,
+		}
+		err = CreateIncome(context.Background(), income, nil)
+		if err != nil {
+			log.Println("DB GetAutoCaseCloseTask error in data:", err)
+			return err
+		}
+
+		// 更新招募策略
+		db7 = db7.Model(gorm_model.RecruitStrategy{}).Where("project_id = ? and strategy_id = ?", taskInfo.ProjectId, taskInfo.StrategyId)
+		fansCount, _ := strconv.Atoi(conv.MustString(gjson.Get(taskInfo.TalentPlatformInfoSnap, "fans_count"), ""))
+		err = db7.Updates(map[string]interface{}{
+			"fan_number":     gorm.Expr("fan_number + ?", fansCount),
+			"play_number":    gorm.Expr("play_number + ?", dataInfo.PlayNumber),
+			"like_number":    gorm.Expr("like_number + ?", dataInfo.LikeNumber),
+			"collect_number": gorm.Expr("collect_number + ?", dataInfo.CollectNumber),
+			"comment_number": gorm.Expr("comment_number + ?", dataInfo.CommentNumber),
+			"finish_number":  gorm.Expr("finish_number + 1"),
+			"total_offer":    gorm.Expr("total_offer + ?", taskInfo.RealPayment)}).Error
+		if err != nil {
+			log.Println("DB GetAutoCaseCloseTask error in data:", err)
+			return err
+		}
+	}
+
+	// 4. 判断是否全部任务已结案,若已全部结案则触发项目结案
+	// 查询 task_stage < 15 的任务数量
+	for _, projectInfo := range projectInfos {
+		var unFinishedTaskNumber int64
+		db8 := GetReadDB(context.Background())
+		err = db8.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2 and task_stage < 15", projectInfo.ProjectID).Count(&unFinishedTaskNumber).Error
+		if err != nil {
+			log.Println("DB GetAutoCaseCloseTask error in data:", err)
+			return err
+		}
+		var finishedNum int64
+		db8.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2 and task_stage >= 15", projectInfo.ProjectID).Count(&finishedNum)
+		if unFinishedTaskNumber == 0 && finishedNum != 0 {
+			// 若为0则触发项目结案
+			db9 := GetReadDB(context.Background())
+			// 2. 释放企业账户因项目冻结的资金
+			// 	1). 计算剩余资金
+			var allPayment float64
+			var realPayment float64
+			err = db9.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2 and task_stage >= 15", projectInfo.ProjectID).
+				Pluck("COALESCE(SUM(all_payment), 0) as allPayment", &allPayment).Error
+			if err != nil {
+				log.Println("DB GetAutoCaseCloseTask error in data:", err)
+				return err
+			}
+			err = db9.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2 and task_stage >= 15", projectInfo.ProjectID).
+				Pluck("COALESCE(SUM(real_payment), 0) as realPayment", &realPayment).Error
+			if err != nil {
+				log.Println("DB GetAutoCaseCloseTask error in data:", err)
+				return err
+			}
+			fmt.Println("企业应支付金额总计:", allPayment, "实际支付总计:", realPayment)
+
+			// 	2). 释放剩余资金
+			err = db9.Model(gorm_model.Enterprise{}).Where("enterprise_id = ?", projectInfo.EnterpriseID).Updates(
+				map[string]interface{}{
+					"frozen_balance":    gorm.Expr("frozen_balance - ?", allPayment),
+					"balance":           gorm.Expr("balance - ?", realPayment),
+					"available_balance": gorm.Expr("available_balance + ?", allPayment-realPayment)}).Error
+			if err != nil {
+				log.Println("DB GetAutoCaseCloseTask error in data:", err)
+				return err
+			}
+			// 1. 更新项目状态为已结束
+			t := time.Now()
+			err := db9.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectInfo.ProjectID).
+				Updates(map[string]interface{}{"project_status": 10, "payment_amount": realPayment, "finish_at": &t}).Error
+			if err != nil {
+				log.Println("DB GetAutoCaseCloseTask error in data:", err)
+				return err
+			}
+		}
+	}
+	return nil
+}
+
+func GetAutoInvalidTask() error {
+	db := GetReadDB(context.Background())
+	var projectInfos []*gorm_model.ProjectInfo
+	err := db.Model(gorm_model.ProjectInfo{}).Where("project_type = ? AND project_status = ? ", 1, 6).Find(&projectInfos).Error
+	if err != nil {
+		return err
+	}
+	var projectIds []string
+	projectIdToAutoTaskIdMap := map[string]int{}
+	for _, projectInfo := range projectInfos {
+		projectIds = append(projectIds, projectInfo.ProjectID)
+		projectIdToAutoTaskIdMap[projectInfo.ProjectID] = int(projectInfo.AutoTaskID)
+	}
+	for _, projectId := range projectIds {
+		// 获取 autoTaskId 及其对应的限制时间
+		autoTaskId := projectIdToAutoTaskIdMap[projectId]
+		dbStart := GetReadDB(context.Background())
+		var Invalid int32
+		dbStart.Model(gorm_model.InfoAutoTask{}).Select("invalid").Where("auto_task_id = ?", autoTaskId).First(&Invalid)
+		//fmt.Println("t:", autoTaskInfo.Invalid)
+		db1 := GetReadDB(context.Background())
+		project := gorm_model.ProjectInfo{}
+		db1.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectId).First(&project)
+		//if project.AutoFailAt.IsZero() {
+		//	dd, _ := time.ParseDuration(conv.MustString(Invalid, "") + "h")
+		//	t := project.RecruitDdl.Add(dd)
+		//	db2 := GetReadDB(context.Background())
+		//	db2.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectId).Updates(&gorm_model.ProjectInfo{AutoFailAt: &t})
+		//	fmt.Println("已添加失效自动处理时间")
+		//}
+
+		dd, _ := time.ParseDuration(conv.MustString(Invalid, "") + "h")
+		project.RecruitDdl.Add(dd)
+		t := project.RecruitDdl.Add(dd)
+		//fmt.Println("已存在的失效时间是否跟要添加的相等", project.AutoFailAt.Equal(t))
+		if project.AutoFailAt == nil || project.AutoFailAt.IsZero() {
+			db3 := GetReadDB(context.Background())
+			db3.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectId).Updates(&gorm_model.ProjectInfo{AutoFailAt: &t})
+			fmt.Println("已添加失效自动处理时间")
+		}
+
+		projectNeedMod := gorm_model.ProjectInfo{}
+		db2 := GetReadDB(context.Background())
+		db2 = db2.Where("project_id = ?", projectId).First(&projectNeedMod)
+		fmt.Println("失效自动处理时间为:", projectNeedMod.AutoFailAt)
+		if !projectNeedMod.AutoFailAt.IsZero() || projectNeedMod.AutoFailAt != nil {
+			fmt.Printf("项目 %v 失效自动处理时间不为空\n", projectNeedMod.ProjectID)
+			fmt.Println("距离失效自动处理时间还有:,项目当前状态为", projectNeedMod.AutoFailAt.Sub(time.Now()), projectNeedMod.ProjectStatus)
+			if projectNeedMod.AutoFailAt.Sub(time.Now()) <= 0 && projectNeedMod.ProjectStatus < 8 {
+				db4 := GetReadDB(context.Background())
+				t := time.Now()
+				err1 := db4.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectId).Updates(&gorm_model.ProjectInfo{ProjectStatus: 8, FinishAt: &t, FailReason: 1}).Error
+				if err1 != nil {
+					return err1
+				}
+				fmt.Println("已更新项目状态为超时未支付的失效状态")
+				dbT := GetReadDB(context.TODO())
+				dbT.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ?", projectId).Updates(gorm_model.YoungeeTaskInfo{TaskStage: 3, CompleteStatus: 3, CompleteDate: time.Now()})
+			}
+		}
+	}
+	return nil
+}
+
+// 图文-初稿超时违约判断
+func GetAutoDraftDefaultInPicTask() error {
+	db := GetReadDB(context.Background())
+	var projectInfos []*gorm_model.ProjectInfo
+	err := db.Model(gorm_model.ProjectInfo{}).Where("project_type = ? AND content_type = ? ", 1, 1).Find(&projectInfos).Error
+	if err != nil {
+		return err
+	}
+	var projectIds []string
+	projectIdToAutoTaskIdMap := map[string]int{}    // 项目id 对 定时任务id 的map
+	projectIdToAutoDefaultIdMap := map[string]int{} // 项目id 对 违约扣款设置id 的map
+	taskIdToFeeFormMap := make(map[string]int)      // taskId 对 稿费形式的 map
+	TaskIdToProjectId := make(map[string]string)    // taskId 对 项目id的 map
+	var taskNeedModIds []string                     // 首次提交初稿的任务记录id
+	var submitTaskNeedModIds []string               // 修改后提交初稿的任务记录id
+	// 构造map及list
+	for _, projectInfo := range projectInfos {
+		projectIds = append(projectIds, projectInfo.ProjectID)
+		projectIdToAutoTaskIdMap[projectInfo.ProjectID] = int(projectInfo.AutoTaskID)
+		projectIdToAutoDefaultIdMap[projectInfo.ProjectID] = int(projectInfo.AutoDefaultID)
+	}
+	for _, projectId := range projectIds {
+		db1 := GetReadDB(context.Background())
+
+		var taskInfos []gorm_model.YoungeeTaskInfo
+		db1.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_status = ? AND task_stage = ? AND cur_default_type = ? AND logistics_status = 3", projectId, 2, 9, 0).Find(&taskInfos)
+		for _, taskInfo := range taskInfos {
+			TaskIdToProjectId[taskInfo.TaskId] = projectId
+			taskNeedMod := gorm_model.YoungeeTaskInfo{}
+			db2 := GetReadDB(context.Background())
+			// 保存所有满足物流状态为 3 且 初稿上传状态为 1或 3 的任务记录的id
+			db2.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskInfo.TaskId).First(&taskNeedMod)
+			taskIdToFeeFormMap[taskInfo.TaskId] = taskInfo.FeeForm
+			if taskNeedMod.TaskStage == 9 && taskNeedMod.SketchStatus == 1 {
+				taskNeedModIds = append(taskNeedModIds, taskInfo.TaskId)
+			}
+			if taskNeedMod.TaskStage == 9 && taskNeedMod.SketchStatus == 3 {
+				submitTaskNeedModIds = append(submitTaskNeedModIds, taskInfo.TaskId)
+			}
+		}
+	}
+	// 判断应首次上传初稿的任务
+	for _, taskNeedModId := range taskNeedModIds {
+		// 获取 autoTaskId 及其对应的限制时间
+		autoTaskId := projectIdToAutoTaskIdMap[TaskIdToProjectId[taskNeedModId]]
+		dbStart := GetReadDB(context.Background())
+		var DraftDefaultInPic int32
+		dbStart.Model(gorm_model.InfoAutoTask{}).Select("draft_default_in_pic").Where("auto_task_id = ?", autoTaskId).First(&DraftDefaultInPic)
+		db3 := GetReadDB(context.Background())
+
+		taskLogisticNeedMod := gorm_model.YoungeeTaskLogistics{}
+		db3.Model(gorm_model.YoungeeTaskLogistics{}).Where("task_id = ?", taskNeedModId).First(&taskLogisticNeedMod)
+
+		// 查询违约扣款比例
+		autoDefaultHandle := gorm_model.InfoAutoDefaultHandle{}
+		db6 := GetReadDB(context.Background())
+		db6.Model(gorm_model.InfoAutoDefaultHandle{}).Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[TaskIdToProjectId[taskNeedModId]]).Find(&autoDefaultHandle)
+
+		var sketchDefaultRate int
+		var sketchErrRate int
+		if taskIdToFeeFormMap[taskNeedModId] == 1 { // 稿费形式为产品置换
+			sketchDefaultRate = autoDefaultHandle.SketchReplaceTimeOut
+			sketchErrRate = autoDefaultHandle.SketchReplaceNotUpload
+			// db6 := GetReadDB(context.Background())
+			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("sketch_replace_time_out", "sketch_replace_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[TaskIdToProjectId[taskNeedModId]]).Find(&autoDefaultHandle)
+		} else { // 稿费形式为其他
+			sketchDefaultRate = autoDefaultHandle.SketchOtherTimeOut
+			sketchErrRate = autoDefaultHandle.SketchOtherNotUpload
+			// db6 := GetReadDB(context.Background())
+			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("sketch_other_time_out", "sketch_other_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[TaskIdToProjectId[taskNeedModId]]).Find(&sketchDefaultRate, &sketchErrRate)
+		}
+
+		//	添加初稿违约自动处理时间
+		if taskLogisticNeedMod.Status == 1 && taskLogisticNeedMod.TaskID != "" && taskLogisticNeedMod.AutoSketchBreakAt == nil || taskLogisticNeedMod.AutoSketchBreakAt.IsZero() {
+			dd, _ := time.ParseDuration(conv.MustString(DraftDefaultInPic, "") + "h")
+			db4 := GetReadDB(context.Background())
+			t := taskLogisticNeedMod.SignedTime.Add(dd)
+			db4.Where("task_id = ?", taskNeedModId).Updates(&gorm_model.YoungeeTaskLogistics{
+				AutoSketchBreakAt: &t,
+			})
+			taskLogisticNeedMod.AutoSketchBreakAt = &t
+			fmt.Println("已添加图片初稿违约自动处理时间")
+		}
+
+		// 判断是否超时违约
+		if taskLogisticNeedMod.TaskID != "" && taskLogisticNeedMod.AutoSketchBreakAt.Sub(time.Now()) <= 0 {
+			// 超时违约处理
+			db5 := GetReadDB(context.Background())
+			err1 := db5.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
+				TaskID: taskLogisticNeedMod.TaskID, ProjectID: TaskIdToProjectId[taskNeedModId], BreakType: 2, BreakAt: time.Now(), DefaultStatus: 1}).Error
+			if err1 != nil {
+				return err1
+			}
+			taskInfo := gorm_model.YoungeeTaskInfo{}
+			dbt := GetReadDB(context.Background())
+			err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskLogisticNeedMod.TaskID).Find(&taskInfo).Error
+			if err2 != nil {
+				return err2
+			}
+			settleAmount := taskInfo.TaskReward * (1.0 - float64(taskInfo.LinkBreakRate+taskInfo.DataBreakRate+sketchDefaultRate+taskInfo.ScriptBreakRate)/100)
+			if settleAmount <= 0 {
+				settleAmount = 0.0
+			}
+			realPayment := taskInfo.AllPayment * (1.0 - float64(sketchErrRate)/100)
+			if realPayment <= 0 {
+				realPayment = 0.0
+			}
+			db8 := GetReadDB(context.Background())
+			db8.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskLogisticNeedMod.TaskID).Updates(
+				map[string]interface{}{
+					"cur_default_type":  3,
+					"sketch_break_rate": sketchDefaultRate,
+					"settle_amount":     settleAmount,
+					"err_break_rate":    sketchErrRate,
+					"real_payment":      realPayment,
+				})
+
+			err = CreateTaskLog(context.Background(), taskLogisticNeedMod.TaskID, "初稿逾期")
+			if err != nil {
+				logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
+			}
+			err = CreateMessageByTaskId(context.Background(), 22, 4, taskLogisticNeedMod.TaskID)
+			if err != nil {
+				logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
+			}
+			fmt.Println("已创建图文类型的初稿违约记录")
+		}
+	}
+	// 判断应修改后上传初稿的任务
+	for _, submitTaskNeedModId := range submitTaskNeedModIds {
+		// 获取 autoTaskId 及其对应的限制时间
+		db2 := GetReadDB(context.Background())
+		var DraftDefaultInMv int32
+		db2.Model(&gorm_model.InfoAutoTask{}).Select("draft_default_in_mv").Where("auto_task_id = ?", projectIdToAutoTaskIdMap[TaskIdToProjectId[submitTaskNeedModId]]).First(&DraftDefaultInMv)
+		dd, _ := time.ParseDuration(conv.MustString(DraftDefaultInMv, "") + "h")
+
+		// 查询违约扣款比例
+		autoDefaultHandle := gorm_model.InfoAutoDefaultHandle{}
+		db6 := GetReadDB(context.Background())
+		db6.Model(gorm_model.InfoAutoDefaultHandle{}).Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[TaskIdToProjectId[submitTaskNeedModId]]).Find(&autoDefaultHandle)
+
+		var sketchDefaultRate int
+		var sketchErrRate int
+		if taskIdToFeeFormMap[submitTaskNeedModId] == 1 {
+			sketchDefaultRate = autoDefaultHandle.SketchReplaceTimeOut
+			sketchErrRate = autoDefaultHandle.SketchReplaceNotUpload
+			// db6 := GetReadDB(context.Background())
+			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("sketch_replace_time_out", "sketch_replace_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[TaskIdToProjectId[submitTaskNeedModId]]).Find(&sketchDefaultRate, &sketchErrRate)
+		} else {
+			sketchDefaultRate = autoDefaultHandle.SketchOtherTimeOut
+			sketchErrRate = autoDefaultHandle.SketchOtherNotUpload
+			// db6 := GetReadDB(context.Background())
+			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("sketch_other_time_out", "sketch_other_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[TaskIdToProjectId[submitTaskNeedModId]]).Find(&sketchDefaultRate, &sketchErrRate)
+		}
+		//	添加初稿违约自动处理时间
+		db1 := GetReadDB(context.Background())
+		var taskSketchInfo gorm_model.YounggeeSketchInfo
+		db1.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id = ? and is_review = 1", submitTaskNeedModId).Order("reject_at desc").First(&taskSketchInfo)
+		if taskSketchInfo.AutoSketchBreakAt.IsZero() {
+			err4 := db1.Where("task_id = ?", submitTaskNeedModId).Updates(&gorm_model.YounggeeSketchInfo{AutoSketchBreakAt: taskSketchInfo.RejectAt.Add(dd)}).Error
+			if err4 != nil {
+				return err4
+			}
+			taskSketchInfo.AutoSketchBreakAt = taskSketchInfo.RejectAt.Add(dd)
+			fmt.Println("已添加图文形式的初稿违约自动处理时间")
+		}
+
+		// 判断是否违约
+		if taskSketchInfo.TaskID != "" && taskSketchInfo.AutoSketchBreakAt.Sub(time.Now()) <= 0 {
+			db4 := GetReadDB(context.Background())
+			err1 := db4.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
+				TaskID: submitTaskNeedModId, ProjectID: TaskIdToProjectId[submitTaskNeedModId], BreakType: 2, BreakAt: time.Now(), DefaultStatus: 1}).Error
+			if err1 != nil {
+				return err1
+			}
+			taskInfo := gorm_model.YoungeeTaskInfo{}
+			dbt := GetReadDB(context.Background())
+			err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitTaskNeedModId).Find(&taskInfo).Error
+			if err2 != nil {
+				return err2
+			}
+			settleAmount := taskInfo.TaskReward * (1.0 - float64(sketchDefaultRate+taskInfo.DataBreakRate+taskInfo.LinkBreakRate+taskInfo.ScriptBreakRate)/100)
+			if settleAmount <= 0 {
+				settleAmount = 0.
+			}
+			realPayment := taskInfo.AllPayment * (1.0 - float64(sketchErrRate)/100)
+			if realPayment <= 0 {
+				realPayment = 0.0
+			}
+			db3 := GetReadDB(context.Background())
+			err2 = db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitTaskNeedModId).Updates(
+				map[string]interface{}{
+					"cur_default_type":  3,
+					"sketch_break_rate": sketchDefaultRate,
+					"settle_amount":     settleAmount,
+					"err_break_rate":    sketchErrRate,
+					"real_payment":      realPayment,
+				}).Error
+			if err2 != nil {
+				return err2
+			}
+			err = CreateTaskLog(context.Background(), submitTaskNeedModId, "初稿逾期")
+			if err != nil {
+				logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
+			}
+			err = CreateMessageByTaskId(context.Background(), 22, 4, submitTaskNeedModId)
+			if err != nil {
+				logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
+			}
+			fmt.Println("创建已提交初稿的图文类型的初稿违约记录")
+		}
+	}
+	return nil
+}
+
+// GetAutoDraftDefaultInMvTask 视频-初稿超时违约判断
+func GetAutoDraftDefaultInMvTask() error {
+	db := GetReadDB(context.Background())
+	var projectInfos []*gorm_model.ProjectInfo
+	err := db.Model(gorm_model.ProjectInfo{}).Where("project_type = ? AND content_type = ? ", 1, 2).Find(&projectInfos).Error
+	if err != nil {
+		return err
+	}
+	var projectIds []string
+	// 任务id 对 项目id 的map
+	taskIdToProjectIdMap := map[string]string{}
+	// 项目id 对 定时任务id 的map
+	projectIdToAutoTaskIdMap := map[string]int{}
+	// 项目 id 对 违约定时任务 id 的 map
+	projectIdToAutoDefaultIdMap := map[string]int{}
+	// taskId 对 稿费形式的 map
+	taskIdToFeeFormMap := make(map[string]int)
+	var videoTaskIds []string
+	// 构造map及list
+	for _, projectInfo := range projectInfos {
+		projectIds = append(projectIds, projectInfo.ProjectID)
+		projectIdToAutoTaskIdMap[projectInfo.ProjectID] = int(projectInfo.AutoTaskID)
+		projectIdToAutoDefaultIdMap[projectInfo.ProjectID] = int(projectInfo.AutoDefaultID)
+
+		var videoTaskInfos []*gorm_model.YoungeeTaskInfo
+		db1 := GetReadDB(context.Background())
+		db1.Model(&gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_status = ? AND task_stage = ? AND cur_default_type = ? AND logistics_status = 3",
+			projectInfo.ProjectID, 2, 9, 0).Find(&videoTaskInfos)
+		for _, videoTaskInfo := range videoTaskInfos {
+			taskIdToProjectIdMap[videoTaskInfo.TaskId] = projectInfo.ProjectID
+			taskIdToFeeFormMap[videoTaskInfo.TaskId] = videoTaskInfo.FeeForm
+			videoTaskIds = append(videoTaskIds, videoTaskInfo.TaskId)
+		}
+	}
+
+	// 首次提交初稿的任务记录id
+	var videoTaskNeedModIds []string
+	// 已提交初稿的任务记录id
+	var submitVideoTaskNeedModIds []string
+	for _, videoTaskId := range videoTaskIds {
+		var taskInfo gorm_model.YoungeeTaskInfo
+		db3 := GetReadDB(context.Background())
+		// 保存所有初稿上传状态为 1  且任务阶段为9 的任务记录的id
+		db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", videoTaskId).First(&taskInfo)
+		if taskInfo.SketchStatus == 1 && taskInfo.TaskStage == 9 {
+			videoTaskNeedModIds = append(videoTaskNeedModIds, videoTaskId)
+		}
+		// 保存所有初稿上传状态为 3  且任务阶段为9 的任务记录的id
+		if taskInfo.SketchStatus == 3 && taskInfo.TaskStage == 9 {
+			submitVideoTaskNeedModIds = append(submitVideoTaskNeedModIds, videoTaskId)
+		}
+	}
+	// 判断应首次提交初稿的任务
+	for _, videoTaskNeedModId := range videoTaskNeedModIds {
+		db2 := GetReadDB(context.Background())
+		var DraftDefaultInMv int32
+		db2.Model(&gorm_model.InfoAutoTask{}).Select("draft_default_in_mv").Where("auto_task_id = ?", projectIdToAutoTaskIdMap[taskIdToProjectIdMap[videoTaskNeedModId]]).First(&DraftDefaultInMv)
+		dd, _ := time.ParseDuration(conv.MustString(DraftDefaultInMv, "") + "h")
+
+		autoDefaultHandle := gorm_model.InfoAutoDefaultHandle{}
+		db6 := GetReadDB(context.Background())
+		db6.Model(gorm_model.InfoAutoDefaultHandle{}).Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[videoTaskNeedModId]]).Find(&autoDefaultHandle)
+
+		var sketchDefaultRate int
+		var sketchErrRate int
+		if taskIdToFeeFormMap[videoTaskNeedModId] == 1 {
+			sketchDefaultRate = autoDefaultHandle.SketchReplaceTimeOut
+			sketchErrRate = autoDefaultHandle.SketchReplaceNotUpload
+			// db6 := GetReadDB(context.Background())
+			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("sketch_replace_time_out", "sketch_replace_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[videoTaskNeedModId]]).Find(&sketchDefaultRate, &sketchErrRate)
+		} else {
+			sketchDefaultRate = autoDefaultHandle.SketchOtherTimeOut
+			sketchErrRate = autoDefaultHandle.SketchOtherNotUpload
+			// db6 := GetReadDB(context.Background())
+			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("sketch_other_time_out", "sketch_other_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[videoTaskNeedModId]]).Find(&sketchDefaultRate, &sketchErrRate)
+		}
+		db1 := GetReadDB(context.Background())
+		var taskScriptInfo gorm_model.YounggeeScriptInfo
+		db1.Model(gorm_model.YounggeeScriptInfo{}).Where("task_id = ? AND is_ok = ?", videoTaskNeedModId, 1).Find(&taskScriptInfo)
+		if taskScriptInfo.AutoSketchBreakAt.IsZero() {
+			db1.Where("task_id = ?", videoTaskNeedModId).Updates(&gorm_model.YounggeeScriptInfo{AutoSketchBreakAt: taskScriptInfo.AgreeAt.Add(dd)})
+			taskScriptInfo.AutoSketchBreakAt = taskScriptInfo.AgreeAt.Add(dd)
+			fmt.Println("已添加视频形式的初稿违约自动处理时间")
+		}
+
+		if taskScriptInfo.TaskID != "" && taskScriptInfo.AutoSketchBreakAt.Sub(time.Now()) <= 0 {
+			db4 := GetReadDB(context.Background())
+			err1 := db4.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
+				TaskID: videoTaskNeedModId, ProjectID: taskIdToProjectIdMap[videoTaskNeedModId], BreakType: 2, BreakAt: time.Now(), DefaultStatus: 1}).Error
+			if err1 != nil {
+				return err1
+			}
+			taskInfo := gorm_model.YoungeeTaskInfo{}
+			dbt := GetReadDB(context.Background())
+			err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", videoTaskNeedModId).Find(&taskInfo).Error
+			if err2 != nil {
+				return err2
+			}
+			settleAmount := taskInfo.TaskReward * (1.0 - float64(taskInfo.LinkBreakRate+taskInfo.DataBreakRate+sketchDefaultRate+taskInfo.ScriptBreakRate)/100)
+			if settleAmount <= 0 {
+				settleAmount = 0.0
+			}
+			realPayment := taskInfo.AllPayment * (1.0 - float64(sketchErrRate)/100)
+			if realPayment <= 0 {
+				realPayment = 0.0
+			}
+			db3 := GetReadDB(context.Background())
+			err2 = db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", videoTaskNeedModId).Updates(
+				map[string]interface{}{
+					"cur_default_type":  3,
+					"sketch_break_rate": sketchDefaultRate,
+					"settle_amount":     settleAmount,
+					"err_break_rate":    sketchErrRate,
+					"real_payment":      realPayment,
+				}).Error
+			if err2 != nil {
+				return err2
+			}
+			err = CreateTaskLog(context.Background(), videoTaskNeedModId, "初稿逾期")
+			if err != nil {
+				logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
+			}
+			err = CreateMessageByTaskId(context.Background(), 22, 4, videoTaskNeedModId)
+			if err != nil {
+				logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
+			}
+			fmt.Println("已创建视频类型的初稿违约记录")
+		}
+	}
+
+	// 判断应修改后上传初稿的任务
+	for _, submitVideoTaskNeedModId := range submitVideoTaskNeedModIds {
+		db2 := GetReadDB(context.Background())
+		var DraftDefaultInMv int32
+		db2.Model(&gorm_model.InfoAutoTask{}).Select("draft_default_in_mv").Where("auto_task_id = ?", projectIdToAutoTaskIdMap[taskIdToProjectIdMap[submitVideoTaskNeedModId]]).First(&DraftDefaultInMv)
+		dd, _ := time.ParseDuration(conv.MustString(DraftDefaultInMv, "") + "h")
+
+		autoDefaultHandle := gorm_model.InfoAutoDefaultHandle{}
+		db6 := GetReadDB(context.Background())
+		db6.Model(gorm_model.InfoAutoDefaultHandle{}).Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[submitVideoTaskNeedModId]]).Find(&autoDefaultHandle)
+
+		var sketchDefaultRate int
+		var sketchErrRate int
+		if taskIdToFeeFormMap[submitVideoTaskNeedModId] == 1 {
+			sketchDefaultRate = autoDefaultHandle.SketchReplaceTimeOut
+			sketchErrRate = autoDefaultHandle.SketchReplaceNotUpload
+			// db6 := GetReadDB(context.Background())
+			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("sketch_replace_time_out", "sketch_replace_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[submitVideoTaskNeedModId]]).Find(&sketchDefaultRate, &sketchErrRate)
+		} else {
+			sketchDefaultRate = autoDefaultHandle.SketchOtherTimeOut
+			sketchErrRate = autoDefaultHandle.SketchOtherNotUpload
+			// db6 := GetReadDB(context.Background())
+			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("sketch_other_time_out", "sketch_other_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[submitVideoTaskNeedModId]]).Find(&sketchDefaultRate, &sketchErrRate)
+		}
+		db1 := GetReadDB(context.Background())
+		var taskSketchInfo gorm_model.YounggeeSketchInfo
+		db1.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id = ? and is_review = 1", submitVideoTaskNeedModId).Order("reject_at desc").First(&taskSketchInfo)
+		if taskSketchInfo.AutoSketchBreakAt.IsZero() {
+			err4 := db1.Where("task_id = ?", submitVideoTaskNeedModId).Updates(&gorm_model.YounggeeSketchInfo{AutoSketchBreakAt: taskSketchInfo.RejectAt.Add(dd)}).Error
+			if err4 != nil {
+				return err4
+			}
+			taskSketchInfo.AutoSketchBreakAt = taskSketchInfo.RejectAt.Add(dd)
+			fmt.Println("已添加视频形式的初稿违约自动处理时间")
+		}
+		if taskSketchInfo.TaskID != "" && taskSketchInfo.AutoSketchBreakAt.Sub(time.Now()) <= 0 {
+			db4 := GetReadDB(context.Background())
+			err1 := db4.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
+				TaskID: submitVideoTaskNeedModId, ProjectID: taskIdToProjectIdMap[submitVideoTaskNeedModId], BreakType: 2, BreakAt: time.Now(), DefaultStatus: 1}).Error
+			if err1 != nil {
+				return err1
+			}
+			taskInfo := gorm_model.YoungeeTaskInfo{}
+			dbt := GetReadDB(context.Background())
+			err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitVideoTaskNeedModId).Find(&taskInfo).Error
+			if err2 != nil {
+				return err2
+			}
+			settleAmount := taskInfo.TaskReward * (1.0 - float64(taskInfo.LinkBreakRate+taskInfo.DataBreakRate+sketchDefaultRate+taskInfo.ScriptBreakRate)/100)
+			if settleAmount <= 0 {
+				settleAmount = 0.0
+			}
+			realPayment := taskInfo.AllPayment * (1.0 - float64(sketchErrRate)/100)
+			if realPayment <= 0 {
+				realPayment = 0.0
+			}
+			db3 := GetReadDB(context.Background())
+			err2 = db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitVideoTaskNeedModId).Updates(
+				map[string]interface{}{
+					"cur_default_type":  3,
+					"sketch_break_rate": sketchDefaultRate,
+					"settle_amount":     settleAmount,
+					"err_break_rate":    sketchErrRate,
+					"real_payment":      realPayment,
+				}).Error
+			if err2 != nil {
+				return err2
+			}
+			err = CreateTaskLog(context.Background(), submitVideoTaskNeedModId, "初稿逾期")
+			if err != nil {
+				logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
+			}
+			err = CreateMessageByTaskId(context.Background(), 22, 4, submitVideoTaskNeedModId)
+			if err != nil {
+				logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
+			}
+			fmt.Println("创建已提交初稿的视频类型的初稿违约记录")
+		}
+	}
+	return nil
+}
+
+// GetAutoScriptDefaultTask 脚本超时违约判断
+func GetAutoScriptDefaultTask() error {
+	db := GetReadDB(context.Background())
+	var projectInfos []*gorm_model.ProjectInfo
+	err := db.Model(gorm_model.ProjectInfo{}).Where("project_type = ? AND content_type = ?", 1, 2).Find(&projectInfos).Error
+	if err != nil {
+		return err
+	}
+	var projectIds []string
+	// 任务id 对 项目id 的map
+	taskIdToProjectIdMap := map[string]string{}
+	// 项目id 对 定时任务id 的map
+	projectIdToAutoTaskIdMap := map[string]int{}
+	// 项目id 对 违约定时任务id 的map
+	projectIdToAutoDefaultIdMap := map[string]int{}
+	// taskId 对 稿费形式的 map
+	taskIdToFeeFormMap := make(map[string]int)
+	// 首次提交脚本的任务记录id
+	var videoTaskNeedModIds []string
+	// 已提交脚本的任务记录id
+	var submitVideoTaskNeedModIds []string
+	var videoTaskIds []string
+	// 构造map及list
+	for _, projectInfo := range projectInfos {
+		projectIds = append(projectIds, projectInfo.ProjectID)
+		projectIdToAutoTaskIdMap[projectInfo.ProjectID] = int(projectInfo.AutoTaskID)
+		projectIdToAutoDefaultIdMap[projectInfo.ProjectID] = int(projectInfo.AutoDefaultID)
+
+		var videoTaskInfos []*gorm_model.YoungeeTaskInfo
+		db1 := GetReadDB(context.Background())
+		db1.Model(&gorm_model.YoungeeTaskInfo{}).
+			Where("project_id = ?  AND task_status = ? AND task_stage = ? AND cur_default_type = ? AND logistics_status = 3", projectInfo.ProjectID, 2, 7, 0).Find(&videoTaskInfos)
+		for _, videoTaskInfo := range videoTaskInfos {
+			taskIdToProjectIdMap[videoTaskInfo.TaskId] = projectInfo.ProjectID
+			taskIdToFeeFormMap[videoTaskInfo.TaskId] = videoTaskInfo.FeeForm
+			videoTaskIds = append(videoTaskIds, videoTaskInfo.TaskId)
+		}
+	}
+	for _, videoTaskId := range videoTaskIds {
+		var taskInfo gorm_model.YoungeeTaskInfo
+		db3 := GetReadDB(context.Background())
+		// 保存所有脚本上传状态为 1  且任务状态为8 的任务记录的id
+		db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", videoTaskId).First(&taskInfo)
+		if taskInfo.ScriptStatus == 1 && taskInfo.TaskStage == 7 {
+			videoTaskNeedModIds = append(videoTaskNeedModIds, videoTaskId)
+		}
+		// 保存所有脚本上传状态为 3  且任务状态为8 的任务记录的id
+		if taskInfo.ScriptStatus == 3 && taskInfo.TaskStage == 7 {
+			submitVideoTaskNeedModIds = append(submitVideoTaskNeedModIds, videoTaskId)
+		}
+	}
+	// 判断应首次上传脚本的任务
+	for _, videoTaskNeedModId := range videoTaskNeedModIds {
+		db2 := GetReadDB(context.Background())
+		var ScriptDefault int32
+		db2.Model(&gorm_model.InfoAutoTask{}).Select("script_default").Where("auto_task_id = ?", projectIdToAutoTaskIdMap[taskIdToProjectIdMap[videoTaskNeedModId]]).First(&ScriptDefault)
+		dd, _ := time.ParseDuration(conv.MustString(ScriptDefault, "") + "h")
+		db1 := GetReadDB(context.Background())
+		var taskLogisticInfo gorm_model.YoungeeTaskLogistics
+		db1.Model(gorm_model.YoungeeTaskLogistics{}).Where("task_id = ?", videoTaskNeedModId).Find(&taskLogisticInfo)
+
+		autoDefaultHandle := gorm_model.InfoAutoDefaultHandle{}
+		db6 := GetReadDB(context.Background())
+		db6.Model(gorm_model.InfoAutoDefaultHandle{}).Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[videoTaskNeedModId]]).Find(&autoDefaultHandle)
+		//fmt.Printf("autoDefaultHandle%+v\n", autoDefaultHandle)
+		var scriptDefaultRate int
+		var scriptErrRate int
+		if taskIdToFeeFormMap[videoTaskNeedModId] == 1 {
+			scriptDefaultRate = autoDefaultHandle.ScriptReplaceTimeOut
+			scriptErrRate = autoDefaultHandle.ScriptReplaceNotUpload
+			// db6 := GetReadDB(context.Background())
+			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("script_replace_time_out", "script_replace_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[videoTaskNeedModId]]).Find(&scriptDefaultRate, &scriptErrRate)
+		} else {
+			scriptDefaultRate = autoDefaultHandle.ScriptOtherTimeOut
+			scriptErrRate = autoDefaultHandle.ScriptOtherNotUpload
+			// db6 := GetReadDB(context.Background())
+			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("script_other_time_out", "script_other_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[videoTaskNeedModId]]).Find(&scriptDefaultRate, &scriptErrRate)
+		}
+		if taskLogisticInfo.AutoScriptBreakAt == nil || taskLogisticInfo.AutoScriptBreakAt.IsZero() {
+			t := taskLogisticInfo.SignedTime.Add(dd)
+			db1.Where("task_id = ?", videoTaskNeedModId).Updates(&gorm_model.YoungeeTaskLogistics{AutoScriptBreakAt: &t})
+			fmt.Println("已添加视频形式的脚本违约自动处理时间")
+			if taskLogisticInfo.Status == 1 && taskLogisticInfo.TaskID != "" && taskLogisticInfo.SignedTime.Add(dd).Sub(time.Now()) <= 0 {
+				db4 := GetReadDB(context.Background())
+				err1 := db4.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
+					TaskID: videoTaskNeedModId, ProjectID: taskIdToProjectIdMap[videoTaskNeedModId], BreakType: 1, BreakAt: time.Now(), DefaultStatus: 1}).Error
+				if err1 != nil {
+					return err1
+				}
+				taskInfo := gorm_model.YoungeeTaskInfo{}
+				dbt := GetReadDB(context.Background())
+				err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", videoTaskNeedModId).Find(&taskInfo).Error
+				if err2 != nil {
+					return err2
+				}
+				settleAmount := taskInfo.TaskReward * (1.0 - float64(taskInfo.SketchBreakRate+taskInfo.DataBreakRate+taskInfo.LinkBreakRate+scriptDefaultRate)/100)
+				if settleAmount <= 0 {
+					settleAmount = 0.0
+				}
+				realPayment := taskInfo.AllPayment * (1.0 - float64(scriptErrRate)/100)
+				if realPayment <= 0 {
+					realPayment = 0.0
+				}
+				db3 := GetReadDB(context.Background())
+				err2 = db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", videoTaskNeedModId).Updates(
+					map[string]interface{}{
+						"cur_default_type":  1,
+						"sketch_break_rate": scriptDefaultRate,
+						"settle_amount":     settleAmount,
+						"err_break_rate":    scriptErrRate,
+						"real_payment":      realPayment,
+					}).Error
+				if err2 != nil {
+					return err2
+				}
+				err = CreateTaskLog(context.Background(), videoTaskNeedModId, "脚本逾期")
+				if err != nil {
+					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
+				}
+				err = CreateMessageByTaskId(context.Background(), 21, 4, videoTaskNeedModId)
+				if err != nil {
+					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
+				}
+				fmt.Println("创建时已违约则创建视频类型的脚本违约记录")
+			}
+		} else {
+			if taskLogisticInfo.Status == 1 && taskLogisticInfo.TaskID != "" && taskLogisticInfo.AutoScriptBreakAt.Sub(time.Now()) <= 0 {
+				db4 := GetReadDB(context.Background())
+				err1 := db4.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
+					TaskID: videoTaskNeedModId, ProjectID: taskIdToProjectIdMap[videoTaskNeedModId], BreakType: 1, BreakAt: time.Now(), DefaultStatus: 1}).Error
+				if err1 != nil {
+					return err1
+				}
+				taskInfo := gorm_model.YoungeeTaskInfo{}
+				dbt := GetReadDB(context.Background())
+				err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", videoTaskNeedModId).Find(&taskInfo).Error
+				if err2 != nil {
+					return err2
+				}
+				settleAmount := taskInfo.TaskReward * (1.0 - float64(taskInfo.SketchBreakRate+taskInfo.DataBreakRate+taskInfo.LinkBreakRate+scriptDefaultRate)/100)
+				if settleAmount <= 0 {
+					settleAmount = 0.0
+				}
+				realPayment := taskInfo.AllPayment * (1.0 - float64(scriptErrRate)/100)
+				if realPayment <= 0 {
+					realPayment = 0.0
+				}
+				fmt.Printf("脚本未上传扣款率: %+v\nrealPayment:%+v\n", scriptErrRate, realPayment)
+				db3 := GetReadDB(context.Background())
+				err2 = db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", videoTaskNeedModId).Updates(
+					map[string]interface{}{
+						"cur_default_type":  1,
+						"script_break_rate": scriptDefaultRate,
+						"settle_amount":     settleAmount,
+						"err_break_rate":    scriptErrRate,
+						"real_payment":      realPayment,
+					}).Error
+				if err2 != nil {
+					return err2
+				}
+				err = CreateTaskLog(context.Background(), videoTaskNeedModId, "脚本逾期")
+				if err != nil {
+					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
+				}
+				err = CreateMessageByTaskId(context.Background(), 21, 4, videoTaskNeedModId)
+				if err != nil {
+					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
+				}
+				fmt.Println("已创建视频类型的脚本违约记录")
+			}
+		}
+	}
+	// 根据最近一次拒绝时间判断当前是否违约
+	for _, submitVideoTaskNeedModId := range submitVideoTaskNeedModIds {
+		db2 := GetReadDB(context.Background())
+		var ScriptDefault int32
+		db2.Model(&gorm_model.InfoAutoTask{}).Select("script_default").Where("auto_task_id = ?", projectIdToAutoTaskIdMap[taskIdToProjectIdMap[submitVideoTaskNeedModId]]).First(&ScriptDefault)
+		dd, _ := time.ParseDuration(conv.MustString(ScriptDefault, "") + "h")
+		db1 := GetReadDB(context.Background())
+		var taskScriptInfo gorm_model.YounggeeScriptInfo
+		db1.Model(gorm_model.YounggeeScriptInfo{}).Where("task_id = ? and is_review = 1", submitVideoTaskNeedModId).Order("reject_at desc").First(&taskScriptInfo)
+
+		autoDefaultHandle := gorm_model.InfoAutoDefaultHandle{}
+		db6 := GetReadDB(context.Background())
+		db6.Model(gorm_model.InfoAutoDefaultHandle{}).Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[submitVideoTaskNeedModId]]).Find(&autoDefaultHandle)
+
+		var scriptDefaultRate int
+		var scriptErrRate int
+		if taskIdToFeeFormMap[submitVideoTaskNeedModId] == 1 {
+			scriptDefaultRate = autoDefaultHandle.ScriptReplaceTimeOut
+			scriptErrRate = autoDefaultHandle.ScriptReplaceNotUpload
+			// db6 := GetReadDB(context.Background())
+			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("script_replace_time_out", "script_replace_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[submitVideoTaskNeedModId]]).Find(&scriptDefaultRate, &scriptErrRate)
+		} else {
+			scriptDefaultRate = autoDefaultHandle.ScriptOtherTimeOut
+			scriptErrRate = autoDefaultHandle.ScriptOtherNotUpload
+			// db6 := GetReadDB(context.Background())
+			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("script_other_time_out", "script_other_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[submitVideoTaskNeedModId]]).Find(&scriptDefaultRate, &scriptErrRate)
+		}
+		if taskScriptInfo.AutoScriptBreakAt.IsZero() {
+			err4 := db1.Where("task_id = ?", submitVideoTaskNeedModId).Updates(&gorm_model.YounggeeScriptInfo{AutoScriptBreakAt: taskScriptInfo.RejectAt.Add(dd)}).Error
+			if err4 != nil {
+				return err4
+			}
+			fmt.Println("已添加视频形式的脚本违约自动处理时间")
+			if taskScriptInfo.TaskID != "" && taskScriptInfo.RejectAt.Add(dd).Sub(time.Now()) <= 0 {
+				db4 := GetReadDB(context.Background())
+				err1 := db4.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
+					TaskID: submitVideoTaskNeedModId, ProjectID: taskIdToProjectIdMap[submitVideoTaskNeedModId], BreakType: 1, BreakAt: time.Now(), DefaultStatus: 1}).Error
+				if err1 != nil {
+					return err1
+				}
+				taskInfo := gorm_model.YoungeeTaskInfo{}
+				dbt := GetReadDB(context.Background())
+				err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitVideoTaskNeedModId).Find(&taskInfo).Error
+				if err2 != nil {
+					return err2
+				}
+				settleAmount := taskInfo.TaskReward * (1.0 - float64(taskInfo.SketchBreakRate+taskInfo.DataBreakRate+taskInfo.LinkBreakRate+scriptDefaultRate)/100)
+				if settleAmount <= 0 {
+					settleAmount = 0.0
+				}
+				realPayment := taskInfo.AllPayment * (1.0 - float64(scriptErrRate)/100)
+				if realPayment <= 0 {
+					realPayment = 0.0
+				}
+				db3 := GetReadDB(context.Background())
+				err3 := db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitVideoTaskNeedModId).Updates(
+					map[string]interface{}{
+						"cur_default_type":  1,
+						"script_break_rate": scriptDefaultRate,
+						"settle_amount":     settleAmount,
+						"err_break_rate":    scriptErrRate,
+						"real_payment":      realPayment,
+					}).Error
+				if err3 != nil {
+					return err3
+				}
+				err = CreateTaskLog(context.Background(), submitVideoTaskNeedModId, "脚本逾期")
+				if err != nil {
+					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
+				}
+				err = CreateMessageByTaskId(context.Background(), 21, 4, submitVideoTaskNeedModId)
+				if err != nil {
+					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
+				}
+				fmt.Println("创建时已违约则创建已提交脚本的视频类型的脚本违约记录")
+			}
+		} else {
+			if taskScriptInfo.TaskID != "" && taskScriptInfo.AutoScriptBreakAt.Sub(time.Now()) <= 0 {
+				db4 := GetReadDB(context.Background())
+				err1 := db4.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
+					TaskID: submitVideoTaskNeedModId, ProjectID: taskIdToProjectIdMap[submitVideoTaskNeedModId], BreakType: 1, BreakAt: time.Now(), DefaultStatus: 1}).Error
+				if err1 != nil {
+					return err1
+				}
+				taskInfo := gorm_model.YoungeeTaskInfo{}
+				dbt := GetReadDB(context.Background())
+				err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitVideoTaskNeedModId).Find(&taskInfo).Error
+				if err2 != nil {
+					return err2
+				}
+				settleAmount := taskInfo.TaskReward * (1.0 - float64(taskInfo.SketchBreakRate+taskInfo.DataBreakRate+taskInfo.LinkBreakRate+scriptDefaultRate)/100)
+				if settleAmount <= 0 {
+					settleAmount = 0.0
+				}
+				realPayment := taskInfo.AllPayment * (1.0 - float64(scriptErrRate)/100)
+				if realPayment <= 0 {
+					realPayment = 0.0
+				}
+				db3 := GetReadDB(context.Background())
+				err3 := db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitVideoTaskNeedModId).Updates(
+					map[string]interface{}{
+						"cur_default_type":  1,
+						"sketch_break_rate": scriptDefaultRate,
+						"settle_amount":     settleAmount,
+						"err_break_rate":    scriptErrRate,
+						"real_payment":      realPayment,
+					}).Error
+				if err3 != nil {
+					return err3
+				}
+				err = CreateTaskLog(context.Background(), submitVideoTaskNeedModId, "脚本逾期")
+				if err != nil {
+					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
+				}
+				err = CreateMessageByTaskId(context.Background(), 21, 4, submitVideoTaskNeedModId)
+				if err != nil {
+					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
+				}
+				fmt.Println("创建已提交脚本的视频类型的脚本违约记录")
+			}
+		}
+	}
+	return nil
+}
+
+// GetAutoLinkBreachTask 链接超时违约判断
+func GetAutoLinkBreachTask() error {
+	db := GetReadDB(context.Background())
+	var projectInfos []*gorm_model.ProjectInfo
+	err := db.Model(gorm_model.ProjectInfo{}).Where("project_type = ?", 1).Find(&projectInfos).Error
+	if err != nil {
+		return err
+	}
+	var projectIds []string
+	// 任务id 对 项目id 的map
+	taskIdToProjectIdMap := map[string]string{}
+	// 项目id 对 定时任务id 的map
+	projectIdToAutoTaskIdMap := map[string]int{}
+	// 项目id 对 违约定时任务id 的map
+	projectIdToAutoDefaultIdMap := map[string]int{}
+	var taskIds []string
+	// taskId 对 稿费形式的 map
+	taskIdToFeeFormMap := make(map[string]int)
+	for _, projectInfo := range projectInfos {
+		projectIds = append(projectIds, projectInfo.ProjectID)
+		projectIdToAutoTaskIdMap[projectInfo.ProjectID] = int(projectInfo.AutoTaskID)
+		projectIdToAutoDefaultIdMap[projectInfo.ProjectID] = int(projectInfo.AutoDefaultID)
+
+		var taskInfos []*gorm_model.YoungeeTaskInfo
+		db1 := GetReadDB(context.Background())
+		db1.Model(&gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_status = ? AND task_stage = ? AND cur_default_type = ? ", projectInfo.ProjectID, 2, 11, 0).Find(&taskInfos)
+		for _, taskInfo := range taskInfos {
+			taskIdToProjectIdMap[taskInfo.TaskId] = projectInfo.ProjectID
+			taskIds = append(taskIds, taskInfo.TaskId)
+			taskIdToFeeFormMap[taskInfo.TaskId] = taskInfo.FeeForm
+		}
+	}
+	// 首次提交链接的任务记录id
+	var taskNeedModIds []string
+	// 已提交链接的任务记录id
+	var submitTaskNeedModIds []string
+	for _, taskId := range taskIds {
+		var taskInfo gorm_model.YoungeeTaskInfo
+		db3 := GetReadDB(context.Background())
+		// 保存所有链接上传状态为 1  且任务状态为12 的任务记录的id
+		db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).First(&taskInfo)
+		if taskInfo.LinkStatus == 1 && taskInfo.TaskStage == 11 {
+			taskNeedModIds = append(taskNeedModIds, taskId)
+		}
+		// 保存所有链接上传状态为 3  且任务状态为12 的任务记录的id
+		if taskInfo.LinkStatus == 3 && taskInfo.TaskStage == 11 {
+			submitTaskNeedModIds = append(submitTaskNeedModIds, taskId)
+		}
+	}
+	for _, taskNeedModId := range taskNeedModIds {
+		db2 := GetReadDB(context.Background())
+		var linkBreach int32
+		db2.Model(&gorm_model.InfoAutoTask{}).Select("link_breach").Where("auto_task_id = ?", projectIdToAutoTaskIdMap[taskIdToProjectIdMap[taskNeedModId]]).First(&linkBreach)
+		dd, _ := time.ParseDuration(conv.MustString(linkBreach, "") + "h")
+
+		autoDefaultHandle := gorm_model.InfoAutoDefaultHandle{}
+		db6 := GetReadDB(context.Background())
+		db6.Model(gorm_model.InfoAutoDefaultHandle{}).Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[taskNeedModId]]).Find(&autoDefaultHandle)
+
+		var linkDefaultRate int
+		var linkErrRate int
+		if taskIdToFeeFormMap[taskNeedModId] == 1 {
+			linkDefaultRate = autoDefaultHandle.LinkReplaceTimeOut
+			linkErrRate = autoDefaultHandle.LinkReplaceNotUpload
+			// db6 := GetReadDB(context.Background())
+			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("link_replace_time_out", "link_replace_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[taskNeedModId]]).Find(&linkDefaultRate, &linkErrRate)
+		} else {
+			linkDefaultRate = autoDefaultHandle.LinkOtherTimeOut
+			linkErrRate = autoDefaultHandle.LinkOtherNotUpload
+			// db6 := GetReadDB(context.Background())
+			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("link_other_time_out", "link_other_not_uploadsg").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[taskNeedModId]]).Find(&linkDefaultRate, &linkErrRate)
+		}
+		db1 := GetReadDB(context.Background())
+		var taskSketchInfo gorm_model.YounggeeSketchInfo
+		db1.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id = ? AND is_ok = ?", taskNeedModId, 1).Find(&taskSketchInfo)
+		if taskSketchInfo.AutoLinkBreakAt.IsZero() {
+			db1.Where("task_id = ?", taskNeedModId).Updates(&gorm_model.YounggeeSketchInfo{AutoLinkBreakAt: taskSketchInfo.AgreeAt.Add(dd)})
+			fmt.Println("已添加链接违约自动处理时间")
+			if taskSketchInfo.TaskID != "" && taskSketchInfo.AgreeAt.Add(dd).Sub(time.Now()) <= 0 {
+				db4 := GetReadDB(context.Background())
+				err1 := db4.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
+					TaskID: taskNeedModId, ProjectID: taskIdToProjectIdMap[taskNeedModId], BreakType: 3, BreakAt: time.Now(), DefaultStatus: 1}).Error
+				if err1 != nil {
+					return err1
+				}
+				taskInfo := gorm_model.YoungeeTaskInfo{}
+				dbt := GetReadDB(context.Background())
+				err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskNeedModId).Find(&taskInfo).Error
+				if err2 != nil {
+					return err2
+				}
+				settleAmount := taskInfo.TaskReward * (1.0 - float64(linkDefaultRate+taskInfo.DataBreakRate+taskInfo.SketchBreakRate+taskInfo.ScriptBreakRate)/100)
+				if settleAmount <= 0 {
+					settleAmount = 0.0
+				}
+				realPayment := taskInfo.AllPayment * (1.0 - float64(linkErrRate)/100)
+				if realPayment <= 0 {
+					realPayment = 0.0
+				}
+				db3 := GetReadDB(context.Background())
+				err2 = db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskNeedModId).Updates(
+					map[string]interface{}{
+						"cur_default_type": 5,
+						"link_break_rate":  linkDefaultRate,
+						"settle_amount":    settleAmount,
+						"err_break_rate":   linkErrRate,
+						"real_payment":     realPayment,
+					}).Error
+				if err2 != nil {
+					return err2
+				}
+				err = CreateTaskLog(context.Background(), taskNeedModId, "链接逾期")
+				if err != nil {
+					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
+				}
+				err = CreateMessageByTaskId(context.Background(), 23, 4, taskNeedModId)
+				if err != nil {
+					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
+				}
+				fmt.Println("创建时已违约则创建链接违约记录")
+			}
+		} else {
+			if taskSketchInfo.TaskID != "" && taskSketchInfo.AutoLinkBreakAt.Sub(time.Now()) <= 0 {
+				db4 := GetReadDB(context.Background())
+				err1 := db4.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
+					TaskID: taskNeedModId, ProjectID: taskIdToProjectIdMap[taskNeedModId], BreakType: 3, BreakAt: time.Now(), DefaultStatus: 1}).Error
+				if err1 != nil {
+					return err1
+				}
+				taskInfo := gorm_model.YoungeeTaskInfo{}
+				dbt := GetReadDB(context.Background())
+				err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskNeedModId).Find(&taskInfo).Error
+				if err2 != nil {
+					return err2
+				}
+				settleAmount := taskInfo.TaskReward * (1.0 - float64(linkDefaultRate+taskInfo.DataBreakRate+taskInfo.SketchBreakRate+taskInfo.ScriptBreakRate)/100)
+				if settleAmount <= 0 {
+					settleAmount = 0.0
+				}
+				realPayment := taskInfo.AllPayment * (1.0 - float64(linkErrRate)/100)
+				if realPayment <= 0 {
+					realPayment = 0.0
+				}
+				db3 := GetReadDB(context.Background())
+				err2 = db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskNeedModId).Updates(
+					map[string]interface{}{
+						"cur_default_type": 5,
+						"link_break_rate":  linkDefaultRate,
+						"settle_amount":    settleAmount,
+						"err_break_rate":   linkErrRate,
+						"real_payment":     realPayment,
+					}).Error
+				if err2 != nil {
+					return err2
+				}
+				err = CreateTaskLog(context.Background(), taskNeedModId, "链接逾期")
+				if err != nil {
+					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
+				}
+				err = CreateMessageByTaskId(context.Background(), 23, 4, taskNeedModId)
+				if err != nil {
+					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
+				}
+				fmt.Println("已创建链接违约记录")
+			}
+		}
+	}
+	// 根据最近一次拒绝时间判断当前是否违约
+	for _, submitTaskNeedModId := range submitTaskNeedModIds {
+		db2 := GetReadDB(context.Background())
+		var LinkBreach int32
+		db2.Model(&gorm_model.InfoAutoTask{}).Select("link_breach").Where("auto_task_id = ?", projectIdToAutoTaskIdMap[taskIdToProjectIdMap[submitTaskNeedModId]]).First(&LinkBreach)
+		dd, _ := time.ParseDuration(conv.MustString(LinkBreach, "") + "h")
+
+		autoDefaultHandle := gorm_model.InfoAutoDefaultHandle{}
+		db6 := GetReadDB(context.Background())
+		db6.Model(gorm_model.InfoAutoDefaultHandle{}).Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[submitTaskNeedModId]]).Find(&autoDefaultHandle)
+
+		var linkDefaultRate int
+		var linkErrRate int
+		if taskIdToFeeFormMap[submitTaskNeedModId] == 1 {
+			linkDefaultRate = autoDefaultHandle.LinkReplaceTimeOut
+			linkErrRate = autoDefaultHandle.LinkReplaceNotUpload
+			// db6 := GetReadDB(context.Background())
+			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("link_replace_time_out", "link_replace_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[submitTaskNeedModId]]).Find(&linkDefaultRate, &linkErrRate)
+		} else {
+			linkDefaultRate = autoDefaultHandle.LinkOtherTimeOut
+			linkErrRate = autoDefaultHandle.LinkOtherNotUpload
+			// db6 := GetReadDB(context.Background())
+			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("link_other_time_out", "link_other_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[submitTaskNeedModId]]).Find(&linkDefaultRate, &linkErrRate)
+		}
+		db1 := GetReadDB(context.Background())
+		var taskLinkInfo gorm_model.YounggeeLinkInfo
+		db1.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id = ?", submitTaskNeedModId).Order("reject_at desc").First(&taskLinkInfo)
+		if taskLinkInfo.AutoLinkBreakAt.IsZero() {
+			err4 := db1.Where("task_id = ?", submitTaskNeedModId).Updates(&gorm_model.YounggeeLinkInfo{AutoLinkBreakAt: taskLinkInfo.RejectAt.Add(dd)}).Error
+			if err4 != nil {
+				return err4
+			}
+			fmt.Println("已添加链接违约自动处理时间")
+			if taskLinkInfo.TaskID != "" && taskLinkInfo.RejectAt.Add(dd).Sub(time.Now()) <= 0 {
+				db4 := GetReadDB(context.Background())
+				err1 := db4.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
+					TaskID: submitTaskNeedModId, ProjectID: taskIdToProjectIdMap[submitTaskNeedModId], BreakType: 3, BreakAt: time.Now(), DefaultStatus: 1}).Error
+				if err1 != nil {
+					return err1
+				}
+				taskInfo := gorm_model.YoungeeTaskInfo{}
+				dbt := GetReadDB(context.Background())
+				err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitTaskNeedModId).Find(&taskInfo).Error
+				if err2 != nil {
+					return err2
+				}
+				settleAmount := taskInfo.TaskReward * (1.0 - float64(linkDefaultRate+taskInfo.DataBreakRate+taskInfo.SketchBreakRate+taskInfo.ScriptBreakRate)/100)
+				if settleAmount <= 0 {
+					settleAmount = 0.0
+				}
+				realPayment := taskInfo.AllPayment * (1.0 - float64(linkErrRate)/100)
+				if realPayment <= 0 {
+					realPayment = 0.0
+				}
+				db3 := GetReadDB(context.Background())
+				err2 = db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitTaskNeedModId).Updates(
+					map[string]interface{}{
+						"cur_default_type": 5,
+						"link_break_rate":  linkDefaultRate,
+						"settle_amount":    settleAmount,
+						"err_break_rate":   linkErrRate,
+						"real_payment":     realPayment,
+					}).Error
+				if err2 != nil {
+					return err2
+				}
+				err = CreateTaskLog(context.Background(), submitTaskNeedModId, "链接逾期")
+				if err != nil {
+					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
+				}
+				err = CreateMessageByTaskId(context.Background(), 23, 4, submitTaskNeedModId)
+				if err != nil {
+					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
+				}
+				fmt.Println("创建时已违约则创建已提交链接的链接违约记录")
+			}
+		} else {
+			if taskLinkInfo.TaskID != "" && taskLinkInfo.AutoLinkBreakAt.Sub(time.Now()) <= 0 {
+				db4 := GetReadDB(context.Background())
+				err1 := db4.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
+					TaskID: submitTaskNeedModId, ProjectID: taskIdToProjectIdMap[submitTaskNeedModId], BreakType: 3, BreakAt: time.Now(), DefaultStatus: 1}).Error
+				if err1 != nil {
+					return err1
+				}
+				taskInfo := gorm_model.YoungeeTaskInfo{}
+				dbt := GetReadDB(context.Background())
+				err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitTaskNeedModId).Find(&taskInfo).Error
+				if err2 != nil {
+					return err2
+				}
+				settleAmount := taskInfo.TaskReward * (1.0 - float64(linkDefaultRate+taskInfo.DataBreakRate+taskInfo.SketchBreakRate+taskInfo.ScriptBreakRate)/100)
+				if settleAmount <= 0 {
+					settleAmount = 0.0
+				}
+				realPayment := taskInfo.AllPayment * (1.0 - float64(linkErrRate)/100)
+				if realPayment <= 0 {
+					realPayment = 0.0
+				}
+				db3 := GetReadDB(context.Background())
+				err2 = db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitTaskNeedModId).Updates(
+					map[string]interface{}{
+						"cur_default_type":  5,
+						"sketch_break_rate": linkDefaultRate,
+						"settle_amount":     settleAmount,
+						"err_break_rate":    linkErrRate,
+						"real_payment":      realPayment,
+					}).Error
+				if err2 != nil {
+					return err2
+				}
+				err = CreateTaskLog(context.Background(), submitTaskNeedModId, "链接逾期")
+				if err != nil {
+					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
+				}
+				err = CreateMessageByTaskId(context.Background(), 23, 4, submitTaskNeedModId)
+				if err != nil {
+					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
+				}
+				fmt.Println("创建已提交链接的链接违约记录")
+			}
+		}
+	}
+	return nil
+}
+
+// GetAutoCaseCloseDefaultTask 数据超时违约判断
+func GetAutoCaseCloseDefaultTask() error {
+	db := GetReadDB(context.Background())
+	var projectInfos []*gorm_model.ProjectInfo
+	err := db.Model(gorm_model.ProjectInfo{}).Where("project_type = ?", 1).Find(&projectInfos).Error
+	if err != nil {
+		return err
+	}
+	var projectIds []string
+	// 任务id 对 项目id 的map
+	taskIdToProjectIdMap := map[string]string{}
+	// 项目id 对 定时任务id 的map
+	projectIdToAutoTaskIdMap := map[string]int{}
+	// 项目id 对 违约定时任务id 的map
+	projectIdToAutoDefaultIdMap := map[string]int{}
+	var taskIds []string
+	for _, projectInfo := range projectInfos {
+		projectIds = append(projectIds, projectInfo.ProjectID)
+		projectIdToAutoTaskIdMap[projectInfo.ProjectID] = int(projectInfo.AutoTaskID)
+		projectIdToAutoDefaultIdMap[projectInfo.ProjectID] = int(projectInfo.AutoDefaultID)
+
+		var taskInfos []string
+		db1 := GetReadDB(context.Background())
+		db1.Select("task_id").Model(&gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_status = ? AND task_stage = ? AND cur_default_type = ? ", projectInfo.ProjectID, 2, 13, 0).Find(&taskInfos)
+		for _, taskInfo := range taskInfos {
+			taskIdToProjectIdMap[taskInfo] = projectInfo.ProjectID
+			taskIds = append(taskIds, taskInfo)
+		}
+	}
+	// 首次提交链接的任务记录id
+	var taskNeedModIds []string
+	// 已提交链接的任务记录id
+	var submitTaskNeedModIds []string
+	// taskId 对 稿费形式的 map
+	taskIdToFeeFormMap := make(map[string]int)
+	for _, taskId := range taskIds {
+		var taskInfo gorm_model.YoungeeTaskInfo
+		db3 := GetReadDB(context.Background())
+		// 保存所有数据上传状态为 1  且任务状态为14 的任务记录的id
+		db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).First(&taskInfo)
+		if taskInfo.DataStatus == 1 && taskInfo.TaskStage == 13 {
+			taskNeedModIds = append(taskNeedModIds, taskId)
+		}
+		// 保存所有数据上传状态为 3  且任务状态为14 的任务记录的id
+		if taskInfo.DataStatus == 3 && taskInfo.TaskStage == 13 {
+			submitTaskNeedModIds = append(submitTaskNeedModIds, taskId)
+		}
+		taskIdToFeeFormMap[taskId] = taskInfo.FeeForm
+	}
+	for _, taskNeedModId := range taskNeedModIds {
+		db2 := GetReadDB(context.Background())
+		var CaseCloseDefault int32
+		db2.Model(&gorm_model.InfoAutoTask{}).Select("case_close_default").Where("auto_task_id = ?", projectIdToAutoTaskIdMap[taskIdToProjectIdMap[taskNeedModId]]).First(&CaseCloseDefault)
+		dd, _ := time.ParseDuration(conv.MustString(CaseCloseDefault, "") + "h")
+
+		autoDefaultHandle := gorm_model.InfoAutoDefaultHandle{}
+		db6 := GetReadDB(context.Background())
+		db6.Model(gorm_model.InfoAutoDefaultHandle{}).Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[taskNeedModId]]).Find(&autoDefaultHandle)
+
+		var dataDefaultRate int
+		var dataErrRate int
+		if taskIdToFeeFormMap[taskNeedModId] == 1 {
+			dataDefaultRate = autoDefaultHandle.DataReplaceTimeOut
+			dataErrRate = autoDefaultHandle.DataReplaceNotUpload
+			// db6 := GetReadDB(context.Background())
+			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("data_replace_time_out", "data_replace_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[taskNeedModId]]).Find(&dataDefaultRate, &dataErrRate)
+		} else {
+			dataDefaultRate = autoDefaultHandle.DataOtherTimeOut
+			dataErrRate = autoDefaultHandle.DataOtherNotUpload
+			// db6 := GetReadDB(context.Background())
+			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("data_other_time_out", "data_other_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[taskNeedModId]]).Find(&dataDefaultRate, &dataErrRate)
+		}
+		//fmt.Println("dataDefaultRate:", dataDefaultRate)
+		db1 := GetReadDB(context.Background())
+		var taskLinkInfo gorm_model.YounggeeLinkInfo
+		db1.Model(gorm_model.YounggeeLinkInfo{}).Where("task_id = ? AND is_ok = ?", taskNeedModId, 1).Find(&taskLinkInfo)
+		if taskLinkInfo.AutoDataBreakAt.IsZero() {
+			db1.Where("task_id = ?", taskNeedModId).Updates(&gorm_model.YounggeeLinkInfo{AutoDataBreakAt: taskLinkInfo.AgreeAt.Add(dd)})
+			fmt.Println("已添加数据违约自动处理时间")
+			if taskLinkInfo.TaskID != "" && taskLinkInfo.AgreeAt.Add(dd).Sub(time.Now()) <= 0 {
+				db4 := GetReadDB(context.Background())
+				err1 := db4.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
+					TaskID: taskNeedModId, ProjectID: taskIdToProjectIdMap[taskNeedModId], BreakType: 4, BreakAt: time.Now(), DefaultStatus: 1}).Error
+				if err1 != nil {
+					return err1
+				}
+				taskInfo := gorm_model.YoungeeTaskInfo{}
+				dbt := GetReadDB(context.Background())
+				err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskNeedModId).Find(&taskInfo).Error
+				if err2 != nil {
+					return err2
+				}
+				settleAmount := taskInfo.TaskReward * (1.0 - float64(taskInfo.SketchBreakRate+dataDefaultRate+taskInfo.LinkBreakRate+taskInfo.ScriptBreakRate)/100)
+				if settleAmount <= 0 {
+					settleAmount = 0.0
+				}
+				realPayment := taskInfo.AllPayment * (1.0 - float64(dataErrRate)/100)
+				if realPayment <= 0 {
+					realPayment = 0.0
+				}
+				db3 := GetReadDB(context.Background())
+				err2 = db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskNeedModId).Updates(
+					map[string]interface{}{
+						"cur_default_type": 7,
+						"data_break_rate":  dataDefaultRate,
+						"settle_amount":    settleAmount,
+						"err_break_rate":   dataErrRate,
+						"real_payment":     realPayment,
+					}).Error
+				if err2 != nil {
+					return err2
+				}
+				err = CreateTaskLog(context.Background(), taskNeedModId, "数据逾期")
+				if err != nil {
+					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
+				}
+				err = CreateMessageByTaskId(context.Background(), 24, 4, taskNeedModId)
+				if err != nil {
+					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
+				}
+				fmt.Println("创建时已违约则创建数据违约记录")
+			}
+		} else {
+			if taskLinkInfo.TaskID != "" && taskLinkInfo.AutoDataBreakAt.Sub(time.Now()) <= 0 {
+				db4 := GetReadDB(context.Background())
+				err1 := db4.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
+					TaskID: taskNeedModId, ProjectID: taskIdToProjectIdMap[taskNeedModId], BreakType: 4, BreakAt: time.Now(), DefaultStatus: 1}).Error
+				if err1 != nil {
+					return err1
+				}
+				taskInfo := gorm_model.YoungeeTaskInfo{}
+				dbt := GetReadDB(context.Background())
+				err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskNeedModId).Find(&taskInfo).Error
+				if err2 != nil {
+					return err2
+				}
+				settleAmount := taskInfo.TaskReward * (1.0 - float64(taskInfo.SketchBreakRate+dataDefaultRate+taskInfo.LinkBreakRate+taskInfo.ScriptBreakRate)/100)
+				if settleAmount <= 0 {
+					settleAmount = 0.0
+				}
+				realPayment := taskInfo.AllPayment * (1.0 - float64(dataErrRate)/100)
+				if realPayment <= 0 {
+					realPayment = 0.0
+				}
+				fmt.Println("settleAmount: ", settleAmount)
+				db3 := GetReadDB(context.Background())
+				err2 = db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskNeedModId).Updates(
+					map[string]interface{}{
+						"cur_default_type":  7,
+						"sketch_break_rate": dataDefaultRate,
+						"settle_amount":     settleAmount,
+						"err_break_rate":    dataErrRate,
+						"real_payment":      realPayment,
+					}).Error
+				if err2 != nil {
+					return err2
+				}
+				err = CreateTaskLog(context.Background(), taskNeedModId, "数据逾期")
+				if err != nil {
+					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
+				}
+				err = CreateMessageByTaskId(context.Background(), 24, 4, taskNeedModId)
+				if err != nil {
+					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
+				}
+				fmt.Println("已创建数据违约记录")
+			}
+		}
+	}
+	// 根据最近一次拒绝时间判断当前是否违约
+	for _, submitTaskNeedModId := range submitTaskNeedModIds {
+		db2 := GetReadDB(context.Background())
+		var LinkBreach int32
+		db2.Model(&gorm_model.InfoAutoTask{}).Select("case_close_default").Where("auto_task_id = ?", projectIdToAutoTaskIdMap[taskIdToProjectIdMap[submitTaskNeedModId]]).First(&LinkBreach)
+		dd, _ := time.ParseDuration(conv.MustString(LinkBreach, "") + "h")
+
+		autoDefaultHandle := gorm_model.InfoAutoDefaultHandle{}
+		db6 := GetReadDB(context.Background())
+		db6.Model(gorm_model.InfoAutoDefaultHandle{}).Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[submitTaskNeedModId]]).Find(&autoDefaultHandle)
+
+		var dataDefaultRate int
+		var dataErrRate int
+		if taskIdToFeeFormMap[submitTaskNeedModId] == 1 {
+			dataDefaultRate = autoDefaultHandle.DataReplaceTimeOut
+			dataErrRate = autoDefaultHandle.DataReplaceNotUpload
+			// db6 := GetReadDB(context.Background())
+			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("data_replace_time_out", "data_replace_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[submitTaskNeedModId]]).Find(&dataDefaultRate, &dataErrRate)
+		} else {
+			dataDefaultRate = autoDefaultHandle.DataOtherTimeOut
+			dataErrRate = autoDefaultHandle.DataOtherNotUpload
+			// db6 := GetReadDB(context.Background())
+			// db6.Model(gorm_model.InfoAutoDefaultHandle{}).Select("data_other_time_out", "data_other_not_upload").Where("auto_default_id = ?", projectIdToAutoDefaultIdMap[taskIdToProjectIdMap[submitTaskNeedModId]]).Find(&dataDefaultRate, &dataErrRate)
+		}
+		db1 := GetReadDB(context.Background())
+		var taskDataInfo gorm_model.YounggeeDataInfo
+		db1.Model(gorm_model.YounggeeDataInfo{}).Where("task_id = ? and is_review = 1", submitTaskNeedModId).Order("reject_at desc").First(&taskDataInfo)
+		if taskDataInfo.AutoDataBreakAt.IsZero() {
+			err4 := db1.Where("task_id = ?", submitTaskNeedModId).Updates(&gorm_model.YounggeeDataInfo{AutoDataBreakAt: taskDataInfo.RejectAt.Add(dd)}).Error
+			if err4 != nil {
+				return err4
+			}
+			fmt.Println("已添加数据违约自动处理时间")
+			if taskDataInfo.TaskID != "" && taskDataInfo.RejectAt.Add(dd).Sub(time.Now()) <= 0 {
+				db4 := GetReadDB(context.Background())
+				err1 := db4.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
+					TaskID: submitTaskNeedModId, ProjectID: taskIdToProjectIdMap[submitTaskNeedModId], BreakType: 4, BreakAt: time.Now(), DefaultStatus: 1}).Error
+				if err1 != nil {
+					return err1
+				}
+				taskInfo := gorm_model.YoungeeTaskInfo{}
+				dbt := GetReadDB(context.Background())
+				err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitTaskNeedModId).Find(&taskInfo).Error
+				if err2 != nil {
+					return err2
+				}
+				settleAmount := taskInfo.TaskReward * (1.0 - float64(taskInfo.SketchBreakRate+dataDefaultRate+taskInfo.LinkBreakRate+taskInfo.ScriptBreakRate)/100)
+				if settleAmount <= 0 {
+					settleAmount = 0.0
+				}
+				realPayment := taskInfo.AllPayment * (1.0 - float64(dataErrRate)/100)
+				if realPayment <= 0 {
+					realPayment = 0.0
+				}
+				db3 := GetReadDB(context.Background())
+				err2 = db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitTaskNeedModId).Updates(
+					map[string]interface{}{
+						"cur_default_type": 7,
+						"data_break_rate":  dataDefaultRate,
+						"settle_amount":    settleAmount,
+						"err_break_rate":   dataErrRate,
+						"real_payment":     realPayment,
+					}).Error
+				if err2 != nil {
+					return err2
+				}
+				err = CreateTaskLog(context.Background(), submitTaskNeedModId, "数据逾期")
+				if err != nil {
+					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
+				}
+				err = CreateMessageByTaskId(context.Background(), 24, 4, submitTaskNeedModId)
+				if err != nil {
+					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
+				}
+				fmt.Println("创建时已违约则创建已提交数据的数据违约记录")
+			}
+		} else {
+			if taskDataInfo.TaskID != "" && taskDataInfo.AutoDataBreakAt.Sub(time.Now()) <= 0 {
+				db4 := GetReadDB(context.Background())
+				err1 := db4.Model(gorm_model.YoungeeContractInfo{}).Create(&gorm_model.YoungeeContractInfo{
+					TaskID: submitTaskNeedModId, ProjectID: taskIdToProjectIdMap[submitTaskNeedModId], BreakType: 4, BreakAt: time.Now(), DefaultStatus: 1}).Error
+				if err1 != nil {
+					return err1
+				}
+				taskInfo := gorm_model.YoungeeTaskInfo{}
+				dbt := GetReadDB(context.Background())
+				err2 := dbt.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitTaskNeedModId).Find(&taskInfo).Error
+				if err2 != nil {
+					return err2
+				}
+				settleAmount := taskInfo.TaskReward * (1.0 - float64(taskInfo.SketchBreakRate+dataDefaultRate+taskInfo.LinkBreakRate+taskInfo.ScriptBreakRate)/100)
+				if settleAmount <= 0 {
+					settleAmount = 0.0
+				}
+				realPayment := taskInfo.AllPayment * (1.0 - float64(dataErrRate)/100)
+				if realPayment <= 0 {
+					realPayment = 0.0
+				}
+				db3 := GetReadDB(context.Background())
+				err2 = db3.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", submitTaskNeedModId).Updates(
+					map[string]interface{}{
+						"cur_default_type": 7,
+						"data_break_rate":  dataDefaultRate,
+						"settle_amount":    settleAmount,
+						"err_break_rate":   dataErrRate,
+						"real_payment":     realPayment,
+					}).Error
+				if err2 != nil {
+					return err2
+				}
+				err = CreateTaskLog(context.Background(), submitTaskNeedModId, "数据逾期")
+				if err != nil {
+					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateTaskLog error,err:%+v", err)
+				}
+				err = CreateMessageByTaskId(context.Background(), 24, 4, submitTaskNeedModId)
+				if err != nil {
+					logrus.WithContext(context.Background()).Errorf("[operate db] call CreateMessageByTaskId error,err:%+v", err)
+				}
+				fmt.Println("创建已提交数据的数据违约记录")
+			}
+		}
+	}
+	return nil
+}
+
+func GetHours(ctx context.Context) (*http_model.Hours, error) {
+	db := GetReadDB(ctx)
+	infoAuto := gorm_model.InfoAutoTask{}
+	err := db.Model(gorm_model.InfoAutoTask{}).Last(&infoAuto).Error
+	if err != nil {
+		return nil, err
+	}
+	Hours := http_model.Hours{}
+	Hours.DraftDefaultInPic = infoAuto.DraftDefaultInPic
+	Hours.DraftDefaultInMv = infoAuto.DraftDefaultInMv
+	Hours.ScriptDefault = infoAuto.ScriptDefault
+	Hours.Invalid = infoAuto.Invalid
+	Hours.LinkBreach = infoAuto.LinkBreach
+	Hours.CaseClose = infoAuto.CaseClose
+	Hours.CaseCloseDefault = infoAuto.CaseCloseDefault
+	Hours.ReviewInMv = infoAuto.ReviewInMv
+	Hours.ReviewUnlimited = infoAuto.ReviewUnlimited
+	Hours.PostReview = infoAuto.Postreview
+	Hours.SignInVirtual = infoAuto.SignInVirtual
+	Hours.SignInOffline = infoAuto.SignInOffline
+	return &Hours, err
+}
+
+func GetPercents(ctx context.Context) (*http_model.Percents, error) {
+	db := GetReadDB(ctx)
+	percentsInfo := gorm_model.InfoAutoDefaultHandle{}
+	err := db.Model(gorm_model.InfoAutoDefaultHandle{}).Last(&percentsInfo).Error
+	if err != nil {
+		return nil, err
+	}
+	Percents := http_model.Percents{}
+	Percents.DataReplaceNotUpload = percentsInfo.DataReplaceNotUpload
+	Percents.DataReplaceTimeOut = percentsInfo.DataReplaceTimeOut
+	Percents.DataOtherTimeOut = percentsInfo.DataOtherTimeOut
+	Percents.DataOtherNotUpload = percentsInfo.DataOtherNotUpload
+	Percents.LinkReplaceTimeOut = percentsInfo.LinkReplaceTimeOut
+	Percents.LinkReplaceNotUpload = percentsInfo.LinkReplaceNotUpload
+	Percents.LinkOtherTimeOut = percentsInfo.LinkOtherTimeOut
+	Percents.LinkOtherNotUpload = percentsInfo.LinkOtherNotUpload
+	Percents.ScriptReplaceTimeOut = percentsInfo.ScriptReplaceTimeOut
+	Percents.ScriptReplaceNotUpload = percentsInfo.ScriptReplaceNotUpload
+	Percents.ScriptOtherNotUpload = percentsInfo.ScriptOtherNotUpload
+	Percents.ScriptOtherTimeOut = percentsInfo.ScriptOtherTimeOut
+	Percents.SketchReplaceTimeOut = percentsInfo.SketchReplaceTimeOut
+	Percents.SketchOtherNotUpload = percentsInfo.SketchOtherNotUpload
+	Percents.SketchOtherTimeOut = percentsInfo.SketchOtherTimeOut
+	Percents.SketchReplaceNotUpload = percentsInfo.SketchReplaceNotUpload
+	return &Percents, err
+}

+ 29 - 29
db/pay_record.go

@@ -1,29 +1,29 @@
-package db
-
-import (
-	"context"
-	"time"
-	"youngee_m_api/model/gorm_model"
-
-	"github.com/sirupsen/logrus"
-)
-
-// CreatePayRecord 新增
-func CreatePayRecord(ctx context.Context, enterpriseId string, payment float64, balance float64, payType int64, projectId string) (*int64, error) {
-	db := GetReadDB(ctx)
-	payRecord := gorm_model.EnterprisePayRecord{
-		EnterpriseID: enterpriseId,
-		Payment:      payment,
-		Balance:      balance,
-		PayType:      payType,
-		PayAt:        time.Now(),
-		ProjectID:    projectId,
-	}
-	err := db.Create(&payRecord).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[logistics db] call CreatePayRecord error,err:%+v", err)
-		return nil, err
-	}
-
-	return &payRecord.ID, nil
-}
+package db
+
+import (
+	"context"
+	"time"
+	"youngee_m_api/model/gorm_model"
+
+	"github.com/sirupsen/logrus"
+)
+
+// CreatePayRecord 新增
+func CreatePayRecord(ctx context.Context, enterpriseId string, payment float64, balance float64, payType int64, projectId string) (*int64, error) {
+	db := GetReadDB(ctx)
+	payRecord := gorm_model.EnterprisePayRecord{
+		EnterpriseID: enterpriseId,
+		Payment:      payment,
+		Balance:      balance,
+		PayType:      payType,
+		PayAt:        time.Now(),
+		ProjectID:    projectId,
+	}
+	err := db.Create(&payRecord).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[logistics db] call CreatePayRecord error,err:%+v", err)
+		return nil, err
+	}
+
+	return &payRecord.ID, nil
+}

+ 137 - 137
db/product.go

@@ -1,137 +1,137 @@
-package db
-
-import (
-	"context"
-	"github.com/caixw/lib.go/conv"
-	"github.com/sirupsen/logrus"
-	"gorm.io/gorm"
-	"strconv"
-	"youngee_m_api/model/gorm_model"
-)
-
-func CreateProduct(ctx context.Context, product gorm_model.YounggeeProduct) (*int64, error) {
-	db := GetReadDB(ctx)
-	err := db.Create(&product).Error
-	if err != nil {
-		return nil, err
-	}
-	return &product.ProductID, nil
-}
-
-func GetProductByID(ctx context.Context, productID int64) (*gorm_model.YounggeeProduct, error) {
-	db := GetReadDB(ctx)
-	product := &gorm_model.YounggeeProduct{}
-	err := db.First(&product, productID).Error
-	if err != nil {
-		if err == gorm.ErrRecordNotFound {
-			return nil, nil
-		} else {
-			return nil, err
-		}
-	}
-	return product, nil
-}
-
-func GetEnterpriseIDByUserID(ctx context.Context, UserId string) string {
-	db := GetReadDB(ctx)
-	enterpriseInfo := gorm_model.Enterprise{}
-	userId := conv.MustInt64(UserId, 0)
-	err := db.Where("user_id = ?", userId).Find(&enterpriseInfo).Error
-	if err != nil {
-		return ""
-	}
-	enterpriseID := enterpriseInfo.EnterpriseID
-	return enterpriseID
-}
-
-func GetUserIDByEnterpriseID(ctx context.Context, enterpriseId string) string {
-	db := GetReadDB(ctx)
-	enterpriseInfo := gorm_model.Enterprise{}
-	err := db.Where("enterprise_id = ?", enterpriseId).Find(&enterpriseInfo).Error
-	if err != nil {
-		return ""
-	}
-	enterpriseID := enterpriseInfo.UserID
-	return strconv.FormatInt(enterpriseID, 10)
-}
-
-func GetProductByEnterpriseID(ctx context.Context, enterpriseID string) ([]gorm_model.YounggeeProduct, error) {
-	db := GetReadDB(ctx)
-	var products []gorm_model.YounggeeProduct
-	err := db.Where("enterprise_id = ?", enterpriseID).Find(&products).Error
-	if err != nil {
-		return nil, err
-	}
-	return products, nil
-}
-
-func GetEnterpriseIDByProductID(ctx context.Context, ProductID int64) string {
-	db := GetReadDB(ctx)
-	ProjectInfo := gorm_model.ProjectInfo{}
-	err := db.Where("product_id = ?", ProductID).Find(&ProjectInfo).Error
-	if err != nil {
-		return ""
-	}
-	enterpriseID := ProjectInfo.EnterpriseID
-	return enterpriseID
-}
-
-func UpdateProduct(ctx context.Context, product gorm_model.YounggeeProduct) (*int64, error) {
-	db := GetReadDB(ctx)
-	err := db.Model(&product).Updates(product).Error
-	if err != nil {
-		return nil, err
-	}
-	return &product.ProductID, nil
-}
-
-func GetProductInfoBySelectionId(ctx context.Context, selectionId string) (*gorm_model.YounggeeProduct, error) {
-	db := GetReadDB(ctx)
-	productId := 0
-	err := db.Model(gorm_model.YounggeeSelectionInfo{}).Select("product_id").Where("selection_id = ?", selectionId).Find(&productId).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProductInfo] error query mysql, err:%+v", err)
-		return nil, err
-	}
-	productInfo := gorm_model.YounggeeProduct{}
-	err = db.Model(gorm_model.YounggeeProduct{}).Where("product_id = ?", productId).Find(&productInfo).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProductInfo] error query mysql, err:%+v", err)
-		return nil, err
-	}
-	return &productInfo, nil
-}
-
-func GetProductPhotoInfoBySelectionId(ctx context.Context, selectionId string) ([]*gorm_model.YounggeeProductPhoto, error) {
-	db := GetReadDB(ctx)
-	productId := 0
-	err := db.Model(gorm_model.YounggeeSelectionInfo{}).Select("product_id").Where("selection_id = ?", selectionId).Find(&productId).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProductInfo] error query mysql, err:%+v", err)
-		return nil, err
-	}
-	var productPhotoInfo []*gorm_model.YounggeeProductPhoto
-	err = db.Model(gorm_model.YounggeeProductPhoto{}).Where("product_id = ?", productId).Find(&productPhotoInfo).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProductInfo] error query mysql, err:%+v", err)
-		return nil, err
-	}
-	return productPhotoInfo, nil
-}
-
-func GetProductType(ctx context.Context, selectionId string) (*int, error) {
-	db := GetReadDB(ctx)
-	var productId int
-	err := db.Model(gorm_model.YounggeeSelectionInfo{}).Select("product_id").Where("selection_id = ?", selectionId).Find(&productId).Error
-	if err != nil || productId == 0 {
-		logrus.WithContext(ctx).Errorf("[GetProductType] error query mysql, err:%+v", err)
-		return nil, err
-	}
-	var productType int
-	err = db.Model(gorm_model.YounggeeProduct{}).Select("product_type").Where("product_id = ?", productId).Find(&productType).Error
-	if err != nil || productType == 0 {
-		logrus.WithContext(ctx).Errorf("[GetProductType] error query mysql, err:%+v", err)
-		return nil, err
-	}
-	return &productType, nil
-}
+package db
+
+import (
+	"context"
+	"github.com/caixw/lib.go/conv"
+	"github.com/sirupsen/logrus"
+	"gorm.io/gorm"
+	"strconv"
+	"youngee_m_api/model/gorm_model"
+)
+
+func CreateProduct(ctx context.Context, product gorm_model.YounggeeProduct) (*int64, error) {
+	db := GetReadDB(ctx)
+	err := db.Create(&product).Error
+	if err != nil {
+		return nil, err
+	}
+	return &product.ProductID, nil
+}
+
+func GetProductByID(ctx context.Context, productID int64) (*gorm_model.YounggeeProduct, error) {
+	db := GetReadDB(ctx)
+	product := &gorm_model.YounggeeProduct{}
+	err := db.First(&product, productID).Error
+	if err != nil {
+		if err == gorm.ErrRecordNotFound {
+			return nil, nil
+		} else {
+			return nil, err
+		}
+	}
+	return product, nil
+}
+
+func GetEnterpriseIDByUserID(ctx context.Context, UserId string) string {
+	db := GetReadDB(ctx)
+	enterpriseInfo := gorm_model.Enterprise{}
+	userId := conv.MustInt64(UserId, 0)
+	err := db.Where("user_id = ?", userId).Find(&enterpriseInfo).Error
+	if err != nil {
+		return ""
+	}
+	enterpriseID := enterpriseInfo.EnterpriseID
+	return enterpriseID
+}
+
+func GetUserIDByEnterpriseID(ctx context.Context, enterpriseId string) string {
+	db := GetReadDB(ctx)
+	enterpriseInfo := gorm_model.Enterprise{}
+	err := db.Where("enterprise_id = ?", enterpriseId).Find(&enterpriseInfo).Error
+	if err != nil {
+		return ""
+	}
+	enterpriseID := enterpriseInfo.UserID
+	return strconv.FormatInt(enterpriseID, 10)
+}
+
+func GetProductByEnterpriseID(ctx context.Context, enterpriseID string) ([]gorm_model.YounggeeProduct, error) {
+	db := GetReadDB(ctx)
+	var products []gorm_model.YounggeeProduct
+	err := db.Where("enterprise_id = ?", enterpriseID).Find(&products).Error
+	if err != nil {
+		return nil, err
+	}
+	return products, nil
+}
+
+func GetEnterpriseIDByProductID(ctx context.Context, ProductID int64) string {
+	db := GetReadDB(ctx)
+	ProjectInfo := gorm_model.ProjectInfo{}
+	err := db.Where("product_id = ?", ProductID).Find(&ProjectInfo).Error
+	if err != nil {
+		return ""
+	}
+	enterpriseID := ProjectInfo.EnterpriseID
+	return enterpriseID
+}
+
+func UpdateProduct(ctx context.Context, product gorm_model.YounggeeProduct) (*int64, error) {
+	db := GetReadDB(ctx)
+	err := db.Model(&product).Updates(product).Error
+	if err != nil {
+		return nil, err
+	}
+	return &product.ProductID, nil
+}
+
+func GetProductInfoBySelectionId(ctx context.Context, selectionId string) (*gorm_model.YounggeeProduct, error) {
+	db := GetReadDB(ctx)
+	productId := 0
+	err := db.Model(gorm_model.YounggeeSelectionInfo{}).Select("product_id").Where("selection_id = ?", selectionId).Find(&productId).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProductInfo] error query mysql, err:%+v", err)
+		return nil, err
+	}
+	productInfo := gorm_model.YounggeeProduct{}
+	err = db.Model(gorm_model.YounggeeProduct{}).Where("product_id = ?", productId).Find(&productInfo).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProductInfo] error query mysql, err:%+v", err)
+		return nil, err
+	}
+	return &productInfo, nil
+}
+
+func GetProductPhotoInfoBySelectionId(ctx context.Context, selectionId string) ([]*gorm_model.YounggeeProductPhoto, error) {
+	db := GetReadDB(ctx)
+	productId := 0
+	err := db.Model(gorm_model.YounggeeSelectionInfo{}).Select("product_id").Where("selection_id = ?", selectionId).Find(&productId).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProductInfo] error query mysql, err:%+v", err)
+		return nil, err
+	}
+	var productPhotoInfo []*gorm_model.YounggeeProductPhoto
+	err = db.Model(gorm_model.YounggeeProductPhoto{}).Where("product_id = ?", productId).Find(&productPhotoInfo).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProductInfo] error query mysql, err:%+v", err)
+		return nil, err
+	}
+	return productPhotoInfo, nil
+}
+
+func GetProductType(ctx context.Context, selectionId string) (*int, error) {
+	db := GetReadDB(ctx)
+	var productId int
+	err := db.Model(gorm_model.YounggeeSelectionInfo{}).Select("product_id").Where("selection_id = ?", selectionId).Find(&productId).Error
+	if err != nil || productId == 0 {
+		logrus.WithContext(ctx).Errorf("[GetProductType] error query mysql, err:%+v", err)
+		return nil, err
+	}
+	var productType int
+	err = db.Model(gorm_model.YounggeeProduct{}).Select("product_type").Where("product_id = ?", productId).Find(&productType).Error
+	if err != nil || productType == 0 {
+		logrus.WithContext(ctx).Errorf("[GetProductType] error query mysql, err:%+v", err)
+		return nil, err
+	}
+	return &productType, nil
+}

+ 60 - 60
db/product_photo.go

@@ -1,60 +1,60 @@
-package db
-
-import (
-	"context"
-	"youngee_m_api/model/gorm_model"
-)
-
-func GetProductPhotoByProductID(ctx context.Context, productID int64) ([]gorm_model.YounggeeProductPhoto, error) {
-	db := GetReadDB(ctx)
-	var productPhotos []gorm_model.YounggeeProductPhoto
-	err := db.Where("product_id = ?", productID).Find(&productPhotos).Error
-	if err != nil {
-		return nil, err
-	}
-	return productPhotos, nil
-}
-
-func CreateProjectPhoto(ctx context.Context, projectPhotos []gorm_model.ProjectPhoto) error {
-	db := GetReadDB(ctx)
-	err := db.Create(&projectPhotos).Error
-	if err != nil {
-		return err
-	}
-	return nil
-}
-
-func DeleteProjectPhotoByProjectID(ctx context.Context, projectId string) error {
-	db := GetReadDB(ctx)
-	err := db.Where("project_id = ?", projectId).Delete(&gorm_model.ProjectPhoto{}).Error
-	if err != nil {
-		return err
-	}
-	return nil
-}
-
-func DeleteProductPhotoByProductID(ctx context.Context, productID int64) error {
-	db := GetReadDB(ctx)
-	err := db.Where("product_id = ?", productID).Delete(&gorm_model.YounggeeProductPhoto{}).Error
-	if err != nil {
-		return err
-	}
-	return nil
-}
-func CreateProductPhoto(ctx context.Context, productPhotos []gorm_model.YounggeeProductPhoto) error {
-	db := GetReadDB(ctx)
-	err := db.Create(&productPhotos).Error
-	if err != nil {
-		return err
-	}
-	return nil
-}
-
-func DeletePhotoUrl(ctx context.Context, photoUrl string) error {
-	db := GetReadDB(ctx)
-	err := db.Where("photo_url = ?", photoUrl).Delete(&gorm_model.YounggeeProductPhoto{}).Error
-	if err != nil {
-		return err
-	}
-	return nil
-}
+package db
+
+import (
+	"context"
+	"youngee_m_api/model/gorm_model"
+)
+
+func GetProductPhotoByProductID(ctx context.Context, productID int64) ([]gorm_model.YounggeeProductPhoto, error) {
+	db := GetReadDB(ctx)
+	var productPhotos []gorm_model.YounggeeProductPhoto
+	err := db.Where("product_id = ?", productID).Find(&productPhotos).Error
+	if err != nil {
+		return nil, err
+	}
+	return productPhotos, nil
+}
+
+func CreateProjectPhoto(ctx context.Context, projectPhotos []gorm_model.ProjectPhoto) error {
+	db := GetReadDB(ctx)
+	err := db.Create(&projectPhotos).Error
+	if err != nil {
+		return err
+	}
+	return nil
+}
+
+func DeleteProjectPhotoByProjectID(ctx context.Context, projectId string) error {
+	db := GetReadDB(ctx)
+	err := db.Where("project_id = ?", projectId).Delete(&gorm_model.ProjectPhoto{}).Error
+	if err != nil {
+		return err
+	}
+	return nil
+}
+
+func DeleteProductPhotoByProductID(ctx context.Context, productID int64) error {
+	db := GetReadDB(ctx)
+	err := db.Where("product_id = ?", productID).Delete(&gorm_model.YounggeeProductPhoto{}).Error
+	if err != nil {
+		return err
+	}
+	return nil
+}
+func CreateProductPhoto(ctx context.Context, productPhotos []gorm_model.YounggeeProductPhoto) error {
+	db := GetReadDB(ctx)
+	err := db.Create(&productPhotos).Error
+	if err != nil {
+		return err
+	}
+	return nil
+}
+
+func DeletePhotoUrl(ctx context.Context, photoUrl string) error {
+	db := GetReadDB(ctx)
+	err := db.Where("photo_url = ?", photoUrl).Delete(&gorm_model.YounggeeProductPhoto{}).Error
+	if err != nil {
+		return err
+	}
+	return nil
+}

+ 446 - 446
db/project.go

@@ -1,446 +1,446 @@
-package db
-
-import (
-	"context"
-	"fmt"
-	"log"
-	"reflect"
-	"strconv"
-	"strings"
-	"time"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/common_model"
-	"youngee_m_api/model/gorm_model"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/pack"
-	"youngee_m_api/util"
-
-	"github.com/caixw/lib.go/conv"
-	"github.com/sirupsen/logrus"
-	"gorm.io/gorm"
-)
-
-func GetFullProjectList(ctx context.Context, pageSize, pageNum int32, condition *common_model.ProjectCondition, projectType string) ([]*gorm_model.ProjectInfo, int64, error) {
-	db := GetReadDB(ctx)
-	if projectType == "2" {
-		db = db.Debug().Model(gorm_model.ProjectInfo{}).Where("project_type = 2")
-	} else {
-		db = db.Debug().Model(gorm_model.ProjectInfo{}).Where("project_type = 1")
-	}
-	// 根据Project条件过滤
-	conditionType := reflect.TypeOf(condition).Elem()
-	conditionValue := reflect.ValueOf(condition).Elem()
-	for i := 0; i < conditionType.NumField(); i++ {
-		field := conditionType.Field(i)
-		tag := field.Tag.Get("condition")
-		value := conditionValue.FieldByName(field.Name)
-		if tag == "project_status" && util.IsBlank(value) {
-			db = db.Where(fmt.Sprintf("project_status != 3"))
-			db = db.Where(fmt.Sprintf("project_status != 5"))
-			db = db.Where(fmt.Sprintf("project_status != 7"))
-		}
-		if !util.IsBlank(value) && tag != "updated_at" && tag != "project_name" && tag != "project_id" {
-			db = db.Debug().Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-		}
-		if tag == "updated_at" && value.Interface() != "0" {
-			db = db.Where(fmt.Sprintf("updated_at like '%s%%'", value.Interface()))
-		}
-		if tag == "project_name" && !util.IsBlank(value) {
-			//db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-			db = db.Where(fmt.Sprintf("project_name like '%%%s%%'", value.Interface()))
-		}
-		if tag == "project_id" && value.Interface() != "0" {
-			db = db.Debug().Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-		}
-	}
-	// 查询总数
-	var total int64
-	var fullProjects []*gorm_model.ProjectInfo
-	if err := db.Count(&total).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetFullProjectList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	// 查询该页数据
-	limit := pageSize
-	offset := pageSize * pageNum // assert pageNum start with 0
-	err := db.Order("updated_at desc").Limit(int(limit)).Offset(int(offset)).Find(&fullProjects).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetFullProjectList] error query mysql find, err:%+v", err)
-		return nil, 0, err
-	}
-	return fullProjects, total, nil
-}
-
-func GetProjectDetail(ctx context.Context, projectID string) (*gorm_model.ProjectInfo, error) {
-	db := GetReadDB(ctx)
-	var ProjectDetail *gorm_model.ProjectInfo
-	err := db.Where("project_id = ?", projectID).First(&ProjectDetail).Error
-	if err != nil {
-		if err == gorm.ErrRecordNotFound {
-			return nil, nil
-		} else {
-			return nil, err
-		}
-	}
-	return ProjectDetail, nil
-}
-
-func UpdateProjectStatus(ctx context.Context, projectId string, status int64) error {
-	db := GetReadDB(ctx)
-	t := time.Now()
-	err := db.Model(gorm_model.ProjectInfo{}).
-		Where("project_id = ?", projectId).Updates(gorm_model.ProjectInfo{
-		ProjectStatus: status,
-		PayAt:         &t,
-	}).Error
-	if err != nil {
-		log.Println("DB UpdateProjectStatus error :", err)
-		return err
-	}
-	return nil
-}
-
-func GetRecruitStrategys(ctx context.Context, ProjectID string) ([]gorm_model.RecruitStrategy, error) {
-	db := GetReadDB(ctx)
-	var RecruitStrategys []gorm_model.RecruitStrategy
-	err := db.Where("project_id=?", ProjectID).Find(&RecruitStrategys).Error
-	if err != nil {
-		return nil, err
-	}
-	return RecruitStrategys, nil
-}
-
-func GetProjectPhoto(ctx context.Context, ProjectID string) ([]gorm_model.ProjectPhoto, error) {
-	db := GetReadDB(ctx)
-	var ProjectPhoto []gorm_model.ProjectPhoto
-	err := db.Where("project_id=?", ProjectID).Find(&ProjectPhoto).Error
-	if err != nil {
-		return nil, err
-	}
-	return ProjectPhoto, nil
-}
-
-func UpdateProject(ctx context.Context, project gorm_model.ProjectInfo) (*string, error) {
-	db := GetReadDB(ctx)
-	err := db.Model(&project).Updates(project).Error
-	if err != nil {
-		return nil, err
-	}
-	return &project.ProjectID, nil
-}
-
-func ApproveProject(ctx context.Context, projectId string, isApprove int64) (error error, message string) {
-	db := GetReadDB(ctx)
-	projectInfo := gorm_model.ProjectInfo{}
-	db = db.Debug().Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectId).First(&projectInfo)
-	t := time.Now()
-	if isApprove == 1 && projectInfo.ProjectStatus == 2 {
-		err := db.Updates(gorm_model.ProjectInfo{
-			ProjectStatus: 4,
-			PassAt:        &t,
-		}).Error
-		message = "审核通过"
-		if err != nil {
-			logrus.Println("DB AutoUpdateStatus error :", err)
-			return err, ""
-		}
-	} else if isApprove == 2 && projectInfo.ProjectStatus == 2 {
-		err := db.Updates(gorm_model.ProjectInfo{
-			ProjectStatus: 8,
-			FinishAt:      &t,
-			FailReason:    2,
-		}).Error
-		message = "项目存在风险已禁止发布"
-		if err != nil {
-			logrus.Println("DB AutoUpdateStatus error :", err)
-			return err, ""
-		}
-	} else {
-		return nil, "操作失败"
-	}
-	return nil, message
-}
-
-func GetAllProject(ctx context.Context, pageSize, pageNum int32) ([]*http_model.GetAllProjectPreview, int64, error) {
-	db := GetReadDB(ctx)
-	db = db.Debug().Model(gorm_model.ProjectInfo{}).Where("project_status = 1 or project_status = 6")
-	db = db.Where("is_read = 0")
-	var allProjects []*http_model.GetAllProjectPreview
-	// 查询总数
-	var total int64
-	var fullProjects []*gorm_model.ProjectInfo
-	if err := db.Count(&total).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetAllProject] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	// 查询该页数据
-	limit := pageSize
-	offset := pageSize * pageNum // assert pageNum start with 0
-	err := db.Order("updated_at desc").Limit(int(limit)).Offset(int(offset)).Find(&fullProjects).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetAllProject] error query mysql find, err:%+v", err)
-		return nil, 0, err
-	}
-	var EnterpriseIDs []string
-	for _, fullProject := range fullProjects {
-		EnterpriseIDs = append(EnterpriseIDs, fullProject.EnterpriseID)
-	}
-	EnterpriseIDs = util.RemoveStrRepByMap(EnterpriseIDs)
-	userMemo := map[string]string{}
-	phoneMemo := map[string]string{}
-	for _, EnterpriseID := range EnterpriseIDs {
-		userMemo[EnterpriseID] = GetUsernameEnterpriseID(ctx, EnterpriseID)
-	}
-	for _, EnterpriseID := range EnterpriseIDs {
-		phoneMemo[EnterpriseID] = GetPhoneByEnterpriseID(ctx, EnterpriseID)
-	}
-	for _, fullProject := range fullProjects {
-		allProject := new(http_model.GetAllProjectPreview)
-		allProject.ProjectUpdated = conv.MustString(fullProject.UpdatedAt, "")
-		allProject.ProjectStatus = conv.MustString(fullProject.ProjectStatus, "")
-		allProject.ProjectId = conv.MustString(fullProject.ProjectID, "")
-		allProject.EnterpriseID = fullProject.EnterpriseID
-		allProject.Username = userMemo[fullProject.EnterpriseID]
-		allProject.Phone = phoneMemo[fullProject.EnterpriseID]
-		allProjects = append(allProjects, allProject)
-	}
-	return allProjects, total, nil
-}
-
-// GetPhoneByEnterpriseID 根据企业ID查找用户联系方式
-func GetPhoneByEnterpriseID(ctx context.Context, enterpriseID string) string {
-	db := GetReadDB(ctx)
-	var Enterprise gorm_model.Enterprise
-	// 通过企业ID获得用户ID
-	db = db.Model([]gorm_model.Enterprise{}).Where("enterprise_id", enterpriseID).First(&Enterprise)
-	userId := Enterprise.UserID
-	db1 := GetReadDB(ctx)
-	var user gorm_model.YounggeeUser
-	db1 = db1.Model([]gorm_model.YounggeeUser{}).Where("id", userId).First(&user)
-	phone := user.Phone
-	return phone
-}
-
-// GetUsernameEnterpriseID 根据企业ID查找用户名称
-func GetUsernameEnterpriseID(ctx context.Context, enterpriseID string) string {
-	db := GetReadDB(ctx)
-	var Enterprise gorm_model.Enterprise
-	// 通过企业ID获得用户ID
-	db = db.Model([]gorm_model.Enterprise{}).Where("enterprise_id", enterpriseID).First(&Enterprise)
-	userId := Enterprise.UserID
-	db1 := GetReadDB(ctx)
-	var user gorm_model.YounggeeUser
-	db1 = db1.Model([]gorm_model.YounggeeUser{}).Where("id", userId).First(&user)
-	username := user.Username
-	return username
-}
-
-func GetProjectTaskList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TaskConditions) ([]*http_model.ProjectTaskInfo, int64, error) {
-	db := GetReadDB(ctx)
-	// 查询task表信息
-	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{})
-	// 根据Project条件过滤
-	conditionType := reflect.TypeOf(conditions).Elem()
-	conditionValue := reflect.ValueOf(conditions).Elem()
-	var platform_nickname string = ""
-	for i := 0; i < conditionType.NumField(); i++ {
-		field := conditionType.Field(i)
-		tag := field.Tag.Get("condition")
-		value := conditionValue.FieldByName(field.Name)
-		if !util.IsBlank(value) && tag != "platform_nickname" {
-			db = db.Debug().Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-		} else if tag == "platform_nickname" {
-			platform_nickname = fmt.Sprintf("%v", value.Interface())
-			continue
-		}
-	}
-	var taskInfos []gorm_model.YoungeeTaskInfo
-	db = db.Model(gorm_model.YoungeeTaskInfo{})
-	// 查询总数
-	var totalTask int64
-	if err := db.Count(&totalTask).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	db.Order("task_id").Find(&taskInfos)
-
-	// 查询该页数据
-	limit := pageSize
-	offset := pageSize * pageNum // assert pageNum start with 0
-	err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-
-	var taskDatas []*http_model.ProjectTaskInfo
-	var newTaskDatas []*http_model.ProjectTaskInfo
-
-	taskDatas = pack.TaskAccountToTaskInfo(taskInfos)
-
-	for _, v := range taskDatas {
-		if platform_nickname == "" {
-			newTaskDatas = append(newTaskDatas, v)
-		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
-			newTaskDatas = append(newTaskDatas, v)
-		} else if strings.Contains(v.TaskID, platform_nickname) {
-			newTaskDatas = append(newTaskDatas, v)
-		} else {
-			totalTask--
-		}
-	}
-	return newTaskDatas, totalTask, nil
-}
-
-func CreateProject(ctx context.Context, projectInfo gorm_model.ProjectInfo) (string, error) {
-	db := GetWriteDB(ctx)
-	err := db.Create(&projectInfo).Error
-	if err != nil {
-		return "", err
-	}
-	return projectInfo.ProjectID, nil
-}
-
-func ProjectHandle(ctx context.Context, data http_model.ProjectHandleRequest) error {
-	err := ChangeProjectStatus(ctx, data.ProjectID, data.ProjectStatus)
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[project] call ChangeProjectStatus error,err:%+v", err)
-		return err
-	}
-	return nil
-}
-
-func ChangeProjectStatus(ctx context.Context, projectID string, projectStatus string) error {
-	db := GetReadDB(ctx)
-	projectInfo := gorm_model.ProjectInfo{}
-	if err := db.Debug().Model(&projectInfo).
-		Where("project_id = ?", projectID).
-		Updates(gorm_model.ProjectInfo{IsRead: 1}).
-		Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[ChangeProjectStatus] error query mysql total, err:%+v", err)
-		return err
-	}
-	return nil
-}
-
-//// 取消拉黑
-//func unBlack(ctx context.Context, ID string) error {
-//	db := GetReadDB(ctx)
-//	talentInfo := gorm_model.YoungeeTalentInfo{}
-//	if err := db.Debug().Model(&talentInfo).
-//		Where("id = ?", ID).
-//		Updates(gorm_model.YoungeeTalentInfo{InBlacklist: 0}).
-//		Error; err != nil {
-//		logrus.WithContext(ctx).Errorf("[ChangeProjectStatus] error query mysql total, err:%+v", err)
-//		return err
-//	}
-//	return nil
-//}
-
-func GetProjectRecords(ctx context.Context, userId int64, pageSize, pageNum int32) (*http_model.ProjectRecordsData, error) {
-	db := GetReadDB(ctx)
-	enterpriseID := GetEnterpriseIDByUserId(ctx, userId)
-	var projectInfos []*gorm_model.ProjectInfo
-	db = db.Model(&gorm_model.ProjectInfo{}).Where("enterprise_id = ?", enterpriseID)
-	// 查询总数
-	var total int64
-	if err := db.Count(&total).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectRecords] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	// 查询该页数据
-	limit := pageSize
-	offset := pageSize * pageNum // assert pageNum start with 0
-	err := db.Order("updated_at desc").Limit(int(limit)).Offset(int(offset)).Find(&projectInfos).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectRecords] error query mysql limit, err:%+v", err)
-		return nil, err
-	}
-	var projectRecords []*http_model.ProjectRecordsPreview
-	for _, projectInfo := range projectInfos {
-		projectRecordsPreview := new(http_model.ProjectRecordsPreview)
-		projectRecordsPreview.ProjectID = projectInfo.ProjectID
-		projectRecordsPreview.ProjectName = projectInfo.ProjectName
-		projectRecordsPreview.ProjectType = consts.GetProjectType(projectInfo.ProjectType)
-		projectRecordsPreview.UpdatedAt = conv.MustString(projectInfo.UpdatedAt, "")[:19]
-		projectRecordsPreview.ProjectStatus = consts.GetProjectStatus(projectInfo.ProjectStatus)
-		projectRecords = append(projectRecords, projectRecordsPreview)
-	}
-	projectRecordsData := http_model.ProjectRecordsData{}
-	projectRecordsData.ProjectRecordsPreview = projectRecords
-	projectRecordsData.Total = strconv.FormatInt(total, 10)
-	return &projectRecordsData, nil
-}
-
-func SetProjectFinish(ctx context.Context, projectId string) error {
-	db := GetReadDB(ctx)
-	var finishedNum int64
-	var unfinishedNum int64
-	err1 := db.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_status = 2 AND task_stage < 15", projectId).Count(&unfinishedNum).Error
-	if err1 != nil {
-		logrus.WithContext(ctx).Errorf("[Data db] Count YoungeeTaskInfo error,err:%+v", err1)
-		return err1
-	}
-	db.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2 and task_stage >= 15", projectId).Count(&finishedNum)
-	if unfinishedNum == 0 && finishedNum != 0 {
-
-		// 2. 释放企业账户因项目冻结的资金
-		// 1) 计算剩余资金
-		db1 := GetReadDB(ctx)
-		var allPayment float64
-		var realPayment float64
-		err := db1.Model(gorm_model.YoungeeTaskInfo{}).
-			Where("project_id = ? and task_status = 2 and task_stage >= 15", projectId).Pluck("COALESCE(SUM(all_payment), 0) as allPayment", &allPayment).Error
-		if err != nil {
-			log.Println("DB GetAutoCaseCloseTask error in data:", err)
-			return err
-		}
-		err = db1.Model(gorm_model.YoungeeTaskInfo{}).Select("sum(real_payment) as realPayment").
-			Where("project_id = ? and task_status = 2 and task_stage >= 15", projectId).Pluck("COALESCE(SUM(real_payment), 0) as realPayment", &realPayment).Error
-		if err != nil {
-			log.Println("DB GetAutoCaseCloseTask error in data:", err)
-			return err
-		}
-		fmt.Println("企业应支付金额总计:", allPayment, "实际支付总计:", realPayment)
-		db2 := GetReadDB(ctx)
-		var enterpriseID int64
-		db2.Model(gorm_model.ProjectInfo{}).Select("enterprise_id").Where("project_id = ?", projectId).Find(&enterpriseID)
-		// 	2). 释放剩余资金
-		err = db1.Model(gorm_model.Enterprise{}).Where("enterprise_id = ?", enterpriseID).Updates(
-			map[string]interface{}{
-				"frozen_balance":    gorm.Expr("frozen_balance - ?", allPayment),
-				"balance":           gorm.Expr("balance - ?", realPayment),
-				"available_balance": gorm.Expr("available_balance + ?", allPayment-realPayment)}).Error
-		if err != nil {
-			log.Println("DB GetAutoCaseCloseTask error in data:", err)
-			return err
-		}
-		// 1. 更新项目状态为已结束
-		t := time.Now()
-		err = db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectId).
-			Updates(map[string]interface{}{"project_status": 10, "payment_amount": realPayment, "finish_at": &t}).Error
-		if err != nil {
-			logrus.WithContext(ctx).Errorf("[Project db] Update ProjectInfo error,err:%+v", err)
-			return err
-		}
-	}
-	return nil
-}
-
-func SetSpecialProjectFinish(ctx context.Context, projectId string) error {
-	db := GetReadDB(ctx)
-	var finishedNum int64
-	var unfinishedNum int64
-	db.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_status = 2 AND task_stage < 15", projectId).Count(&unfinishedNum)
-	db.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2 and task_stage >= 15", projectId).Count(&finishedNum)
-	if unfinishedNum == 0 && finishedNum != 0 {
-		// 1. 更新项目状态为已结束
-		t := time.Now()
-		err := db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectId).Updates(gorm_model.ProjectInfo{ProjectStatus: 10, FinishAt: &t}).Error
-		if err != nil {
-			logrus.WithContext(ctx).Errorf("[Project db] Update ProjectInfo error,err:%+v", err)
-			return err
-		}
-	}
-	return nil
-}
+package db
+
+import (
+	"context"
+	"fmt"
+	"log"
+	"reflect"
+	"strconv"
+	"strings"
+	"time"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/common_model"
+	"youngee_m_api/model/gorm_model"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/pack"
+	"youngee_m_api/util"
+
+	"github.com/caixw/lib.go/conv"
+	"github.com/sirupsen/logrus"
+	"gorm.io/gorm"
+)
+
+func GetFullProjectList(ctx context.Context, pageSize, pageNum int32, condition *common_model.ProjectCondition, projectType string) ([]*gorm_model.ProjectInfo, int64, error) {
+	db := GetReadDB(ctx)
+	if projectType == "2" {
+		db = db.Debug().Model(gorm_model.ProjectInfo{}).Where("project_type = 2")
+	} else {
+		db = db.Debug().Model(gorm_model.ProjectInfo{}).Where("project_type = 1")
+	}
+	// 根据Project条件过滤
+	conditionType := reflect.TypeOf(condition).Elem()
+	conditionValue := reflect.ValueOf(condition).Elem()
+	for i := 0; i < conditionType.NumField(); i++ {
+		field := conditionType.Field(i)
+		tag := field.Tag.Get("condition")
+		value := conditionValue.FieldByName(field.Name)
+		if tag == "project_status" && util.IsBlank(value) {
+			db = db.Where(fmt.Sprintf("project_status != 3"))
+			db = db.Where(fmt.Sprintf("project_status != 5"))
+			db = db.Where(fmt.Sprintf("project_status != 7"))
+		}
+		if !util.IsBlank(value) && tag != "updated_at" && tag != "project_name" && tag != "project_id" {
+			db = db.Debug().Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+		}
+		if tag == "updated_at" && value.Interface() != "0" {
+			db = db.Where(fmt.Sprintf("updated_at like '%s%%'", value.Interface()))
+		}
+		if tag == "project_name" && !util.IsBlank(value) {
+			//db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+			db = db.Where(fmt.Sprintf("project_name like '%%%s%%'", value.Interface()))
+		}
+		if tag == "project_id" && value.Interface() != "0" {
+			db = db.Debug().Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+		}
+	}
+	// 查询总数
+	var total int64
+	var fullProjects []*gorm_model.ProjectInfo
+	if err := db.Count(&total).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetFullProjectList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	// 查询该页数据
+	limit := pageSize
+	offset := pageSize * pageNum // assert pageNum start with 0
+	err := db.Order("updated_at desc").Limit(int(limit)).Offset(int(offset)).Find(&fullProjects).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetFullProjectList] error query mysql find, err:%+v", err)
+		return nil, 0, err
+	}
+	return fullProjects, total, nil
+}
+
+func GetProjectDetail(ctx context.Context, projectID string) (*gorm_model.ProjectInfo, error) {
+	db := GetReadDB(ctx)
+	var ProjectDetail *gorm_model.ProjectInfo
+	err := db.Where("project_id = ?", projectID).First(&ProjectDetail).Error
+	if err != nil {
+		if err == gorm.ErrRecordNotFound {
+			return nil, nil
+		} else {
+			return nil, err
+		}
+	}
+	return ProjectDetail, nil
+}
+
+func UpdateProjectStatus(ctx context.Context, projectId string, status int64) error {
+	db := GetReadDB(ctx)
+	t := time.Now()
+	err := db.Model(gorm_model.ProjectInfo{}).
+		Where("project_id = ?", projectId).Updates(gorm_model.ProjectInfo{
+		ProjectStatus: status,
+		PayAt:         &t,
+	}).Error
+	if err != nil {
+		log.Println("DB UpdateProjectStatus error :", err)
+		return err
+	}
+	return nil
+}
+
+func GetRecruitStrategys(ctx context.Context, ProjectID string) ([]gorm_model.RecruitStrategy, error) {
+	db := GetReadDB(ctx)
+	var RecruitStrategys []gorm_model.RecruitStrategy
+	err := db.Where("project_id=?", ProjectID).Find(&RecruitStrategys).Error
+	if err != nil {
+		return nil, err
+	}
+	return RecruitStrategys, nil
+}
+
+func GetProjectPhoto(ctx context.Context, ProjectID string) ([]gorm_model.ProjectPhoto, error) {
+	db := GetReadDB(ctx)
+	var ProjectPhoto []gorm_model.ProjectPhoto
+	err := db.Where("project_id=?", ProjectID).Find(&ProjectPhoto).Error
+	if err != nil {
+		return nil, err
+	}
+	return ProjectPhoto, nil
+}
+
+func UpdateProject(ctx context.Context, project gorm_model.ProjectInfo) (*string, error) {
+	db := GetReadDB(ctx)
+	err := db.Model(&project).Updates(project).Error
+	if err != nil {
+		return nil, err
+	}
+	return &project.ProjectID, nil
+}
+
+func ApproveProject(ctx context.Context, projectId string, isApprove int64) (error error, message string) {
+	db := GetReadDB(ctx)
+	projectInfo := gorm_model.ProjectInfo{}
+	db = db.Debug().Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectId).First(&projectInfo)
+	t := time.Now()
+	if isApprove == 1 && projectInfo.ProjectStatus == 2 {
+		err := db.Updates(gorm_model.ProjectInfo{
+			ProjectStatus: 4,
+			PassAt:        &t,
+		}).Error
+		message = "审核通过"
+		if err != nil {
+			logrus.Println("DB AutoUpdateStatus error :", err)
+			return err, ""
+		}
+	} else if isApprove == 2 && projectInfo.ProjectStatus == 2 {
+		err := db.Updates(gorm_model.ProjectInfo{
+			ProjectStatus: 8,
+			FinishAt:      &t,
+			FailReason:    2,
+		}).Error
+		message = "项目存在风险已禁止发布"
+		if err != nil {
+			logrus.Println("DB AutoUpdateStatus error :", err)
+			return err, ""
+		}
+	} else {
+		return nil, "操作失败"
+	}
+	return nil, message
+}
+
+func GetAllProject(ctx context.Context, pageSize, pageNum int32) ([]*http_model.GetAllProjectPreview, int64, error) {
+	db := GetReadDB(ctx)
+	db = db.Debug().Model(gorm_model.ProjectInfo{}).Where("project_status = 1 or project_status = 6")
+	db = db.Where("is_read = 0")
+	var allProjects []*http_model.GetAllProjectPreview
+	// 查询总数
+	var total int64
+	var fullProjects []*gorm_model.ProjectInfo
+	if err := db.Count(&total).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetAllProject] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	// 查询该页数据
+	limit := pageSize
+	offset := pageSize * pageNum // assert pageNum start with 0
+	err := db.Order("updated_at desc").Limit(int(limit)).Offset(int(offset)).Find(&fullProjects).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetAllProject] error query mysql find, err:%+v", err)
+		return nil, 0, err
+	}
+	var EnterpriseIDs []string
+	for _, fullProject := range fullProjects {
+		EnterpriseIDs = append(EnterpriseIDs, fullProject.EnterpriseID)
+	}
+	EnterpriseIDs = util.RemoveStrRepByMap(EnterpriseIDs)
+	userMemo := map[string]string{}
+	phoneMemo := map[string]string{}
+	for _, EnterpriseID := range EnterpriseIDs {
+		userMemo[EnterpriseID] = GetUsernameEnterpriseID(ctx, EnterpriseID)
+	}
+	for _, EnterpriseID := range EnterpriseIDs {
+		phoneMemo[EnterpriseID] = GetPhoneByEnterpriseID(ctx, EnterpriseID)
+	}
+	for _, fullProject := range fullProjects {
+		allProject := new(http_model.GetAllProjectPreview)
+		allProject.ProjectUpdated = conv.MustString(fullProject.UpdatedAt, "")
+		allProject.ProjectStatus = conv.MustString(fullProject.ProjectStatus, "")
+		allProject.ProjectId = conv.MustString(fullProject.ProjectID, "")
+		allProject.EnterpriseID = fullProject.EnterpriseID
+		allProject.Username = userMemo[fullProject.EnterpriseID]
+		allProject.Phone = phoneMemo[fullProject.EnterpriseID]
+		allProjects = append(allProjects, allProject)
+	}
+	return allProjects, total, nil
+}
+
+// GetPhoneByEnterpriseID 根据企业ID查找用户联系方式
+func GetPhoneByEnterpriseID(ctx context.Context, enterpriseID string) string {
+	db := GetReadDB(ctx)
+	var Enterprise gorm_model.Enterprise
+	// 通过企业ID获得用户ID
+	db = db.Model([]gorm_model.Enterprise{}).Where("enterprise_id", enterpriseID).First(&Enterprise)
+	userId := Enterprise.UserID
+	db1 := GetReadDB(ctx)
+	var user gorm_model.YounggeeUser
+	db1 = db1.Model([]gorm_model.YounggeeUser{}).Where("id", userId).First(&user)
+	phone := user.Phone
+	return phone
+}
+
+// GetUsernameEnterpriseID 根据企业ID查找用户名称
+func GetUsernameEnterpriseID(ctx context.Context, enterpriseID string) string {
+	db := GetReadDB(ctx)
+	var Enterprise gorm_model.Enterprise
+	// 通过企业ID获得用户ID
+	db = db.Model([]gorm_model.Enterprise{}).Where("enterprise_id", enterpriseID).First(&Enterprise)
+	userId := Enterprise.UserID
+	db1 := GetReadDB(ctx)
+	var user gorm_model.YounggeeUser
+	db1 = db1.Model([]gorm_model.YounggeeUser{}).Where("id", userId).First(&user)
+	username := user.Username
+	return username
+}
+
+func GetProjectTaskList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TaskConditions) ([]*http_model.ProjectTaskInfo, int64, error) {
+	db := GetReadDB(ctx)
+	// 查询task表信息
+	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{})
+	// 根据Project条件过滤
+	conditionType := reflect.TypeOf(conditions).Elem()
+	conditionValue := reflect.ValueOf(conditions).Elem()
+	var platform_nickname string = ""
+	for i := 0; i < conditionType.NumField(); i++ {
+		field := conditionType.Field(i)
+		tag := field.Tag.Get("condition")
+		value := conditionValue.FieldByName(field.Name)
+		if !util.IsBlank(value) && tag != "platform_nickname" {
+			db = db.Debug().Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+		} else if tag == "platform_nickname" {
+			platform_nickname = fmt.Sprintf("%v", value.Interface())
+			continue
+		}
+	}
+	var taskInfos []gorm_model.YoungeeTaskInfo
+	db = db.Model(gorm_model.YoungeeTaskInfo{})
+	// 查询总数
+	var totalTask int64
+	if err := db.Count(&totalTask).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	db.Order("task_id").Find(&taskInfos)
+
+	// 查询该页数据
+	limit := pageSize
+	offset := pageSize * pageNum // assert pageNum start with 0
+	err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+
+	var taskDatas []*http_model.ProjectTaskInfo
+	var newTaskDatas []*http_model.ProjectTaskInfo
+
+	taskDatas = pack.TaskAccountToTaskInfo(taskInfos)
+
+	for _, v := range taskDatas {
+		if platform_nickname == "" {
+			newTaskDatas = append(newTaskDatas, v)
+		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
+			newTaskDatas = append(newTaskDatas, v)
+		} else if strings.Contains(v.TaskID, platform_nickname) {
+			newTaskDatas = append(newTaskDatas, v)
+		} else {
+			totalTask--
+		}
+	}
+	return newTaskDatas, totalTask, nil
+}
+
+func CreateProject(ctx context.Context, projectInfo gorm_model.ProjectInfo) (string, error) {
+	db := GetWriteDB(ctx)
+	err := db.Create(&projectInfo).Error
+	if err != nil {
+		return "", err
+	}
+	return projectInfo.ProjectID, nil
+}
+
+func ProjectHandle(ctx context.Context, data http_model.ProjectHandleRequest) error {
+	err := ChangeProjectStatus(ctx, data.ProjectID, data.ProjectStatus)
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[project] call ChangeProjectStatus error,err:%+v", err)
+		return err
+	}
+	return nil
+}
+
+func ChangeProjectStatus(ctx context.Context, projectID string, projectStatus string) error {
+	db := GetReadDB(ctx)
+	projectInfo := gorm_model.ProjectInfo{}
+	if err := db.Debug().Model(&projectInfo).
+		Where("project_id = ?", projectID).
+		Updates(gorm_model.ProjectInfo{IsRead: 1}).
+		Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[ChangeProjectStatus] error query mysql total, err:%+v", err)
+		return err
+	}
+	return nil
+}
+
+//// 取消拉黑
+//func unBlack(ctx context.Context, ID string) error {
+//	db := GetReadDB(ctx)
+//	talentInfo := gorm_model.YoungeeTalentInfo{}
+//	if err := db.Debug().Model(&talentInfo).
+//		Where("id = ?", ID).
+//		Updates(gorm_model.YoungeeTalentInfo{InBlacklist: 0}).
+//		Error; err != nil {
+//		logrus.WithContext(ctx).Errorf("[ChangeProjectStatus] error query mysql total, err:%+v", err)
+//		return err
+//	}
+//	return nil
+//}
+
+func GetProjectRecords(ctx context.Context, userId int64, pageSize, pageNum int32) (*http_model.ProjectRecordsData, error) {
+	db := GetReadDB(ctx)
+	enterpriseID := GetEnterpriseIDByUserId(ctx, userId)
+	var projectInfos []*gorm_model.ProjectInfo
+	db = db.Model(&gorm_model.ProjectInfo{}).Where("enterprise_id = ?", enterpriseID)
+	// 查询总数
+	var total int64
+	if err := db.Count(&total).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectRecords] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	// 查询该页数据
+	limit := pageSize
+	offset := pageSize * pageNum // assert pageNum start with 0
+	err := db.Order("updated_at desc").Limit(int(limit)).Offset(int(offset)).Find(&projectInfos).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectRecords] error query mysql limit, err:%+v", err)
+		return nil, err
+	}
+	var projectRecords []*http_model.ProjectRecordsPreview
+	for _, projectInfo := range projectInfos {
+		projectRecordsPreview := new(http_model.ProjectRecordsPreview)
+		projectRecordsPreview.ProjectID = projectInfo.ProjectID
+		projectRecordsPreview.ProjectName = projectInfo.ProjectName
+		projectRecordsPreview.ProjectType = consts.GetProjectType(projectInfo.ProjectType)
+		projectRecordsPreview.UpdatedAt = conv.MustString(projectInfo.UpdatedAt, "")[:19]
+		projectRecordsPreview.ProjectStatus = consts.GetProjectStatus(projectInfo.ProjectStatus)
+		projectRecords = append(projectRecords, projectRecordsPreview)
+	}
+	projectRecordsData := http_model.ProjectRecordsData{}
+	projectRecordsData.ProjectRecordsPreview = projectRecords
+	projectRecordsData.Total = strconv.FormatInt(total, 10)
+	return &projectRecordsData, nil
+}
+
+func SetProjectFinish(ctx context.Context, projectId string) error {
+	db := GetReadDB(ctx)
+	var finishedNum int64
+	var unfinishedNum int64
+	err1 := db.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_status = 2 AND task_stage < 15", projectId).Count(&unfinishedNum).Error
+	if err1 != nil {
+		logrus.WithContext(ctx).Errorf("[Data db] Count YoungeeTaskInfo error,err:%+v", err1)
+		return err1
+	}
+	db.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2 and task_stage >= 15", projectId).Count(&finishedNum)
+	if unfinishedNum == 0 && finishedNum != 0 {
+
+		// 2. 释放企业账户因项目冻结的资金
+		// 1) 计算剩余资金
+		db1 := GetReadDB(ctx)
+		var allPayment float64
+		var realPayment float64
+		err := db1.Model(gorm_model.YoungeeTaskInfo{}).
+			Where("project_id = ? and task_status = 2 and task_stage >= 15", projectId).Pluck("COALESCE(SUM(all_payment), 0) as allPayment", &allPayment).Error
+		if err != nil {
+			log.Println("DB GetAutoCaseCloseTask error in data:", err)
+			return err
+		}
+		err = db1.Model(gorm_model.YoungeeTaskInfo{}).Select("sum(real_payment) as realPayment").
+			Where("project_id = ? and task_status = 2 and task_stage >= 15", projectId).Pluck("COALESCE(SUM(real_payment), 0) as realPayment", &realPayment).Error
+		if err != nil {
+			log.Println("DB GetAutoCaseCloseTask error in data:", err)
+			return err
+		}
+		fmt.Println("企业应支付金额总计:", allPayment, "实际支付总计:", realPayment)
+		db2 := GetReadDB(ctx)
+		var enterpriseID int64
+		db2.Model(gorm_model.ProjectInfo{}).Select("enterprise_id").Where("project_id = ?", projectId).Find(&enterpriseID)
+		// 	2). 释放剩余资金
+		err = db1.Model(gorm_model.Enterprise{}).Where("enterprise_id = ?", enterpriseID).Updates(
+			map[string]interface{}{
+				"frozen_balance":    gorm.Expr("frozen_balance - ?", allPayment),
+				"balance":           gorm.Expr("balance - ?", realPayment),
+				"available_balance": gorm.Expr("available_balance + ?", allPayment-realPayment)}).Error
+		if err != nil {
+			log.Println("DB GetAutoCaseCloseTask error in data:", err)
+			return err
+		}
+		// 1. 更新项目状态为已结束
+		t := time.Now()
+		err = db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectId).
+			Updates(map[string]interface{}{"project_status": 10, "payment_amount": realPayment, "finish_at": &t}).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[Project db] Update ProjectInfo error,err:%+v", err)
+			return err
+		}
+	}
+	return nil
+}
+
+func SetSpecialProjectFinish(ctx context.Context, projectId string) error {
+	db := GetReadDB(ctx)
+	var finishedNum int64
+	var unfinishedNum int64
+	db.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_status = 2 AND task_stage < 15", projectId).Count(&unfinishedNum)
+	db.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2 and task_stage >= 15", projectId).Count(&finishedNum)
+	if unfinishedNum == 0 && finishedNum != 0 {
+		// 1. 更新项目状态为已结束
+		t := time.Now()
+		err := db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectId).Updates(gorm_model.ProjectInfo{ProjectStatus: 10, FinishAt: &t}).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[Project db] Update ProjectInfo error,err:%+v", err)
+			return err
+		}
+	}
+	return nil
+}

+ 74 - 74
db/recruit_strategy.go

@@ -1,74 +1,74 @@
-package db
-
-import (
-	"context"
-	"fmt"
-	"github.com/sirupsen/logrus"
-	"gorm.io/gorm"
-	"youngee_m_api/model/gorm_model"
-)
-
-func CreateRecruitStrategy(ctx context.Context, recruitStrategys []gorm_model.RecruitStrategy) error {
-	db := GetReadDB(ctx)
-	fmt.Println("recruitStrategys", recruitStrategys)
-	err := db.Create(&recruitStrategys).Error
-	if err != nil {
-		return err
-	}
-	return nil
-}
-
-func DeleteRecruitStrategyByProjectID(ctx context.Context, projectID string) error {
-	db := GetReadDB(ctx)
-	err := db.Where("project_id = ?", projectID).Delete(&gorm_model.RecruitStrategy{}).Error
-	if err != nil {
-		return err
-	}
-	return nil
-}
-
-func CalculateSelectedNumberByRecruitStrategyID(ctx context.Context, recruitStrategyID int64, AddNumber int64) error {
-	db := GetReadDB(ctx)
-	err := db.Debug().Model(gorm_model.RecruitStrategy{}).Where("recruit_strategy_id = ?", recruitStrategyID).
-		Updates(map[string]interface{}{
-			"selected_number": gorm.Expr("selected_number + ?", AddNumber),
-			"waiting_number":  gorm.Expr("waiting_number + ?", AddNumber)}).Error
-	if err != nil {
-		return err
-	}
-	return nil
-}
-
-func UpdateLogisticsNumber(ctx context.Context, RecruitStrategyID int64, delivered_value int64, waiting_value int64, signed_value int64) error {
-	db := GetReadDB(ctx)
-	err := db.Model(gorm_model.RecruitStrategy{}).Where("recruit_strategy_id = ?", RecruitStrategyID).
-		Updates(map[string]interface{}{"delivered_number": gorm.Expr("delivered_number + ?", delivered_value),
-			"waiting_number": gorm.Expr("waiting_number + ?", waiting_value), "signed_number": gorm.Expr("signed_number + ?", signed_value)}).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[logistics db] call CreateLogistics error,err:%+v", err)
-		return err
-	}
-	return nil
-}
-
-func GetRecruitStrategyIdByTS(ctx context.Context, projectId string, strategyID int64) (*int64, error) {
-	db := GetReadDB(ctx)
-	RecruitStrategy := &gorm_model.RecruitStrategy{}
-	err := db.Model(gorm_model.RecruitStrategy{}).Where("project_id = ? AND strategy_id = ?", projectId, strategyID).Scan(RecruitStrategy).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[logistics db] call GetRecruitStrategyIdByTS error,err:%+v", err)
-		return nil, err
-	}
-	return &RecruitStrategy.RecruitStrategyID, nil
-}
-
-func GetRecruitStrategyByProjectId(ctx context.Context, projectId string) ([]gorm_model.RecruitStrategy, error) {
-	db := GetReadDB(ctx)
-	var RecruitStrategy []gorm_model.RecruitStrategy
-	err := db.Model(gorm_model.RecruitStrategy{}).Where("project_id = ?", projectId).Scan(&RecruitStrategy).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[logistics db] call GetRecruitStrategyIdByProjectId error,err:%+v", err)
-		return nil, err
-	}
-	return RecruitStrategy, nil
-}
+package db
+
+import (
+	"context"
+	"fmt"
+	"github.com/sirupsen/logrus"
+	"gorm.io/gorm"
+	"youngee_m_api/model/gorm_model"
+)
+
+func CreateRecruitStrategy(ctx context.Context, recruitStrategys []gorm_model.RecruitStrategy) error {
+	db := GetReadDB(ctx)
+	fmt.Println("recruitStrategys", recruitStrategys)
+	err := db.Create(&recruitStrategys).Error
+	if err != nil {
+		return err
+	}
+	return nil
+}
+
+func DeleteRecruitStrategyByProjectID(ctx context.Context, projectID string) error {
+	db := GetReadDB(ctx)
+	err := db.Where("project_id = ?", projectID).Delete(&gorm_model.RecruitStrategy{}).Error
+	if err != nil {
+		return err
+	}
+	return nil
+}
+
+func CalculateSelectedNumberByRecruitStrategyID(ctx context.Context, recruitStrategyID int64, AddNumber int64) error {
+	db := GetReadDB(ctx)
+	err := db.Debug().Model(gorm_model.RecruitStrategy{}).Where("recruit_strategy_id = ?", recruitStrategyID).
+		Updates(map[string]interface{}{
+			"selected_number": gorm.Expr("selected_number + ?", AddNumber),
+			"waiting_number":  gorm.Expr("waiting_number + ?", AddNumber)}).Error
+	if err != nil {
+		return err
+	}
+	return nil
+}
+
+func UpdateLogisticsNumber(ctx context.Context, RecruitStrategyID int64, delivered_value int64, waiting_value int64, signed_value int64) error {
+	db := GetReadDB(ctx)
+	err := db.Model(gorm_model.RecruitStrategy{}).Where("recruit_strategy_id = ?", RecruitStrategyID).
+		Updates(map[string]interface{}{"delivered_number": gorm.Expr("delivered_number + ?", delivered_value),
+			"waiting_number": gorm.Expr("waiting_number + ?", waiting_value), "signed_number": gorm.Expr("signed_number + ?", signed_value)}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[logistics db] call CreateLogistics error,err:%+v", err)
+		return err
+	}
+	return nil
+}
+
+func GetRecruitStrategyIdByTS(ctx context.Context, projectId string, strategyID int64) (*int64, error) {
+	db := GetReadDB(ctx)
+	RecruitStrategy := &gorm_model.RecruitStrategy{}
+	err := db.Model(gorm_model.RecruitStrategy{}).Where("project_id = ? AND strategy_id = ?", projectId, strategyID).Scan(RecruitStrategy).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[logistics db] call GetRecruitStrategyIdByTS error,err:%+v", err)
+		return nil, err
+	}
+	return &RecruitStrategy.RecruitStrategyID, nil
+}
+
+func GetRecruitStrategyByProjectId(ctx context.Context, projectId string) ([]gorm_model.RecruitStrategy, error) {
+	db := GetReadDB(ctx)
+	var RecruitStrategy []gorm_model.RecruitStrategy
+	err := db.Model(gorm_model.RecruitStrategy{}).Where("project_id = ?", projectId).Scan(&RecruitStrategy).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[logistics db] call GetRecruitStrategyIdByProjectId error,err:%+v", err)
+		return nil, err
+	}
+	return RecruitStrategy, nil
+}

+ 274 - 274
db/script.go

@@ -1,274 +1,274 @@
-package db
-
-import (
-	"context"
-	"fmt"
-	"reflect"
-	"strings"
-	"time"
-	"youngee_m_api/model/common_model"
-	"youngee_m_api/model/gorm_model"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/pack"
-	"youngee_m_api/util"
-
-	"github.com/caixw/lib.go/conv"
-	"github.com/sirupsen/logrus"
-)
-
-// GetTaskScriptList 查询上传脚本的task list
-func GetTaskScriptList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskScriptInfo, int64, error) {
-	db := GetReadDB(ctx)
-	// 查询Task表信息
-	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2 ")
-	// 根据Project条件过滤
-	conditionType := reflect.TypeOf(conditions).Elem()
-	conditionValue := reflect.ValueOf(conditions).Elem()
-	var platform_nickname string = ""
-	for i := 0; i < conditionType.NumField(); i++ {
-		field := conditionType.Field(i)
-		tag := field.Tag.Get("condition")
-		value := conditionValue.FieldByName(field.Name)
-		if tag == "script_status" {
-			fmt.Printf("script %+v", value.Interface() == int64(2))
-			if value.Interface() == int64(2) {
-				db = db.Where("task_stage = 8")
-			} else {
-				db = db.Where("task_stage > 8 and task_stage <> 16")
-			}
-			continue
-		} else if !util.IsBlank(value) {
-			if tag == "platform_nickname" {
-				platform_nickname = fmt.Sprintf("%v", value.Interface())
-				continue
-			} else if tag == "project_id" || tag == "strategy_id" {
-				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-			}
-		}
-	}
-
-	var taskInfos []gorm_model.YoungeeTaskInfo
-	db = db.Model(gorm_model.YoungeeTaskInfo{})
-	// 查询总数
-	var totalTask int64
-	if err := db.Count(&totalTask).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	db.Order("task_id").Find(&taskInfos)
-
-	// 查询任务id
-	var taskIds []string
-	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
-	for _, taskInfo := range taskInfos {
-		taskIds = append(taskIds, taskInfo.TaskId)
-		taskMap[taskInfo.TaskId] = taskInfo
-	}
-	db1 := GetReadDB(ctx)
-	db1 = db1.Debug().Model(gorm_model.YounggeeScriptInfo{})
-
-	var ScriptInfos []gorm_model.YounggeeScriptInfo
-	db1 = db1.Model(gorm_model.YounggeeScriptInfo{}).Where("task_id IN ? AND is_submit=? ", taskIds, 1)
-	if conditions.ScriptStatus == int64(2) {
-		db1 = db1.Where("is_review = 0").Find(&ScriptInfos)
-	} else {
-		db1 = db1.Where("is_ok = 1").Find(&ScriptInfos)
-	}
-	ScriptMap := make(map[string]gorm_model.YounggeeScriptInfo)
-	for _, ScriptInfo := range ScriptInfos {
-		ScriptMap[ScriptInfo.TaskID] = ScriptInfo
-	}
-	// 查询总数
-	var totalScript int64
-	if err := db1.Count(&totalScript).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	// 查询该页数据
-	limit := pageSize
-	offset := pageSize * pageNum // assert pageNum start with 0
-	err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
-
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-
-	var TaskScripts []*http_model.TaskScript
-	var taskScripts []*http_model.TaskScriptInfo
-	var newTaskScripts []*http_model.TaskScriptInfo
-	for _, taskId := range taskIds {
-		TaskScript := new(http_model.TaskScript)
-		TaskScript.Talent = taskMap[taskId]
-		TaskScript.Script = ScriptMap[taskId]
-		TaskScripts = append(TaskScripts, TaskScript)
-	}
-
-	taskScripts = pack.TaskScriptToTaskInfo(TaskScripts)
-
-	for _, v := range taskScripts {
-		if platform_nickname == "" {
-			newTaskScripts = append(newTaskScripts, v)
-		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
-			newTaskScripts = append(newTaskScripts, v)
-		} else if strings.Contains(conv.MustString(v.TaskID, ""), platform_nickname) {
-			newTaskScripts = append(newTaskScripts, v)
-		} else {
-			totalTask--
-		}
-	}
-	return newTaskScripts, totalTask, nil
-}
-
-// ScriptOpinion 提交意见
-func ScriptOpinion(ctx context.Context, TaskID string, ReviseOpinion string) error {
-	db := GetReadDB(ctx)
-	err := db.Model(gorm_model.YounggeeScriptInfo{}).Where("task_id = ? and is_review = 0", TaskID).Updates(map[string]interface{}{"revise_opinion": ReviseOpinion, "reject_at": time.Now(), "is_review": 1}).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[Script db] Update YounggeeScriptInfo error,err:%+v", err)
-		return err
-	}
-	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeTaskInfo{ScriptStatus: 3}).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[Script db] Update YoungeeTaskInfo error,err:%+v", err)
-		return err
-	}
-	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeTaskInfo{TaskStage: 7}).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[Script db] Update YoungeeTaskInfo error,err:%+v", err)
-		return err
-	}
-	return nil
-}
-
-// AcceptScript 同意脚本
-func AcceptScript(ctx context.Context, TaskIDs []string) error {
-	db := GetReadDB(ctx)
-	err := db.Model(gorm_model.YounggeeScriptInfo{}).Where("task_id in ?  and is_review = 0", TaskIDs).Updates(map[string]interface{}{"is_ok": 1, "is_review": 1, "agree_at": time.Now()}).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[Script db] Update YounggeeScriptInfo error,err:%+v", err)
-		return err
-	}
-	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{ScriptStatus: 5}).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[Script db] Update YoungeeTaskInfo error,err:%+v", err)
-		return err
-	}
-	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{TaskStage: 9}).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[Script db] Update YoungeeTaskInfo error,err:%+v", err)
-		return err
-	}
-	return nil
-}
-
-// GetSpecialTaskScriptList 专项任务-查询上传脚本的task list
-func GetSpecialTaskScriptList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.SpecialTaskScriptInfo, int64, error) {
-	db := GetReadDB(ctx)
-	// 查询Task表信息
-	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
-	// 根据Project条件过滤
-	conditionType := reflect.TypeOf(conditions).Elem()
-	conditionValue := reflect.ValueOf(conditions).Elem()
-	var platform_nickname string = ""
-	for i := 0; i < conditionType.NumField(); i++ {
-		field := conditionType.Field(i)
-		tag := field.Tag.Get("condition")
-		value := conditionValue.FieldByName(field.Name)
-		if tag == "script_status" {
-			fmt.Printf("script %+v", value.Interface() == int64(2))
-			if value.Interface() == int64(2) {
-				db = db.Where("task_stage = 8")
-			} else {
-				db = db.Where("task_stage > 8 and task_stage <> 16")
-			}
-			continue
-		} else if !util.IsBlank(value) {
-			if tag == "platform_nickname" {
-				platform_nickname = fmt.Sprintf("%v", value.Interface())
-				continue
-			} else if tag == "project_id" {
-				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-			}
-		}
-	}
-	var taskInfos []gorm_model.YoungeeTaskInfo
-	db = db.Model(gorm_model.YoungeeTaskInfo{})
-	// 查询总数
-	var totalTask int64
-	if err := db.Count(&totalTask).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	db.Order("task_id").Find(&taskInfos)
-
-	// 查询任务id
-	var taskIds []string
-	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
-	for _, taskInfo := range taskInfos {
-		taskIds = append(taskIds, taskInfo.TaskId)
-		taskMap[taskInfo.TaskId] = taskInfo
-	}
-	db1 := GetReadDB(ctx)
-	db1 = db1.Debug().Model(gorm_model.YounggeeScriptInfo{})
-
-	var ScriptInfos []gorm_model.YounggeeScriptInfo
-	db1 = db1.Model(gorm_model.YounggeeScriptInfo{}).Where("task_id IN ? AND is_submit=? ", taskIds, 1)
-	if conditions.ScriptStatus == int64(2) {
-		db1 = db1.Where("is_review = 0").Find(&ScriptInfos)
-	} else {
-		db1 = db1.Where("is_ok = 1").Find(&ScriptInfos)
-	}
-	ScriptMap := make(map[string]gorm_model.YounggeeScriptInfo)
-	for _, ScriptInfo := range ScriptInfos {
-		ScriptMap[ScriptInfo.TaskID] = ScriptInfo
-	}
-	// 查询总数
-	var totalScript int64
-	if err := db1.Count(&totalScript).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	var misNum int64
-	if totalScript > totalTask {
-		misNum = totalScript - totalTask
-	} else {
-		misNum = totalTask - totalScript
-	}
-	//logrus.Println("totalScript,totalTalent,misNum:", totalScript, totalTask, misNum)
-
-	// 查询该页数据
-	limit := pageSize + misNum
-	offset := pageSize * pageNum // assert pageNum start with 0
-	err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
-
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-
-	var TaskScripts []*http_model.SpecialTaskScript
-	var taskScripts []*http_model.SpecialTaskScriptInfo
-	var newTaskScripts []*http_model.SpecialTaskScriptInfo
-	for _, taskId := range taskIds {
-		TaskScript := new(http_model.SpecialTaskScript)
-		TaskScript.Talent = taskMap[taskId]
-		TaskScript.Script = ScriptMap[taskId]
-		TaskScripts = append(TaskScripts, TaskScript)
-	}
-
-	taskScripts = pack.SpecialTaskScriptToTaskInfo(TaskScripts)
-
-	for _, v := range taskScripts {
-		if platform_nickname == "" {
-			newTaskScripts = append(newTaskScripts, v)
-		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
-			newTaskScripts = append(newTaskScripts, v)
-		} else if strings.Contains(conv.MustString(v.TaskID, ""), platform_nickname) {
-			newTaskScripts = append(newTaskScripts, v)
-		} else {
-			totalTask--
-		}
-	}
-	return newTaskScripts, totalTask, nil
-}
+package db
+
+import (
+	"context"
+	"fmt"
+	"reflect"
+	"strings"
+	"time"
+	"youngee_m_api/model/common_model"
+	"youngee_m_api/model/gorm_model"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/pack"
+	"youngee_m_api/util"
+
+	"github.com/caixw/lib.go/conv"
+	"github.com/sirupsen/logrus"
+)
+
+// GetTaskScriptList 查询上传脚本的task list
+func GetTaskScriptList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskScriptInfo, int64, error) {
+	db := GetReadDB(ctx)
+	// 查询Task表信息
+	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2 ")
+	// 根据Project条件过滤
+	conditionType := reflect.TypeOf(conditions).Elem()
+	conditionValue := reflect.ValueOf(conditions).Elem()
+	var platform_nickname string = ""
+	for i := 0; i < conditionType.NumField(); i++ {
+		field := conditionType.Field(i)
+		tag := field.Tag.Get("condition")
+		value := conditionValue.FieldByName(field.Name)
+		if tag == "script_status" {
+			fmt.Printf("script %+v", value.Interface() == int64(2))
+			if value.Interface() == int64(2) {
+				db = db.Where("task_stage = 8")
+			} else {
+				db = db.Where("task_stage > 8 and task_stage <> 16")
+			}
+			continue
+		} else if !util.IsBlank(value) {
+			if tag == "platform_nickname" {
+				platform_nickname = fmt.Sprintf("%v", value.Interface())
+				continue
+			} else if tag == "project_id" || tag == "strategy_id" {
+				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+			}
+		}
+	}
+
+	var taskInfos []gorm_model.YoungeeTaskInfo
+	db = db.Model(gorm_model.YoungeeTaskInfo{})
+	// 查询总数
+	var totalTask int64
+	if err := db.Count(&totalTask).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	db.Order("task_id").Find(&taskInfos)
+
+	// 查询任务id
+	var taskIds []string
+	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
+	for _, taskInfo := range taskInfos {
+		taskIds = append(taskIds, taskInfo.TaskId)
+		taskMap[taskInfo.TaskId] = taskInfo
+	}
+	db1 := GetReadDB(ctx)
+	db1 = db1.Debug().Model(gorm_model.YounggeeScriptInfo{})
+
+	var ScriptInfos []gorm_model.YounggeeScriptInfo
+	db1 = db1.Model(gorm_model.YounggeeScriptInfo{}).Where("task_id IN ? AND is_submit=? ", taskIds, 1)
+	if conditions.ScriptStatus == int64(2) {
+		db1 = db1.Where("is_review = 0").Find(&ScriptInfos)
+	} else {
+		db1 = db1.Where("is_ok = 1").Find(&ScriptInfos)
+	}
+	ScriptMap := make(map[string]gorm_model.YounggeeScriptInfo)
+	for _, ScriptInfo := range ScriptInfos {
+		ScriptMap[ScriptInfo.TaskID] = ScriptInfo
+	}
+	// 查询总数
+	var totalScript int64
+	if err := db1.Count(&totalScript).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	// 查询该页数据
+	limit := pageSize
+	offset := pageSize * pageNum // assert pageNum start with 0
+	err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
+
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+
+	var TaskScripts []*http_model.TaskScript
+	var taskScripts []*http_model.TaskScriptInfo
+	var newTaskScripts []*http_model.TaskScriptInfo
+	for _, taskId := range taskIds {
+		TaskScript := new(http_model.TaskScript)
+		TaskScript.Talent = taskMap[taskId]
+		TaskScript.Script = ScriptMap[taskId]
+		TaskScripts = append(TaskScripts, TaskScript)
+	}
+
+	taskScripts = pack.TaskScriptToTaskInfo(TaskScripts)
+
+	for _, v := range taskScripts {
+		if platform_nickname == "" {
+			newTaskScripts = append(newTaskScripts, v)
+		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
+			newTaskScripts = append(newTaskScripts, v)
+		} else if strings.Contains(conv.MustString(v.TaskID, ""), platform_nickname) {
+			newTaskScripts = append(newTaskScripts, v)
+		} else {
+			totalTask--
+		}
+	}
+	return newTaskScripts, totalTask, nil
+}
+
+// ScriptOpinion 提交意见
+func ScriptOpinion(ctx context.Context, TaskID string, ReviseOpinion string) error {
+	db := GetReadDB(ctx)
+	err := db.Model(gorm_model.YounggeeScriptInfo{}).Where("task_id = ? and is_review = 0", TaskID).Updates(map[string]interface{}{"revise_opinion": ReviseOpinion, "reject_at": time.Now(), "is_review": 1}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Script db] Update YounggeeScriptInfo error,err:%+v", err)
+		return err
+	}
+	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeTaskInfo{ScriptStatus: 3}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Script db] Update YoungeeTaskInfo error,err:%+v", err)
+		return err
+	}
+	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeTaskInfo{TaskStage: 7}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Script db] Update YoungeeTaskInfo error,err:%+v", err)
+		return err
+	}
+	return nil
+}
+
+// AcceptScript 同意脚本
+func AcceptScript(ctx context.Context, TaskIDs []string) error {
+	db := GetReadDB(ctx)
+	err := db.Model(gorm_model.YounggeeScriptInfo{}).Where("task_id in ?  and is_review = 0", TaskIDs).Updates(map[string]interface{}{"is_ok": 1, "is_review": 1, "agree_at": time.Now()}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Script db] Update YounggeeScriptInfo error,err:%+v", err)
+		return err
+	}
+	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{ScriptStatus: 5}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Script db] Update YoungeeTaskInfo error,err:%+v", err)
+		return err
+	}
+	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{TaskStage: 9}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Script db] Update YoungeeTaskInfo error,err:%+v", err)
+		return err
+	}
+	return nil
+}
+
+// GetSpecialTaskScriptList 专项任务-查询上传脚本的task list
+func GetSpecialTaskScriptList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.SpecialTaskScriptInfo, int64, error) {
+	db := GetReadDB(ctx)
+	// 查询Task表信息
+	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
+	// 根据Project条件过滤
+	conditionType := reflect.TypeOf(conditions).Elem()
+	conditionValue := reflect.ValueOf(conditions).Elem()
+	var platform_nickname string = ""
+	for i := 0; i < conditionType.NumField(); i++ {
+		field := conditionType.Field(i)
+		tag := field.Tag.Get("condition")
+		value := conditionValue.FieldByName(field.Name)
+		if tag == "script_status" {
+			fmt.Printf("script %+v", value.Interface() == int64(2))
+			if value.Interface() == int64(2) {
+				db = db.Where("task_stage = 8")
+			} else {
+				db = db.Where("task_stage > 8 and task_stage <> 16")
+			}
+			continue
+		} else if !util.IsBlank(value) {
+			if tag == "platform_nickname" {
+				platform_nickname = fmt.Sprintf("%v", value.Interface())
+				continue
+			} else if tag == "project_id" {
+				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+			}
+		}
+	}
+	var taskInfos []gorm_model.YoungeeTaskInfo
+	db = db.Model(gorm_model.YoungeeTaskInfo{})
+	// 查询总数
+	var totalTask int64
+	if err := db.Count(&totalTask).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	db.Order("task_id").Find(&taskInfos)
+
+	// 查询任务id
+	var taskIds []string
+	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
+	for _, taskInfo := range taskInfos {
+		taskIds = append(taskIds, taskInfo.TaskId)
+		taskMap[taskInfo.TaskId] = taskInfo
+	}
+	db1 := GetReadDB(ctx)
+	db1 = db1.Debug().Model(gorm_model.YounggeeScriptInfo{})
+
+	var ScriptInfos []gorm_model.YounggeeScriptInfo
+	db1 = db1.Model(gorm_model.YounggeeScriptInfo{}).Where("task_id IN ? AND is_submit=? ", taskIds, 1)
+	if conditions.ScriptStatus == int64(2) {
+		db1 = db1.Where("is_review = 0").Find(&ScriptInfos)
+	} else {
+		db1 = db1.Where("is_ok = 1").Find(&ScriptInfos)
+	}
+	ScriptMap := make(map[string]gorm_model.YounggeeScriptInfo)
+	for _, ScriptInfo := range ScriptInfos {
+		ScriptMap[ScriptInfo.TaskID] = ScriptInfo
+	}
+	// 查询总数
+	var totalScript int64
+	if err := db1.Count(&totalScript).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	var misNum int64
+	if totalScript > totalTask {
+		misNum = totalScript - totalTask
+	} else {
+		misNum = totalTask - totalScript
+	}
+	//logrus.Println("totalScript,totalTalent,misNum:", totalScript, totalTask, misNum)
+
+	// 查询该页数据
+	limit := pageSize + misNum
+	offset := pageSize * pageNum // assert pageNum start with 0
+	err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
+
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+
+	var TaskScripts []*http_model.SpecialTaskScript
+	var taskScripts []*http_model.SpecialTaskScriptInfo
+	var newTaskScripts []*http_model.SpecialTaskScriptInfo
+	for _, taskId := range taskIds {
+		TaskScript := new(http_model.SpecialTaskScript)
+		TaskScript.Talent = taskMap[taskId]
+		TaskScript.Script = ScriptMap[taskId]
+		TaskScripts = append(TaskScripts, TaskScript)
+	}
+
+	taskScripts = pack.SpecialTaskScriptToTaskInfo(TaskScripts)
+
+	for _, v := range taskScripts {
+		if platform_nickname == "" {
+			newTaskScripts = append(newTaskScripts, v)
+		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
+			newTaskScripts = append(newTaskScripts, v)
+		} else if strings.Contains(conv.MustString(v.TaskID, ""), platform_nickname) {
+			newTaskScripts = append(newTaskScripts, v)
+		} else {
+			totalTask--
+		}
+	}
+	return newTaskScripts, totalTask, nil
+}

+ 269 - 269
db/sectask.go

@@ -1,269 +1,269 @@
-package db
-
-import (
-	"context"
-	"errors"
-	"fmt"
-	"github.com/issue9/conv"
-	"github.com/sirupsen/logrus"
-	"github.com/tidwall/gjson"
-	"gorm.io/gorm"
-	"strings"
-	"time"
-	"youngee_m_api/model/gorm_model"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/pack"
-)
-
-func GetSecTaskById(ctx context.Context, secTaskId string) (*gorm_model.YounggeeSecTaskInfo, error) {
-	db := GetWriteDB(ctx)
-	secTaskInfo := gorm_model.YounggeeSecTaskInfo{}
-	whereCondition := gorm_model.YounggeeSecTaskInfo{TaskID: secTaskId}
-	result := db.Where(&whereCondition).First(&secTaskInfo)
-	if result.Error != nil {
-		if errors.Is(result.Error, gorm.ErrRecordNotFound) {
-			return nil, nil
-		} else {
-			return nil, result.Error
-		}
-	}
-	return &secTaskInfo, nil
-}
-
-func GetSecTaskList(ctx context.Context, selectionId string, taskStatus int, searchValue string, pageSize, pageNum int64) ([]*http_model.SecTaskInfo, int64, error) {
-	db := GetReadDB(ctx)
-	var taskStages []int
-	switch taskStatus {
-	case 3:
-		taskStages = []int{3}
-		break
-	case 4:
-		taskStages = []int{4, 6, 7, 8, 9, 10}
-		break
-	case 6:
-		taskStages = []int{6}
-		break
-	case 7:
-		taskStages = []int{7, 8, 9, 10}
-		break
-	case 9:
-		taskStages = []int{9}
-		break
-	case 10:
-		taskStages = []int{10}
-		break
-	}
-	db = db.Model(gorm_model.YounggeeSecTaskInfo{}).Where("selection_id = ? and task_stage in ?", selectionId, taskStages)
-
-	// 查询总数
-	var total int64
-	var secTaskInfoList []*gorm_model.YounggeeSecTaskInfo
-	if err := db.Count(&total).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetSelectionList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	// 查询该页数据
-	limit := pageSize
-	offset := pageSize * (pageNum - 1) // assert pageNum start with 0
-	err := db.Order("create_date desc").Limit(int(limit)).Offset(int(offset)).Find(&secTaskInfoList).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetSelectionList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-
-	fmt.Println("secTaskInfoList:", secTaskInfoList)
-	newSecTaskInfoList := pack.GormSecTaskListToHttpSecTaskList(secTaskInfoList)
-	fmt.Println("newSecTaskInfoList:", newSecTaskInfoList)
-
-	for i, secTask := range newSecTaskInfoList {
-		newSecTaskInfoList[i].DetailAddr = GetRegion(ctx, secTask.RegionCode) + secTask.DetailAddr
-	}
-	var resSecTaskInfoList []*http_model.SecTaskInfo
-	if searchValue != "" {
-		for _, v := range newSecTaskInfoList {
-			if strings.Contains(v.SecTaskId, searchValue) {
-				resSecTaskInfoList = append(resSecTaskInfoList, v)
-			} else if strings.Contains(v.PlatformNickname, searchValue) {
-				resSecTaskInfoList = append(resSecTaskInfoList, v)
-			} else {
-				total--
-			}
-		}
-	} else {
-		resSecTaskInfoList = newSecTaskInfoList
-	}
-	fmt.Println("resSecTaskInfoList: ", resSecTaskInfoList)
-	return resSecTaskInfoList, total, nil
-}
-
-func PassSecTaskCoop(ctx context.Context, selectionId string, taskIds []string) (bool, error) {
-	db := GetWriteDB(ctx)
-	// 1. 校验
-	var count int64
-	fmt.Println("task_ids: ", taskIds)
-	err := db.Model(gorm_model.YounggeeSecTaskInfo{}).Where("task_id IN ? AND task_stage = 3", taskIds).Count(&count).Error
-
-	fmt.Println("count: ", count)
-	if err != nil {
-		return false, err
-	}
-	if int64(len(taskIds)) == 0 || count != int64(len(taskIds)) {
-		return false, errors.New("任务id有误")
-	}
-
-	// 2. 查询任务对应达人id(用于生成达人消息)
-	var talentIds []string
-	err = db.Model(gorm_model.YounggeeSecTaskInfo{}).Where("task_id IN ?", taskIds).Select("talent_id").Find(&talentIds).Error
-	if err != nil {
-		return false, err
-	}
-	// 3. 查询任务对应选品名称(用于生成达人消息)
-	var selection gorm_model.YounggeeSelectionInfo
-	err = db.Model(gorm_model.YounggeeSelectionInfo{}).Where("selection_id = ?", selectionId).Find(&selection).Error
-	if err != nil {
-		return false, err
-	}
-
-	err = db.Transaction(func(tx *gorm.DB) error {
-		// 2. 修改任务状态和任务阶段
-		// 若选品不提供样品,则直接跳转执行阶段,否则进入发货阶段
-		if selection.SampleMode == 3 {
-			updateData := gorm_model.YounggeeSecTaskInfo{
-				TaskStatus:       2,
-				TaskStage:        8,
-				SelectDate:       time.Now(),
-				LogisticsStatus:  3,
-				AssignmentStatus: 1,
-			}
-			err = tx.Model(gorm_model.YounggeeSecTaskInfo{}).Where("task_id IN ? AND task_stage = 3", taskIds).Updates(updateData).Error
-			if err != nil {
-				return err
-			}
-		} else {
-			updateData := gorm_model.YounggeeSecTaskInfo{
-				TaskStatus:      2,
-				TaskStage:       6,
-				SelectDate:      time.Now(),
-				LogisticsStatus: 1,
-			}
-			err = tx.Model(gorm_model.YounggeeSecTaskInfo{}).Where("task_id IN ? AND task_stage = 3", taskIds).Updates(updateData).Error
-			if err != nil {
-				return err
-			}
-		}
-		// 3. 生成达人消息
-		for _, talendId := range talentIds {
-			err = CreateMessage(ctx, 1, 1, talendId, selection.SelectionName)
-			if err != nil {
-				return err
-			}
-		}
-		// 返回 nil 提交事务
-		return nil
-	})
-	if err != nil {
-		return false, err
-	}
-	return true, nil
-}
-
-func RefuseSecTaskCoop(ctx context.Context, taskIds []string) (bool, error) {
-	db := GetWriteDB(ctx)
-	// 1. 校验
-	var count int64
-	err := db.Model(gorm_model.YounggeeSecTaskInfo{}).Where("task_id IN ? AND task_stage = 3", taskIds).Count(&count).Error
-	if err != nil {
-		return false, err
-	}
-	if count != int64(len(taskIds)) {
-		return false, errors.New("任务id有误")
-	}
-
-	// 查询任务对应达人id
-	var talentIds []string
-	err = db.Model(gorm_model.YounggeeSecTaskInfo{}).Where("task_id IN ?", taskIds).Select("talent_id").Find(&talentIds).Error
-	if err != nil {
-		return false, err
-	}
-
-	err = db.Transaction(func(tx *gorm.DB) error {
-		// 2. 修改任务状态和任务阶段
-		updateData := gorm_model.YounggeeSecTaskInfo{
-			TaskStatus:     3,
-			TaskStage:      5,
-			CompleteDate:   time.Now(),
-			CompleteStatus: 3,
-		}
-		err = tx.Model(gorm_model.YounggeeSecTaskInfo{}).Where("task_id IN ? AND task_stage = 3", taskIds).Updates(updateData).Error
-		if err != nil {
-			return err
-		}
-
-		// 返回 nil 提交事务
-		return nil
-	})
-	if err != nil {
-		return false, err
-	}
-	return true, nil
-}
-
-func UpdateSecTask(ctx context.Context, updateData gorm_model.YounggeeSecTaskInfo) (bool, error) {
-	db := GetWriteDB(ctx)
-	whereCondition := gorm_model.YounggeeSecTaskInfo{
-		TaskID: updateData.TaskID,
-	}
-	err := db.Where(whereCondition).Updates(&updateData).Error
-	if err != nil {
-		return false, err
-	}
-	return true, nil
-}
-
-func GetSecTaskSettleList(ctx context.Context, secTaskList []*http_model.SecTaskInfo, selectionId string, taskStatus int) ([]*http_model.SecTaskInfo, error) {
-	db := GetWriteDB(ctx)
-	whereCondition := gorm_model.YounggeeSelectionInfo{
-		SelectionID: selectionId,
-	}
-	selectionInfo := gorm_model.YounggeeSelectionInfo{}
-	err := db.Model(gorm_model.YounggeeSelectionInfo{}).Where(whereCondition).Scan(&selectionInfo).Error
-	if err != nil {
-		return nil, err
-	}
-
-	// 获取返现金额、悬赏金额
-	fmt.Println("selectionInfo.ProductSnap: ", selectionInfo.ProductSnap)
-	price := conv.MustString(gjson.Get(selectionInfo.ProductSnap, "ProductPrice"), "")
-	for i, _ := range secTaskList {
-		secTaskList[i].TaskReward = selectionInfo.TaskReward
-		secTaskList[i].ReturnMoney = price
-	}
-
-	// 获取作业信息
-	var taskIds []string
-	taskMap := make(map[string]*http_model.SecTaskInfo)
-	for _, secTask := range secTaskList {
-		taskIds = append(taskIds, secTask.SecTaskId)
-		taskMap[secTask.SecTaskId] = secTask
-	}
-
-	var assignmentInfos []gorm_model.YounggeeAssignmentInfo
-	err = db.Model(gorm_model.YounggeeAssignmentInfo{}).Where("task_id IN ?", taskIds).Find(&assignmentInfos).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	assignmentMap := make(map[string]gorm_model.YounggeeAssignmentInfo)
-	for _, assignmentInfo := range assignmentInfos {
-		assignmentMap[assignmentInfo.TaskID] = assignmentInfo
-	}
-	// 融合信息
-	for i, secTask := range secTaskList {
-		taskID := secTask.SecTaskId
-		secTaskList[i].AssignmentLink = assignmentMap[taskID].LinkUrl
-		secTaskList[i].DataScreenshot = assignmentMap[taskID].PhotoUrl
-		secTaskList[i].CreateDate = conv.MustString(assignmentMap[taskID].CreateAt, "")
-	}
-
-	return secTaskList, nil
-}
+package db
+
+import (
+	"context"
+	"errors"
+	"fmt"
+	"github.com/issue9/conv"
+	"github.com/sirupsen/logrus"
+	"github.com/tidwall/gjson"
+	"gorm.io/gorm"
+	"strings"
+	"time"
+	"youngee_m_api/model/gorm_model"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/pack"
+)
+
+func GetSecTaskById(ctx context.Context, secTaskId string) (*gorm_model.YounggeeSecTaskInfo, error) {
+	db := GetWriteDB(ctx)
+	secTaskInfo := gorm_model.YounggeeSecTaskInfo{}
+	whereCondition := gorm_model.YounggeeSecTaskInfo{TaskID: secTaskId}
+	result := db.Where(&whereCondition).First(&secTaskInfo)
+	if result.Error != nil {
+		if errors.Is(result.Error, gorm.ErrRecordNotFound) {
+			return nil, nil
+		} else {
+			return nil, result.Error
+		}
+	}
+	return &secTaskInfo, nil
+}
+
+func GetSecTaskList(ctx context.Context, selectionId string, taskStatus int, searchValue string, pageSize, pageNum int64) ([]*http_model.SecTaskInfo, int64, error) {
+	db := GetReadDB(ctx)
+	var taskStages []int
+	switch taskStatus {
+	case 3:
+		taskStages = []int{3}
+		break
+	case 4:
+		taskStages = []int{4, 6, 7, 8, 9, 10}
+		break
+	case 6:
+		taskStages = []int{6}
+		break
+	case 7:
+		taskStages = []int{7, 8, 9, 10}
+		break
+	case 9:
+		taskStages = []int{9}
+		break
+	case 10:
+		taskStages = []int{10}
+		break
+	}
+	db = db.Model(gorm_model.YounggeeSecTaskInfo{}).Where("selection_id = ? and task_stage in ?", selectionId, taskStages)
+
+	// 查询总数
+	var total int64
+	var secTaskInfoList []*gorm_model.YounggeeSecTaskInfo
+	if err := db.Count(&total).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetSelectionList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	// 查询该页数据
+	limit := pageSize
+	offset := pageSize * (pageNum - 1) // assert pageNum start with 0
+	err := db.Order("create_date desc").Limit(int(limit)).Offset(int(offset)).Find(&secTaskInfoList).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetSelectionList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+
+	fmt.Println("secTaskInfoList:", secTaskInfoList)
+	newSecTaskInfoList := pack.GormSecTaskListToHttpSecTaskList(secTaskInfoList)
+	fmt.Println("newSecTaskInfoList:", newSecTaskInfoList)
+
+	for i, secTask := range newSecTaskInfoList {
+		newSecTaskInfoList[i].DetailAddr = GetRegion(ctx, secTask.RegionCode) + secTask.DetailAddr
+	}
+	var resSecTaskInfoList []*http_model.SecTaskInfo
+	if searchValue != "" {
+		for _, v := range newSecTaskInfoList {
+			if strings.Contains(v.SecTaskId, searchValue) {
+				resSecTaskInfoList = append(resSecTaskInfoList, v)
+			} else if strings.Contains(v.PlatformNickname, searchValue) {
+				resSecTaskInfoList = append(resSecTaskInfoList, v)
+			} else {
+				total--
+			}
+		}
+	} else {
+		resSecTaskInfoList = newSecTaskInfoList
+	}
+	fmt.Println("resSecTaskInfoList: ", resSecTaskInfoList)
+	return resSecTaskInfoList, total, nil
+}
+
+func PassSecTaskCoop(ctx context.Context, selectionId string, taskIds []string) (bool, error) {
+	db := GetWriteDB(ctx)
+	// 1. 校验
+	var count int64
+	fmt.Println("task_ids: ", taskIds)
+	err := db.Model(gorm_model.YounggeeSecTaskInfo{}).Where("task_id IN ? AND task_stage = 3", taskIds).Count(&count).Error
+
+	fmt.Println("count: ", count)
+	if err != nil {
+		return false, err
+	}
+	if int64(len(taskIds)) == 0 || count != int64(len(taskIds)) {
+		return false, errors.New("任务id有误")
+	}
+
+	// 2. 查询任务对应达人id(用于生成达人消息)
+	var talentIds []string
+	err = db.Model(gorm_model.YounggeeSecTaskInfo{}).Where("task_id IN ?", taskIds).Select("talent_id").Find(&talentIds).Error
+	if err != nil {
+		return false, err
+	}
+	// 3. 查询任务对应选品名称(用于生成达人消息)
+	var selection gorm_model.YounggeeSelectionInfo
+	err = db.Model(gorm_model.YounggeeSelectionInfo{}).Where("selection_id = ?", selectionId).Find(&selection).Error
+	if err != nil {
+		return false, err
+	}
+
+	err = db.Transaction(func(tx *gorm.DB) error {
+		// 2. 修改任务状态和任务阶段
+		// 若选品不提供样品,则直接跳转执行阶段,否则进入发货阶段
+		if selection.SampleMode == 3 {
+			updateData := gorm_model.YounggeeSecTaskInfo{
+				TaskStatus:       2,
+				TaskStage:        8,
+				SelectDate:       time.Now(),
+				LogisticsStatus:  3,
+				AssignmentStatus: 1,
+			}
+			err = tx.Model(gorm_model.YounggeeSecTaskInfo{}).Where("task_id IN ? AND task_stage = 3", taskIds).Updates(updateData).Error
+			if err != nil {
+				return err
+			}
+		} else {
+			updateData := gorm_model.YounggeeSecTaskInfo{
+				TaskStatus:      2,
+				TaskStage:       6,
+				SelectDate:      time.Now(),
+				LogisticsStatus: 1,
+			}
+			err = tx.Model(gorm_model.YounggeeSecTaskInfo{}).Where("task_id IN ? AND task_stage = 3", taskIds).Updates(updateData).Error
+			if err != nil {
+				return err
+			}
+		}
+		// 3. 生成达人消息
+		for _, talendId := range talentIds {
+			err = CreateMessage(ctx, 1, 1, talendId, selection.SelectionName)
+			if err != nil {
+				return err
+			}
+		}
+		// 返回 nil 提交事务
+		return nil
+	})
+	if err != nil {
+		return false, err
+	}
+	return true, nil
+}
+
+func RefuseSecTaskCoop(ctx context.Context, taskIds []string) (bool, error) {
+	db := GetWriteDB(ctx)
+	// 1. 校验
+	var count int64
+	err := db.Model(gorm_model.YounggeeSecTaskInfo{}).Where("task_id IN ? AND task_stage = 3", taskIds).Count(&count).Error
+	if err != nil {
+		return false, err
+	}
+	if count != int64(len(taskIds)) {
+		return false, errors.New("任务id有误")
+	}
+
+	// 查询任务对应达人id
+	var talentIds []string
+	err = db.Model(gorm_model.YounggeeSecTaskInfo{}).Where("task_id IN ?", taskIds).Select("talent_id").Find(&talentIds).Error
+	if err != nil {
+		return false, err
+	}
+
+	err = db.Transaction(func(tx *gorm.DB) error {
+		// 2. 修改任务状态和任务阶段
+		updateData := gorm_model.YounggeeSecTaskInfo{
+			TaskStatus:     3,
+			TaskStage:      5,
+			CompleteDate:   time.Now(),
+			CompleteStatus: 3,
+		}
+		err = tx.Model(gorm_model.YounggeeSecTaskInfo{}).Where("task_id IN ? AND task_stage = 3", taskIds).Updates(updateData).Error
+		if err != nil {
+			return err
+		}
+
+		// 返回 nil 提交事务
+		return nil
+	})
+	if err != nil {
+		return false, err
+	}
+	return true, nil
+}
+
+func UpdateSecTask(ctx context.Context, updateData gorm_model.YounggeeSecTaskInfo) (bool, error) {
+	db := GetWriteDB(ctx)
+	whereCondition := gorm_model.YounggeeSecTaskInfo{
+		TaskID: updateData.TaskID,
+	}
+	err := db.Where(whereCondition).Updates(&updateData).Error
+	if err != nil {
+		return false, err
+	}
+	return true, nil
+}
+
+func GetSecTaskSettleList(ctx context.Context, secTaskList []*http_model.SecTaskInfo, selectionId string, taskStatus int) ([]*http_model.SecTaskInfo, error) {
+	db := GetWriteDB(ctx)
+	whereCondition := gorm_model.YounggeeSelectionInfo{
+		SelectionID: selectionId,
+	}
+	selectionInfo := gorm_model.YounggeeSelectionInfo{}
+	err := db.Model(gorm_model.YounggeeSelectionInfo{}).Where(whereCondition).Scan(&selectionInfo).Error
+	if err != nil {
+		return nil, err
+	}
+
+	// 获取返现金额、悬赏金额
+	fmt.Println("selectionInfo.ProductSnap: ", selectionInfo.ProductSnap)
+	price := conv.MustString(gjson.Get(selectionInfo.ProductSnap, "ProductPrice"), "")
+	for i, _ := range secTaskList {
+		secTaskList[i].TaskReward = selectionInfo.TaskReward
+		secTaskList[i].ReturnMoney = price
+	}
+
+	// 获取作业信息
+	var taskIds []string
+	taskMap := make(map[string]*http_model.SecTaskInfo)
+	for _, secTask := range secTaskList {
+		taskIds = append(taskIds, secTask.SecTaskId)
+		taskMap[secTask.SecTaskId] = secTask
+	}
+
+	var assignmentInfos []gorm_model.YounggeeAssignmentInfo
+	err = db.Model(gorm_model.YounggeeAssignmentInfo{}).Where("task_id IN ?", taskIds).Find(&assignmentInfos).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	assignmentMap := make(map[string]gorm_model.YounggeeAssignmentInfo)
+	for _, assignmentInfo := range assignmentInfos {
+		assignmentMap[assignmentInfo.TaskID] = assignmentInfo
+	}
+	// 融合信息
+	for i, secTask := range secTaskList {
+		taskID := secTask.SecTaskId
+		secTaskList[i].AssignmentLink = assignmentMap[taskID].LinkUrl
+		secTaskList[i].DataScreenshot = assignmentMap[taskID].PhotoUrl
+		secTaskList[i].CreateDate = conv.MustString(assignmentMap[taskID].CreateAt, "")
+	}
+
+	return secTaskList, nil
+}

+ 29 - 29
db/sectask_logistics.go

@@ -1,29 +1,29 @@
-package db
-
-import (
-	"context"
-	"youngee_m_api/model/gorm_model"
-)
-
-func CreateSecTaskLogistics(ctx context.Context, logistics gorm_model.YoungeeTaskLogistics) (*int64, error) {
-	db := GetWriteDB(ctx)
-	err := db.Create(&logistics).Error
-	if err != nil {
-		return nil, err
-	}
-
-	return &logistics.LogisticsID, nil
-}
-
-func UpdateSecTaskLogistics(ctx context.Context, updateData gorm_model.YoungeeTaskLogistics) (*int64, error) {
-	db := GetWriteDB(ctx)
-	whereCondition := gorm_model.YoungeeTaskLogistics{
-		LogisticsID: updateData.LogisticsID,
-	}
-	err := db.Where(whereCondition).Updates(&updateData).Error
-	if err != nil {
-		return nil, err
-	}
-
-	return &updateData.LogisticsID, nil
-}
+package db
+
+import (
+	"context"
+	"youngee_m_api/model/gorm_model"
+)
+
+func CreateSecTaskLogistics(ctx context.Context, logistics gorm_model.YoungeeTaskLogistics) (*int64, error) {
+	db := GetWriteDB(ctx)
+	err := db.Create(&logistics).Error
+	if err != nil {
+		return nil, err
+	}
+
+	return &logistics.LogisticsID, nil
+}
+
+func UpdateSecTaskLogistics(ctx context.Context, updateData gorm_model.YoungeeTaskLogistics) (*int64, error) {
+	db := GetWriteDB(ctx)
+	whereCondition := gorm_model.YoungeeTaskLogistics{
+		LogisticsID: updateData.LogisticsID,
+	}
+	err := db.Where(whereCondition).Updates(&updateData).Error
+	if err != nil {
+		return nil, err
+	}
+
+	return &updateData.LogisticsID, nil
+}

+ 1 - 1
db/selection.go

@@ -162,7 +162,7 @@ func GetSelectionList(ctx context.Context, enterpriseID string, pageSize, pageNu
 	limit := pageSize
 	offset := pageSize * pageNum // assert pageNum start with 0
 	if selectionStatus == "1" {
-		err := db.Order("submit_at desc").Limit(int(limit)).Offset(int(offset)).Find(&selectionInfos).Error
+		err := db.Order("updated_at desc").Limit(int(limit)).Offset(int(offset)).Find(&selectionInfos).Error
 		if err != nil {
 			logrus.WithContext(ctx).Errorf("[GetSelectionList] error query mysql total, err:%+v", err)
 			return nil, 0, err

+ 307 - 307
db/sketch.go

@@ -1,307 +1,307 @@
-package db
-
-import (
-	"context"
-	"fmt"
-	"reflect"
-	"strings"
-	"time"
-	"youngee_m_api/model/common_model"
-	"youngee_m_api/model/gorm_model"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/pack"
-	"youngee_m_api/util"
-
-	"github.com/caixw/lib.go/conv"
-	"github.com/sirupsen/logrus"
-)
-
-// GetTaskSketchList 查询上传初稿的task list
-func GetTaskSketchList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskSketchInfo, int64, error) {
-	db := GetReadDB(ctx)
-	// 查询Task表信息
-	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
-	// 根据Project条件过滤
-	conditionType := reflect.TypeOf(conditions).Elem()
-	conditionValue := reflect.ValueOf(conditions).Elem()
-	var platform_nickname string = ""
-	for i := 0; i < conditionType.NumField(); i++ {
-		field := conditionType.Field(i)
-		tag := field.Tag.Get("condition")
-		value := conditionValue.FieldByName(field.Name)
-		if tag == "sketch_status" {
-			fmt.Printf("sketch %+v", value.Interface() == int64(0))
-			if value.Interface() == int64(0) {
-				db = db.Where("task_stage = 10")
-			} else {
-				db = db.Where("task_stage > 10 and task_stage <> 16")
-			}
-			continue
-		} else if !util.IsBlank(value) {
-			if tag == "platform_nickname" {
-				platform_nickname = fmt.Sprintf("%v", value.Interface())
-				continue
-			} else if tag == "project_id" || tag == "strategy_id" {
-				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-			}
-		}
-	}
-	var taskInfos []gorm_model.YoungeeTaskInfo
-	db = db.Model(gorm_model.YoungeeTaskInfo{})
-	// 查询总数
-	var totalTask int64
-	if err := db.Count(&totalTask).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	db.Order("task_id").Find(&taskInfos)
-
-	// 查询任务id
-	var taskIds []string
-	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
-	for _, taskInfo := range taskInfos {
-		taskIds = append(taskIds, taskInfo.TaskId)
-		taskMap[taskInfo.TaskId] = taskInfo
-	}
-	db1 := GetReadDB(ctx)
-	db1 = db1.Debug().Model(gorm_model.YounggeeSketchInfo{})
-
-	var SketchInfos []gorm_model.YounggeeSketchInfo
-	db1 = db1.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id IN ? AND is_submit=? ", taskIds, 1)
-	if conditions.SketchStatus == int64(0) {
-		db1 = db1.Where("is_review = 0").Find(&SketchInfos)
-	} else {
-		db1 = db1.Where("is_ok = 1").Find(&SketchInfos)
-	}
-	//fmt.Printf("初稿查询:%+v", SketchInfos)
-	SketchMap := make(map[string]gorm_model.YounggeeSketchInfo)
-	for _, SketchInfo := range SketchInfos {
-		SketchMap[SketchInfo.TaskID] = SketchInfo
-	}
-	// 查询总数
-	var totalSketch int64
-	if err := db1.Count(&totalSketch).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	var misNum int64
-	if totalSketch > totalTask {
-		misNum = totalSketch - totalTask
-	} else {
-		misNum = totalTask - totalSketch
-	}
-	//logrus.Println("totalSketch,totalTalent,misNum:", totalSketch, totalTask, misNum)
-
-	// 查询该页数据
-	limit := pageSize + misNum
-	offset := pageSize * pageNum // assert pageNum start with 0
-	//fmt.Printf("limit %+v  offset %+v \n", limit, offset)
-	err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
-
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-
-	var TaskSketches []*http_model.TaskSketch
-	var taskSketches []*http_model.TaskSketchInfo
-	var newTaskSketches []*http_model.TaskSketchInfo
-	for _, taskId := range taskIds {
-		TaskSketch := new(http_model.TaskSketch)
-		TaskSketch.Talent = taskMap[taskId]
-		TaskSketch.Sketch = SketchMap[taskId]
-		TaskSketches = append(TaskSketches, TaskSketch)
-	}
-
-	taskSketches = pack.TaskSketchToTaskInfo(TaskSketches)
-
-	for _, v := range taskSketches {
-		if platform_nickname == "" {
-			newTaskSketches = append(newTaskSketches, v)
-		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
-			newTaskSketches = append(newTaskSketches, v)
-		} else if strings.Contains(conv.MustString(v.TaskID, ""), platform_nickname) {
-			newTaskSketches = append(newTaskSketches, v)
-		} else {
-			totalTask--
-		}
-	}
-	return newTaskSketches, totalTask, nil
-}
-
-// SketchOption 提交意见
-func SketchOption(ctx context.Context, TaskID string, ReviseOpinion string) error {
-	db := GetReadDB(ctx)
-	//fmt.Printf("初稿意见 %d %+v", TaskID, ReviseOpinion)
-	err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id = ? and is_review = 0", TaskID).Updates(map[string]interface{}{"revise_opinion": ReviseOpinion, "reject_at": time.Now(), "is_review": 1}).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[Sketch db] call RevisieOption error,err:%+v", err)
-		return err
-	}
-	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeTaskInfo{SketchStatus: 3}).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
-		return err
-	}
-	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeTaskInfo{TaskStage: 9}).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
-		return err
-	}
-	return nil
-}
-
-// AcceptSketch 同意初稿
-func AcceptSketch(ctx context.Context, TaskIDs []string) error {
-	db := GetReadDB(ctx)
-	err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id in ? and is_review = 0", TaskIDs).Updates(map[string]interface{}{"is_ok": 1, "is_review": 1, "agree_at": time.Now()}).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[Sketch db] Update YounggeeSketchInfo error,err:%+v", err)
-		return err
-	}
-	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{SketchStatus: 5}).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
-		return err
-	}
-
-	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{TaskStage: 11}).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
-		return err
-	}
-	return nil
-}
-
-// FindPhoto
-func FindSketchInfo(ctx context.Context, TaskID string) (*gorm_model.YounggeeSketchInfo, error) {
-	db := GetReadDB(ctx)
-	var SketchInfo gorm_model.YounggeeSketchInfo
-	err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id = ? and is_ok = 1", TaskID).Find(&SketchInfo).Error
-	if err != nil {
-		return nil, err
-	}
-	return &SketchInfo, nil
-}
-
-// FindPhoto
-func FindPhoto(ctx context.Context, SketchID int64) ([]gorm_model.YounggeeSketchPhoto, error) {
-	db := GetReadDB(ctx)
-	var SketchPhotos []gorm_model.YounggeeSketchPhoto
-	err := db.Model(gorm_model.YounggeeSketchPhoto{}).Where("sketch_id=?", SketchID).Find(&SketchPhotos).Error
-	if err != nil {
-		return nil, err
-	}
-	return SketchPhotos, nil
-}
-
-// GetSpecialTaskSketchList 专项任务-查询上传初稿的task list
-func GetSpecialTaskSketchList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.SpecialTaskSketchInfo, int64, error) {
-	db := GetReadDB(ctx)
-	// 查询Task表信息
-	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
-	// 根据Project条件过滤
-	conditionType := reflect.TypeOf(conditions).Elem()
-	conditionValue := reflect.ValueOf(conditions).Elem()
-	var platform_nickname string = ""
-	for i := 0; i < conditionType.NumField(); i++ {
-		field := conditionType.Field(i)
-		tag := field.Tag.Get("condition")
-		value := conditionValue.FieldByName(field.Name)
-		if tag == "sketch_status" {
-			fmt.Printf("sketch %+v", value.Interface() == int64(0))
-			if value.Interface() == int64(0) {
-				db = db.Where("task_stage = ?", 10)
-			} else {
-				db = db.Where("task_stage > ?", 10)
-			}
-			continue
-		} else if !util.IsBlank(value) {
-			if tag == "platform_nickname" {
-				platform_nickname = fmt.Sprintf("%v", value.Interface())
-				continue
-			} else if tag == "project_id" {
-				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-			}
-		}
-	}
-	var taskInfos []gorm_model.YoungeeTaskInfo
-	db = db.Model(gorm_model.YoungeeTaskInfo{})
-	// 查询总数
-	var totalTask int64
-	if err := db.Count(&totalTask).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	db.Order("task_id").Find(&taskInfos)
-
-	// 查询任务id
-	var taskIds []string
-	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
-	for _, taskInfo := range taskInfos {
-		taskIds = append(taskIds, taskInfo.TaskId)
-		taskMap[taskInfo.TaskId] = taskInfo
-	}
-	db1 := GetReadDB(ctx)
-	db1 = db1.Debug().Model(gorm_model.YounggeeSketchInfo{})
-
-	var SketchInfos []gorm_model.YounggeeSketchInfo
-	db1 = db1.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id IN ? AND is_submit=? ", taskIds, 1)
-	if conditions.SketchStatus == int64(0) {
-		db1 = db1.Where("is_review = 0").Find(&SketchInfos)
-	} else {
-		db1 = db1.Where("is_ok = 1").Find(&SketchInfos)
-	}
-	SketchMap := make(map[string]gorm_model.YounggeeSketchInfo)
-	for _, SketchInfo := range SketchInfos {
-		SketchMap[SketchInfo.TaskID] = SketchInfo
-	}
-	// 查询总数
-	var totalSketch int64
-	if err := db1.Count(&totalSketch).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	var misNum int64
-	if totalSketch > totalTask {
-		misNum = totalSketch - totalTask
-	} else {
-		misNum = totalTask - totalSketch
-	}
-	//logrus.Println("totalSketch,totalTalent,misNum:", totalSketch, totalTask, misNum)
-
-	// 查询该页数据
-	limit := pageSize + misNum
-	offset := pageSize * pageNum // assert pageNum start with 0
-	err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
-
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-
-	var TaskSketches []*http_model.SpecialTaskSketch
-	var taskSketches []*http_model.SpecialTaskSketchInfo
-	var newTaskSketches []*http_model.SpecialTaskSketchInfo
-	for _, taskId := range taskIds {
-		TaskSketch := new(http_model.SpecialTaskSketch)
-		TaskSketch.Talent = taskMap[taskId]
-		TaskSketch.Sketch = SketchMap[taskId]
-		TaskSketches = append(TaskSketches, TaskSketch)
-	}
-
-	taskSketches = pack.SpecialTaskSketchToTaskInfo(TaskSketches)
-
-	for _, v := range taskSketches {
-		if platform_nickname == "" {
-			newTaskSketches = append(newTaskSketches, v)
-		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
-			newTaskSketches = append(newTaskSketches, v)
-		} else if strings.Contains(conv.MustString(v.TaskID, ""), platform_nickname) {
-			newTaskSketches = append(newTaskSketches, v)
-		} else {
-			totalTask--
-		}
-	}
-	return newTaskSketches, totalTask, nil
-}
+package db
+
+import (
+	"context"
+	"fmt"
+	"reflect"
+	"strings"
+	"time"
+	"youngee_m_api/model/common_model"
+	"youngee_m_api/model/gorm_model"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/pack"
+	"youngee_m_api/util"
+
+	"github.com/caixw/lib.go/conv"
+	"github.com/sirupsen/logrus"
+)
+
+// GetTaskSketchList 查询上传初稿的task list
+func GetTaskSketchList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.TaskSketchInfo, int64, error) {
+	db := GetReadDB(ctx)
+	// 查询Task表信息
+	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
+	// 根据Project条件过滤
+	conditionType := reflect.TypeOf(conditions).Elem()
+	conditionValue := reflect.ValueOf(conditions).Elem()
+	var platform_nickname string = ""
+	for i := 0; i < conditionType.NumField(); i++ {
+		field := conditionType.Field(i)
+		tag := field.Tag.Get("condition")
+		value := conditionValue.FieldByName(field.Name)
+		if tag == "sketch_status" {
+			fmt.Printf("sketch %+v", value.Interface() == int64(0))
+			if value.Interface() == int64(0) {
+				db = db.Where("task_stage = 10")
+			} else {
+				db = db.Where("task_stage > 10 and task_stage <> 16")
+			}
+			continue
+		} else if !util.IsBlank(value) {
+			if tag == "platform_nickname" {
+				platform_nickname = fmt.Sprintf("%v", value.Interface())
+				continue
+			} else if tag == "project_id" || tag == "strategy_id" {
+				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+			}
+		}
+	}
+	var taskInfos []gorm_model.YoungeeTaskInfo
+	db = db.Model(gorm_model.YoungeeTaskInfo{})
+	// 查询总数
+	var totalTask int64
+	if err := db.Count(&totalTask).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	db.Order("task_id").Find(&taskInfos)
+
+	// 查询任务id
+	var taskIds []string
+	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
+	for _, taskInfo := range taskInfos {
+		taskIds = append(taskIds, taskInfo.TaskId)
+		taskMap[taskInfo.TaskId] = taskInfo
+	}
+	db1 := GetReadDB(ctx)
+	db1 = db1.Debug().Model(gorm_model.YounggeeSketchInfo{})
+
+	var SketchInfos []gorm_model.YounggeeSketchInfo
+	db1 = db1.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id IN ? AND is_submit=? ", taskIds, 1)
+	if conditions.SketchStatus == int64(0) {
+		db1 = db1.Where("is_review = 0").Find(&SketchInfos)
+	} else {
+		db1 = db1.Where("is_ok = 1").Find(&SketchInfos)
+	}
+	//fmt.Printf("初稿查询:%+v", SketchInfos)
+	SketchMap := make(map[string]gorm_model.YounggeeSketchInfo)
+	for _, SketchInfo := range SketchInfos {
+		SketchMap[SketchInfo.TaskID] = SketchInfo
+	}
+	// 查询总数
+	var totalSketch int64
+	if err := db1.Count(&totalSketch).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	var misNum int64
+	if totalSketch > totalTask {
+		misNum = totalSketch - totalTask
+	} else {
+		misNum = totalTask - totalSketch
+	}
+	//logrus.Println("totalSketch,totalTalent,misNum:", totalSketch, totalTask, misNum)
+
+	// 查询该页数据
+	limit := pageSize + misNum
+	offset := pageSize * pageNum // assert pageNum start with 0
+	//fmt.Printf("limit %+v  offset %+v \n", limit, offset)
+	err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
+
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+
+	var TaskSketches []*http_model.TaskSketch
+	var taskSketches []*http_model.TaskSketchInfo
+	var newTaskSketches []*http_model.TaskSketchInfo
+	for _, taskId := range taskIds {
+		TaskSketch := new(http_model.TaskSketch)
+		TaskSketch.Talent = taskMap[taskId]
+		TaskSketch.Sketch = SketchMap[taskId]
+		TaskSketches = append(TaskSketches, TaskSketch)
+	}
+
+	taskSketches = pack.TaskSketchToTaskInfo(TaskSketches)
+
+	for _, v := range taskSketches {
+		if platform_nickname == "" {
+			newTaskSketches = append(newTaskSketches, v)
+		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
+			newTaskSketches = append(newTaskSketches, v)
+		} else if strings.Contains(conv.MustString(v.TaskID, ""), platform_nickname) {
+			newTaskSketches = append(newTaskSketches, v)
+		} else {
+			totalTask--
+		}
+	}
+	return newTaskSketches, totalTask, nil
+}
+
+// SketchOption 提交意见
+func SketchOption(ctx context.Context, TaskID string, ReviseOpinion string) error {
+	db := GetReadDB(ctx)
+	//fmt.Printf("初稿意见 %d %+v", TaskID, ReviseOpinion)
+	err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id = ? and is_review = 0", TaskID).Updates(map[string]interface{}{"revise_opinion": ReviseOpinion, "reject_at": time.Now(), "is_review": 1}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Sketch db] call RevisieOption error,err:%+v", err)
+		return err
+	}
+	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeTaskInfo{SketchStatus: 3}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
+		return err
+	}
+	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", TaskID).Updates(gorm_model.YoungeeTaskInfo{TaskStage: 9}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
+		return err
+	}
+	return nil
+}
+
+// AcceptSketch 同意初稿
+func AcceptSketch(ctx context.Context, TaskIDs []string) error {
+	db := GetReadDB(ctx)
+	err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id in ? and is_review = 0", TaskIDs).Updates(map[string]interface{}{"is_ok": 1, "is_review": 1, "agree_at": time.Now()}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Sketch db] Update YounggeeSketchInfo error,err:%+v", err)
+		return err
+	}
+	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{SketchStatus: 5}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
+		return err
+	}
+
+	err = db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{TaskStage: 11}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Sketch db] Update YoungeeTaskInfo error,err:%+v", err)
+		return err
+	}
+	return nil
+}
+
+// FindPhoto
+func FindSketchInfo(ctx context.Context, TaskID string) (*gorm_model.YounggeeSketchInfo, error) {
+	db := GetReadDB(ctx)
+	var SketchInfo gorm_model.YounggeeSketchInfo
+	err := db.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id = ? and is_ok = 1", TaskID).Find(&SketchInfo).Error
+	if err != nil {
+		return nil, err
+	}
+	return &SketchInfo, nil
+}
+
+// FindPhoto
+func FindPhoto(ctx context.Context, SketchID int64) ([]gorm_model.YounggeeSketchPhoto, error) {
+	db := GetReadDB(ctx)
+	var SketchPhotos []gorm_model.YounggeeSketchPhoto
+	err := db.Model(gorm_model.YounggeeSketchPhoto{}).Where("sketch_id=?", SketchID).Find(&SketchPhotos).Error
+	if err != nil {
+		return nil, err
+	}
+	return SketchPhotos, nil
+}
+
+// GetSpecialTaskSketchList 专项任务-查询上传初稿的task list
+func GetSpecialTaskSketchList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.SpecialTaskSketchInfo, int64, error) {
+	db := GetReadDB(ctx)
+	// 查询Task表信息
+	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_status = 2")
+	// 根据Project条件过滤
+	conditionType := reflect.TypeOf(conditions).Elem()
+	conditionValue := reflect.ValueOf(conditions).Elem()
+	var platform_nickname string = ""
+	for i := 0; i < conditionType.NumField(); i++ {
+		field := conditionType.Field(i)
+		tag := field.Tag.Get("condition")
+		value := conditionValue.FieldByName(field.Name)
+		if tag == "sketch_status" {
+			fmt.Printf("sketch %+v", value.Interface() == int64(0))
+			if value.Interface() == int64(0) {
+				db = db.Where("task_stage = ?", 10)
+			} else {
+				db = db.Where("task_stage > ?", 10)
+			}
+			continue
+		} else if !util.IsBlank(value) {
+			if tag == "platform_nickname" {
+				platform_nickname = fmt.Sprintf("%v", value.Interface())
+				continue
+			} else if tag == "project_id" {
+				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+			}
+		}
+	}
+	var taskInfos []gorm_model.YoungeeTaskInfo
+	db = db.Model(gorm_model.YoungeeTaskInfo{})
+	// 查询总数
+	var totalTask int64
+	if err := db.Count(&totalTask).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	db.Order("task_id").Find(&taskInfos)
+
+	// 查询任务id
+	var taskIds []string
+	taskMap := make(map[string]gorm_model.YoungeeTaskInfo)
+	for _, taskInfo := range taskInfos {
+		taskIds = append(taskIds, taskInfo.TaskId)
+		taskMap[taskInfo.TaskId] = taskInfo
+	}
+	db1 := GetReadDB(ctx)
+	db1 = db1.Debug().Model(gorm_model.YounggeeSketchInfo{})
+
+	var SketchInfos []gorm_model.YounggeeSketchInfo
+	db1 = db1.Model(gorm_model.YounggeeSketchInfo{}).Where("task_id IN ? AND is_submit=? ", taskIds, 1)
+	if conditions.SketchStatus == int64(0) {
+		db1 = db1.Where("is_review = 0").Find(&SketchInfos)
+	} else {
+		db1 = db1.Where("is_ok = 1").Find(&SketchInfos)
+	}
+	SketchMap := make(map[string]gorm_model.YounggeeSketchInfo)
+	for _, SketchInfo := range SketchInfos {
+		SketchMap[SketchInfo.TaskID] = SketchInfo
+	}
+	// 查询总数
+	var totalSketch int64
+	if err := db1.Count(&totalSketch).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTalentList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	var misNum int64
+	if totalSketch > totalTask {
+		misNum = totalSketch - totalTask
+	} else {
+		misNum = totalTask - totalSketch
+	}
+	//logrus.Println("totalSketch,totalTalent,misNum:", totalSketch, totalTask, misNum)
+
+	// 查询该页数据
+	limit := pageSize + misNum
+	offset := pageSize * pageNum // assert pageNum start with 0
+	err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
+
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+
+	var TaskSketches []*http_model.SpecialTaskSketch
+	var taskSketches []*http_model.SpecialTaskSketchInfo
+	var newTaskSketches []*http_model.SpecialTaskSketchInfo
+	for _, taskId := range taskIds {
+		TaskSketch := new(http_model.SpecialTaskSketch)
+		TaskSketch.Talent = taskMap[taskId]
+		TaskSketch.Sketch = SketchMap[taskId]
+		TaskSketches = append(TaskSketches, TaskSketch)
+	}
+
+	taskSketches = pack.SpecialTaskSketchToTaskInfo(TaskSketches)
+
+	for _, v := range taskSketches {
+		if platform_nickname == "" {
+			newTaskSketches = append(newTaskSketches, v)
+		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
+			newTaskSketches = append(newTaskSketches, v)
+		} else if strings.Contains(conv.MustString(v.TaskID, ""), platform_nickname) {
+			newTaskSketches = append(newTaskSketches, v)
+		} else {
+			totalTask--
+		}
+	}
+	return newTaskSketches, totalTask, nil
+}

+ 181 - 181
db/talent.go

@@ -1,181 +1,181 @@
-package db
-
-import (
-	"context"
-	"fmt"
-	"github.com/caixw/lib.go/conv"
-	"github.com/sirupsen/logrus"
-	"gorm.io/gorm"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/gorm_model"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/pack"
-)
-
-func PlatformAccInfo(ctx context.Context, talentId string) (*http_model.PlatformAccInfoPreView, error) {
-	db := GetReadDB(ctx)
-	var gormPlatform []*gorm_model.YoungeePlatformAccountInfo
-	// 根据 talent_id 进行筛选
-	db = db.Debug().Model(gorm_model.YoungeePlatformAccountInfo{}).Where("talent_id = ?", talentId)
-	err := db.Find(&gormPlatform).Order("bind_date").Error
-	if err != nil {
-		if err == gorm.ErrRecordNotFound {
-			return nil, nil
-		} else {
-			return nil, err
-		}
-	}
-	// 查询总数
-	var total int64
-	if err = db.Count(&total).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[PlatformAccInfo] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	platform := new(http_model.PlatformAccInfoPreView)
-	platform.PlatformAccInfoData = pack.GormPlatformToHttpPlatform(gormPlatform)
-	platform.Total = conv.MustString(total, "")
-	return platform, err
-}
-
-func AccountIncome(ctx context.Context, talentId string) (*http_model.TalentInfoResponse, error) {
-	db := GetReadDB(ctx)
-	var talentInfo *gorm_model.YoungeeTalentInfo
-	// 根据 talent_id 进行筛选
-	err := db.Model(gorm_model.YoungeeTalentInfo{}).Where("id = ?", talentId).
-		First(&talentInfo).Error
-	if err != nil {
-		if err == gorm.ErrRecordNotFound {
-			return nil, nil
-		} else {
-			return nil, err
-		}
-	}
-	data := new(http_model.TalentInfoResponse)
-	data.Income = float32(talentInfo.Income)
-	data.Withdrawed = float32(talentInfo.Withdrawed)
-	data.Canwithdraw = float32(talentInfo.Canwithdraw)
-	data.Withdrawing = float32(talentInfo.Withdrawing)
-
-	// 查询是否绑定物流地址
-	IsBindLocation := talentInfo.IsBindLocation
-	if IsBindLocation == 1 {
-		var deliveryInfo *gorm_model.YoungeeTalentDeliveryAddress
-		db1 := GetReadDB(ctx)
-		err = db1.Debug().Model(gorm_model.YoungeeTalentDeliveryAddress{}).
-			Where("talent_id = ? AND default_tag = ?", talentId, 1).
-			First(&deliveryInfo).Error
-		//fmt.Printf("deliveryInfo%+v\n", deliveryInfo)
-		if err != nil {
-			if err == gorm.ErrRecordNotFound {
-				return nil, nil
-			} else {
-				return nil, err
-			}
-		}
-		region := GetRegion(ctx, deliveryInfo.RegionCode)
-		data.ReceiverName = deliveryInfo.ReceiverName
-		data.PhoneNumber = deliveryInfo.PhoneNumber
-		data.DetailAddr = region + deliveryInfo.DetailAddr
-	} else {
-		data.ReceiverName = "暂无"
-		data.PhoneNumber = "暂无"
-		data.DetailAddr = "暂无"
-	}
-	region := ""
-	if talentInfo.IsBindBank == 1 {
-		db2 := GetReadDB(ctx)
-		var talentBankInfo *gorm_model.YounggeeTalentBank
-		err = db2.Model(gorm_model.YounggeeTalentBank{}).Where("talent_id = ?", talentId).
-			First(&talentBankInfo).Error
-		if err != nil {
-			if err == gorm.ErrRecordNotFound {
-				return nil, nil
-			} else {
-				return nil, err
-			}
-		}
-		if talentBankInfo.BankOpenAddress != 0 {
-			region = GetRegion(ctx, talentBankInfo.BankOpenAddress)
-		}
-		data.Bank = talentBankInfo.Bank
-		data.BankOpenAddress = region
-		data.BankCardNumber = talentBankInfo.BankCardNumber
-		data.Name = talentBankInfo.Name
-		data.AliPayNumber = "暂无"
-		data.AliPayRealName = "暂无"
-	} else {
-		data.Bank = "暂无"
-		data.BankCardNumber = "暂无"
-		data.BankOpenAddress = "暂无"
-		data.Name = "暂无"
-		data.AliPayNumber = "暂无"
-		data.AliPayRealName = "暂无"
-	}
-	return data, err
-}
-
-func GetRegion(ctx context.Context, regionCode int) string {
-	db4 := GetReadDB(ctx)
-	var infoRegion *gorm_model.InfoRegion
-	db4.Debug().Model(gorm_model.InfoRegion{}).Where("self_code = ?", regionCode).First(&infoRegion)
-
-	provinceCode := conv.MustString(regionCode, "")[0:2] + "0000"
-	var province *gorm_model.InfoRegion
-	db4.Debug().Model(gorm_model.InfoRegion{}).Where("self_code = ?", conv.MustInt(provinceCode, 0)).First(&province)
-
-	cityCode := conv.MustString(regionCode, "")[0:4] + "00"
-	var city *gorm_model.InfoRegion
-	db4.Debug().Model(gorm_model.InfoRegion{}).Where("self_code = ?", conv.MustInt(cityCode, 0)).First(&city)
-	fmt.Println("province,city,infoRegion Code :", provinceCode, cityCode, regionCode)
-	fmt.Println("province,city,infoRegion RegionName :", province.RegionName, city.RegionName, infoRegion.RegionName)
-	return province.RegionName + city.RegionName + infoRegion.RegionName
-}
-
-func GetTaskRecord(ctx context.Context, talentId string) (*http_model.GetTaskRecordResponse, error) {
-	db := GetReadDB(ctx)
-	var taskInfos []*gorm_model.YoungeeTaskInfo
-	// 根据 talent_id 进行筛选
-	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("talent_id = ?", talentId)
-	// 查询总数
-	var total int64
-	if err := db.Count(&total).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetTaskRecord] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	err := db.Order("update_at desc").Find(&taskInfos).Error
-	if err != nil {
-		if err == gorm.ErrRecordNotFound {
-			return nil, nil
-		} else {
-			return nil, err
-		}
-	}
-	projectIdMap := map[string]gorm_model.ProjectInfo{}
-	for _, taskInfo := range taskInfos {
-		if _, ok := projectIdMap[taskInfo.ProjectId]; !ok {
-			db1 := GetReadDB(ctx)
-			projectInfo := gorm_model.ProjectInfo{}
-			db1.Where("project_id = ?", taskInfo.ProjectId).First(&projectInfo)
-			projectIdMap[taskInfo.ProjectId] = projectInfo
-		}
-	}
-	var taskRecordDatas []*http_model.TaskRecordData
-	for _, taskInfo := range taskInfos {
-		updateAt := conv.MustString(taskInfo.UpdateAt, "")
-		updateAt = updateAt[0:19]
-		taskRecordData := http_model.TaskRecordData{
-			ProjectId:       conv.MustString(taskInfo.ProjectId, ""),
-			ProjectName:     projectIdMap[taskInfo.ProjectId].ProjectName,
-			ProjectType:     consts.GetProjectType(projectIdMap[taskInfo.ProjectId].ProjectType),
-			ProjectPlatform: consts.GetProjectPlatform(projectIdMap[taskInfo.ProjectId].ProjectPlatform),
-			TaskId:          conv.MustString(taskInfo.TaskId, ""),
-			TaskStage:       consts.GetTaskStage(taskInfo.TaskStage),
-			UpdatedAt:       updateAt,
-		}
-		taskRecordDatas = append(taskRecordDatas, &taskRecordData)
-	}
-	taskRecordResponse := new(http_model.GetTaskRecordResponse)
-	taskRecordResponse.TaskRecordData = taskRecordDatas
-	taskRecordResponse.Total = conv.MustString(total, "")
-	return taskRecordResponse, nil
-}
+package db
+
+import (
+	"context"
+	"fmt"
+	"github.com/caixw/lib.go/conv"
+	"github.com/sirupsen/logrus"
+	"gorm.io/gorm"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/gorm_model"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/pack"
+)
+
+func PlatformAccInfo(ctx context.Context, talentId string) (*http_model.PlatformAccInfoPreView, error) {
+	db := GetReadDB(ctx)
+	var gormPlatform []*gorm_model.YoungeePlatformAccountInfo
+	// 根据 talent_id 进行筛选
+	db = db.Debug().Model(gorm_model.YoungeePlatformAccountInfo{}).Where("talent_id = ?", talentId)
+	err := db.Find(&gormPlatform).Order("bind_date").Error
+	if err != nil {
+		if err == gorm.ErrRecordNotFound {
+			return nil, nil
+		} else {
+			return nil, err
+		}
+	}
+	// 查询总数
+	var total int64
+	if err = db.Count(&total).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[PlatformAccInfo] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	platform := new(http_model.PlatformAccInfoPreView)
+	platform.PlatformAccInfoData = pack.GormPlatformToHttpPlatform(gormPlatform)
+	platform.Total = conv.MustString(total, "")
+	return platform, err
+}
+
+func AccountIncome(ctx context.Context, talentId string) (*http_model.TalentInfoResponse, error) {
+	db := GetReadDB(ctx)
+	var talentInfo *gorm_model.YoungeeTalentInfo
+	// 根据 talent_id 进行筛选
+	err := db.Model(gorm_model.YoungeeTalentInfo{}).Where("id = ?", talentId).
+		First(&talentInfo).Error
+	if err != nil {
+		if err == gorm.ErrRecordNotFound {
+			return nil, nil
+		} else {
+			return nil, err
+		}
+	}
+	data := new(http_model.TalentInfoResponse)
+	data.Income = float32(talentInfo.Income)
+	data.Withdrawed = float32(talentInfo.Withdrawed)
+	data.Canwithdraw = float32(talentInfo.Canwithdraw)
+	data.Withdrawing = float32(talentInfo.Withdrawing)
+
+	// 查询是否绑定物流地址
+	IsBindLocation := talentInfo.IsBindLocation
+	if IsBindLocation == 1 {
+		var deliveryInfo *gorm_model.YoungeeTalentDeliveryAddress
+		db1 := GetReadDB(ctx)
+		err = db1.Debug().Model(gorm_model.YoungeeTalentDeliveryAddress{}).
+			Where("talent_id = ? AND default_tag = ?", talentId, 1).
+			First(&deliveryInfo).Error
+		//fmt.Printf("deliveryInfo%+v\n", deliveryInfo)
+		if err != nil {
+			if err == gorm.ErrRecordNotFound {
+				return nil, nil
+			} else {
+				return nil, err
+			}
+		}
+		region := GetRegion(ctx, deliveryInfo.RegionCode)
+		data.ReceiverName = deliveryInfo.ReceiverName
+		data.PhoneNumber = deliveryInfo.PhoneNumber
+		data.DetailAddr = region + deliveryInfo.DetailAddr
+	} else {
+		data.ReceiverName = "暂无"
+		data.PhoneNumber = "暂无"
+		data.DetailAddr = "暂无"
+	}
+	region := ""
+	if talentInfo.IsBindBank == 1 {
+		db2 := GetReadDB(ctx)
+		var talentBankInfo *gorm_model.YounggeeTalentBank
+		err = db2.Model(gorm_model.YounggeeTalentBank{}).Where("talent_id = ?", talentId).
+			First(&talentBankInfo).Error
+		if err != nil {
+			if err == gorm.ErrRecordNotFound {
+				return nil, nil
+			} else {
+				return nil, err
+			}
+		}
+		if talentBankInfo.BankOpenAddress != 0 {
+			region = GetRegion(ctx, talentBankInfo.BankOpenAddress)
+		}
+		data.Bank = talentBankInfo.Bank
+		data.BankOpenAddress = region
+		data.BankCardNumber = talentBankInfo.BankCardNumber
+		data.Name = talentBankInfo.Name
+		data.AliPayNumber = "暂无"
+		data.AliPayRealName = "暂无"
+	} else {
+		data.Bank = "暂无"
+		data.BankCardNumber = "暂无"
+		data.BankOpenAddress = "暂无"
+		data.Name = "暂无"
+		data.AliPayNumber = "暂无"
+		data.AliPayRealName = "暂无"
+	}
+	return data, err
+}
+
+func GetRegion(ctx context.Context, regionCode int) string {
+	db4 := GetReadDB(ctx)
+	var infoRegion *gorm_model.InfoRegion
+	db4.Debug().Model(gorm_model.InfoRegion{}).Where("self_code = ?", regionCode).First(&infoRegion)
+
+	provinceCode := conv.MustString(regionCode, "")[0:2] + "0000"
+	var province *gorm_model.InfoRegion
+	db4.Debug().Model(gorm_model.InfoRegion{}).Where("self_code = ?", conv.MustInt(provinceCode, 0)).First(&province)
+
+	cityCode := conv.MustString(regionCode, "")[0:4] + "00"
+	var city *gorm_model.InfoRegion
+	db4.Debug().Model(gorm_model.InfoRegion{}).Where("self_code = ?", conv.MustInt(cityCode, 0)).First(&city)
+	fmt.Println("province,city,infoRegion Code :", provinceCode, cityCode, regionCode)
+	fmt.Println("province,city,infoRegion RegionName :", province.RegionName, city.RegionName, infoRegion.RegionName)
+	return province.RegionName + city.RegionName + infoRegion.RegionName
+}
+
+func GetTaskRecord(ctx context.Context, talentId string) (*http_model.GetTaskRecordResponse, error) {
+	db := GetReadDB(ctx)
+	var taskInfos []*gorm_model.YoungeeTaskInfo
+	// 根据 talent_id 进行筛选
+	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("talent_id = ?", talentId)
+	// 查询总数
+	var total int64
+	if err := db.Count(&total).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetTaskRecord] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	err := db.Order("update_at desc").Find(&taskInfos).Error
+	if err != nil {
+		if err == gorm.ErrRecordNotFound {
+			return nil, nil
+		} else {
+			return nil, err
+		}
+	}
+	projectIdMap := map[string]gorm_model.ProjectInfo{}
+	for _, taskInfo := range taskInfos {
+		if _, ok := projectIdMap[taskInfo.ProjectId]; !ok {
+			db1 := GetReadDB(ctx)
+			projectInfo := gorm_model.ProjectInfo{}
+			db1.Where("project_id = ?", taskInfo.ProjectId).First(&projectInfo)
+			projectIdMap[taskInfo.ProjectId] = projectInfo
+		}
+	}
+	var taskRecordDatas []*http_model.TaskRecordData
+	for _, taskInfo := range taskInfos {
+		updateAt := conv.MustString(taskInfo.UpdateAt, "")
+		updateAt = updateAt[0:19]
+		taskRecordData := http_model.TaskRecordData{
+			ProjectId:       conv.MustString(taskInfo.ProjectId, ""),
+			ProjectName:     projectIdMap[taskInfo.ProjectId].ProjectName,
+			ProjectType:     consts.GetProjectType(projectIdMap[taskInfo.ProjectId].ProjectType),
+			ProjectPlatform: consts.GetProjectPlatform(projectIdMap[taskInfo.ProjectId].ProjectPlatform),
+			TaskId:          conv.MustString(taskInfo.TaskId, ""),
+			TaskStage:       consts.GetTaskStage(taskInfo.TaskStage),
+			UpdatedAt:       updateAt,
+		}
+		taskRecordDatas = append(taskRecordDatas, &taskRecordData)
+	}
+	taskRecordResponse := new(http_model.GetTaskRecordResponse)
+	taskRecordResponse.TaskRecordData = taskRecordDatas
+	taskRecordResponse.Total = conv.MustString(total, "")
+	return taskRecordResponse, nil
+}

+ 23 - 23
db/talent_income.go

@@ -1,23 +1,23 @@
-package db
-
-import (
-	"context"
-	"gorm.io/gorm"
-	"youngee_m_api/model/gorm_model"
-)
-
-func CreateIncome(ctx context.Context, income gorm_model.YounggeeTalentIncome, tx *gorm.DB) error {
-	if tx != nil {
-		err := tx.Create(&income).Error
-		if err != nil {
-			return err
-		}
-	} else {
-		db := GetWriteDB(ctx)
-		err := db.Create(&income).Error
-		if err != nil {
-			return err
-		}
-	}
-	return nil
-}
+package db
+
+import (
+	"context"
+	"gorm.io/gorm"
+	"youngee_m_api/model/gorm_model"
+)
+
+func CreateIncome(ctx context.Context, income gorm_model.YounggeeTalentIncome, tx *gorm.DB) error {
+	if tx != nil {
+		err := tx.Create(&income).Error
+		if err != nil {
+			return err
+		}
+	} else {
+		db := GetWriteDB(ctx)
+		err := db.Create(&income).Error
+		if err != nil {
+			return err
+		}
+	}
+	return nil
+}

+ 384 - 384
db/task.go

@@ -1,384 +1,384 @@
-package db
-
-import (
-	"context"
-	"encoding/json"
-	"fmt"
-	"reflect"
-	"strconv"
-	"strings"
-	"time"
-	"youngee_m_api/model/common_model"
-	"youngee_m_api/model/gorm_model"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/pack"
-	"youngee_m_api/util"
-
-	"github.com/caixw/lib.go/conv"
-	"github.com/tidwall/gjson"
-	"gorm.io/gorm"
-
-	"github.com/sirupsen/logrus"
-)
-
-func GetTaskList(ctx context.Context, projectID string) ([]gorm_model.YoungeeTaskInfo, error) {
-	db := GetReadDB(ctx)
-	var tasks []gorm_model.YoungeeTaskInfo
-	err := db.Where("project_id = ? AND task_status = 2", projectID).Find(&tasks).Error
-	if err != nil {
-		return nil, err
-	}
-	return tasks, nil
-}
-
-func UpdateLogisticsStatus(ctx context.Context, taskID string, status int64) error {
-	db := GetReadDB(ctx)
-	err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskID).Update("logistics_status", status).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[task db] call UpdateLogisticsStatus error,err:%+v", err)
-		return err
-	}
-	return nil
-}
-
-func UpdateLogisticsDate(ctx context.Context, taskID string) error {
-	db := GetReadDB(ctx)
-	err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskID).Update("delivery_date", time.Now()).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[task db] call UpdateLogisticsDate error,err:%+v", err)
-		return err
-	}
-	return nil
-}
-
-func GetProjectIdByTaskId(ctx context.Context, taskID string) (*string, error) {
-	db := GetReadDB(ctx)
-	task := &gorm_model.YoungeeTaskInfo{}
-	err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskID).Scan(task).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[task db] call UpdateLogisticsStatus error,err:%+v", err)
-		return nil, err
-	}
-	return &task.ProjectId, nil
-}
-
-func ChangeTaskStatus(ctx context.Context, taskIds []string, taskStatus string) ([]int64, error) {
-	db := GetReadDB(ctx)
-
-	taskSta := conv.MustInt(taskStatus, 0)
-	if err := db.Debug().Model(&gorm_model.YoungeeTaskInfo{}).Where("task_id IN ?", taskIds).
-		Updates(gorm_model.YoungeeTaskInfo{TaskStatus: taskSta}).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[ChangeTaskStatus]2 error query mysql total, err:%+v", err)
-		return nil, err
-	}
-
-	var taskInfos []gorm_model.YoungeeTaskInfo
-	err := db.Debug().Model(&gorm_model.YoungeeTaskInfo{}).Where("task_id IN ?", taskIds).Find(&taskInfos).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[ChangeTaskStatus]3 error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	var recruitStrategysIDs []int64
-	recruitStrategys := gorm_model.RecruitStrategy{}
-	for _, taskInfo := range taskInfos {
-		err2 := db.Debug().Model(gorm_model.RecruitStrategy{}).Where("project_id=? AND strategy_id=?", taskInfo.ProjectId, taskInfo.StrategyId).Scan(&recruitStrategys).Error
-		if err2 != nil {
-			logrus.WithContext(ctx).Errorf("[ChangeTaskStatus]4 error query mysql total, err:%+v", err2)
-			return nil, err2
-		}
-		recruitStrategysIDs = append(recruitStrategysIDs, recruitStrategys.RecruitStrategyID)
-	}
-	return recruitStrategysIDs, nil
-}
-
-func ChangeSpecialTaskStatus(ctx context.Context, taskIds []string, taskStatus string, taskStage string) error {
-	db := GetReadDB(ctx)
-	status, err := strconv.Atoi(taskStatus)
-	stage, err := strconv.Atoi(taskStage)
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[ChangeTaskStatus]1 error query mysql total, err:%+v", err)
-		return err
-	}
-	err = db.Transaction(func(tx *gorm.DB) error {
-		if err := tx.Debug().Model(&gorm_model.YoungeeTaskInfo{}).Where("task_id IN ?", taskIds).
-			Updates(gorm_model.YoungeeTaskInfo{TaskStatus: status, TaskStage: stage, SelectDate: time.Now()}).Error; err != nil {
-			logrus.WithContext(ctx).Errorf("[ChangeTaskStatus]2 error query mysql total, err:%+v", err)
-			return err
-		}
-		return nil
-	})
-	if err != nil {
-		return err
-	}
-	//if err := db.Debug().Model(&gorm_model.YoungeeTaskInfo{}).Where("task_id IN ?", taskIds).
-	//	Updates(gorm_model.YoungeeTaskInfo{TaskStatus: status, TaskStage: stage, SelectDate: time.Now()}).Error; err != nil {
-	//	logrus.WithContext(ctx).Errorf("[ChangeTaskStatus]2 error query mysql total, err:%+v", err)
-	//	return err
-	//}
-	return nil
-}
-
-func UpdateTaskStage(ctx context.Context, projectID string, taskStatus int64, taskStage int64) error {
-	db := GetReadDB(ctx)
-	err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id=? and task_status = ?", projectID, taskStatus).Update("task_stage", taskStage).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[UpdateTaskStatusPaying]2 error query mysql total, err:%+v", err)
-		return err
-	}
-	return nil
-}
-
-func UpdateTaskSelectAtByProjectId(ctx context.Context, projectID string, taskStatus int64) error {
-	db := GetReadDB(ctx)
-	err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id=? and task_status = ?", projectID, taskStatus).Update("select_date", time.Now()).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[UpdateTaskStage]2 error query mysql total, err:%+v", err)
-		return err
-	}
-	return nil
-}
-
-func UpdateTaskStageByProjectId(ctx context.Context, projectID string, taskStatus int64, taskStage int64) error {
-	db := GetReadDB(ctx)
-	err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id=? and task_status = ?", projectID, taskStatus).Update("task_stage", taskStage).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[UpdateTaskStage]2 error query mysql total, err:%+v", err)
-		return err
-	}
-	return nil
-}
-
-func GetSpecialTaskInviteList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.SpecialTaskInviteInfo, int64, error) {
-	db := GetReadDB(ctx)
-	// 查询task表信息
-	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_stage != 3")
-	// 根据Project条件过滤
-	conditionType := reflect.TypeOf(conditions).Elem()
-	conditionValue := reflect.ValueOf(conditions).Elem()
-	var platform_nickname string = ""
-	for i := 0; i < conditionType.NumField(); i++ {
-		field := conditionType.Field(i)
-		tag := field.Tag.Get("condition")
-		value := conditionValue.FieldByName(field.Name)
-		if tag == "task_status" {
-			fmt.Printf("link %+v", value.Interface() == int64(0))
-			if value.Interface() == int64(0) {
-				db = db.Where("task_status <> 2")
-			} else {
-				db = db.Where("task_status = 2")
-			}
-			continue
-		} else if !util.IsBlank(value) {
-			if tag == "platform_nickname" {
-				platform_nickname = fmt.Sprintf("%v", value.Interface())
-				continue
-			} else if tag == "project_id" {
-				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-			}
-		}
-	}
-	var taskInfos []gorm_model.YoungeeTaskInfo
-	db = db.Model(gorm_model.YoungeeTaskInfo{})
-	// 查询总数
-	var totalTask int64
-	if err := db.Count(&totalTask).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	db.Order("task_id").Find(&taskInfos)
-
-	// 查询该页数据
-	limit := pageSize
-	offset := pageSize * pageNum // assert pageNum start with 0
-	err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-
-	var taskDatas []*http_model.SpecialTaskInviteInfo
-	var newTaskDatas []*http_model.SpecialTaskInviteInfo
-
-	taskDatas = pack.YoungeeTaskInfoToSpecialTaskInviteInfo(taskInfos)
-
-	for _, v := range taskDatas {
-		if platform_nickname == "" {
-			newTaskDatas = append(newTaskDatas, v)
-		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
-			newTaskDatas = append(newTaskDatas, v)
-		} else if strings.Contains(conv.MustString(v.TaskID, ""), platform_nickname) {
-			newTaskDatas = append(newTaskDatas, v)
-		} else {
-			totalTask--
-		}
-	}
-	return newTaskDatas, totalTask, nil
-}
-
-// 任务结案
-func SetTaskFinish(ctx context.Context, TaskIDs []string) error {
-	db := GetReadDB(ctx)
-	// 1. 修改任务表,更新任务阶段为已结案,结案方式为正常结束,数据状态为已通过,
-	err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).
-		Updates(gorm_model.YoungeeTaskInfo{DataStatus: 5, TaskStage: 15, CompleteStatus: 2, WithdrawStatus: 2, CompleteDate: time.Now()}).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[Task db] Update YoungeeTaskInfo error,err:%+v", err)
-		return err
-	}
-
-	// 2. 修改招募策略表,更新粉丝量、播放量、点赞数、收藏数、评论数、总支付、结案数量
-	for _, v := range TaskIDs {
-		// 查询task_info
-		db = GetReadDB(ctx)
-		taskInfo := gorm_model.YoungeeTaskInfo{}
-		err1 := db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", v).Scan(&taskInfo).Error
-		if err1 != nil {
-			logrus.WithContext(ctx).Errorf("[Task db] Find YoungeeTaskInfo error,err:%+v", err)
-			return err1
-		}
-		//查询project_info
-		projectInfo := gorm_model.ProjectInfo{}
-		err1 = db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", taskInfo.ProjectId).Scan(&projectInfo).Error
-		if err1 != nil {
-			logrus.WithContext(ctx).Errorf("[Task db] Find ProjectInfo error,err:%+v", err)
-			return err1
-		}
-		// 查询data_info
-		db = GetReadDB(ctx)
-		dataInfo := gorm_model.YounggeeDataInfo{}
-		err1 = db.Model(gorm_model.YounggeeDataInfo{}).Where("task_id = ? and is_ok = 1", v).Scan(&dataInfo).Error
-		if err1 != nil {
-			logrus.WithContext(ctx).Errorf("[Task db] Find YounggeeDataInfo error,err:%+v", err)
-			return err1
-		}
-
-		// 2. 创建任务收益
-		var productStruct gorm_model.YounggeeProduct
-		if err = json.Unmarshal([]byte(projectInfo.ProductSnap), &productStruct); err != nil {
-			fmt.Println("Error:", err)
-			return err
-		}
-		t := time.Now()
-		income := gorm_model.YounggeeTalentIncome{
-			TalentID:       taskInfo.TalentId,
-			ProjectID:      taskInfo.ProjectId,
-			SectaskID:      taskInfo.TaskId,
-			BrandName:      productStruct.BrandName,
-			TaskName:       projectInfo.ProjectName,
-			Income:         strconv.FormatFloat(taskInfo.SettleAmount, 'f', 10, 32),
-			IncomeType:     1,
-			WithdrawStatus: 1,
-			IncomeAt:       &t,
-			WithdrawAt:     nil,
-		}
-		err = CreateIncome(ctx, income, nil)
-		if err != nil {
-			logrus.WithContext(ctx).Errorf("[projectPay service] call SpecialSettlePay error,err:%+v", err)
-			return err
-		}
-
-		// 更新招募策略
-		db = GetReadDB(ctx)
-		db = db.Model(gorm_model.RecruitStrategy{}).Where("project_id = ? and strategy_id = ?", taskInfo.ProjectId, taskInfo.StrategyId)
-		fansCount, _ := strconv.Atoi(conv.MustString(gjson.Get(taskInfo.TalentPlatformInfoSnap, "fans_count"), ""))
-		err = db.Updates(map[string]interface{}{
-			"fan_number":     gorm.Expr("fan_number + ?", fansCount),
-			"play_number":    gorm.Expr("play_number + ?", dataInfo.PlayNumber),
-			"like_number":    gorm.Expr("like_number + ?", dataInfo.LikeNumber),
-			"collect_number": gorm.Expr("collect_number + ?", dataInfo.CollectNumber),
-			"comment_number": gorm.Expr("comment_number + ?", dataInfo.CommentNumber),
-			"finish_number":  gorm.Expr("finish_number + 1"),
-			"total_offer":    gorm.Expr("total_offer + ?", taskInfo.RealPayment)}).Error
-		if err != nil {
-			logrus.WithContext(ctx).Errorf("[Task db] Update YounggeeDataInfo error,err:%+v", err)
-			return err
-		}
-	}
-	return nil
-}
-
-// SetTaskFinish 专项任务结案
-func SetSpecialTaskFinish(ctx context.Context, TaskIDs []string) error {
-	db := GetReadDB(ctx)
-	// 1. 修改任务表,更新任务阶段为已结案,结案方式为正常结束,数据状态为已通过,
-	err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{DataStatus: 5, TaskStage: 15, CompleteStatus: 2, WithdrawStatus: 2, CompleteDate: time.Now()}).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[Task db] Update YoungeeTaskInfo error,err:%+v", err)
-		return err
-	}
-	return nil
-}
-
-func SetTalentIncome(ctx context.Context, TaskIDs []string) error {
-	db := GetReadDB(ctx)
-	var TaskInfoList []gorm_model.YoungeeTaskInfo
-	err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Scan(&TaskInfoList).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[Task db] Update SetTalentIncome error,err:%+v", err)
-		return err
-	}
-	for _, taskInfo := range TaskInfoList {
-		err := db.Model(gorm_model.YoungeeTalentInfo{}).Where("id = ?", taskInfo.TalentId).Updates(map[string]interface{}{
-			"income":      gorm.Expr("income + ?", taskInfo.SettleAmount),
-			"canwithdraw": gorm.Expr("canwithdraw + ?", taskInfo.SettleAmount)}).Error
-		if err != nil {
-			logrus.WithContext(ctx).Errorf("[Task db] Update SetTalentIncome error,err:%+v", err)
-			return err
-		}
-	}
-	return nil
-}
-
-func GetUnfinishedTaskNumber(ctx context.Context, projectID string) (*int64, error) {
-	var unFinishedTaskNumber int64
-	db := GetReadDB(ctx)
-	err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2 and task_stage < 15", projectID).Count(&unFinishedTaskNumber).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[Data db] Find YounggeeTaskInfo error,err:%+v", err)
-		return nil, err
-	}
-	return &unFinishedTaskNumber, nil
-}
-
-func UpdateTaskStageByTaskId(ctx context.Context, taskID string, taskStatus int64, taskStage int64) error {
-	db := GetReadDB(ctx)
-	err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id=? and task_status = ?", taskID, taskStatus).Update("task_stage", taskStage).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[UpdateTaskStageByTaskId]2 error query mysql total, err:%+v", err)
-		return err
-	}
-	return nil
-}
-
-// 获取任务ids
-func GetTaskIds(ctx context.Context, projectId string) ([]string, error) {
-	db := GetReadDB(ctx)
-	var taskIds []string
-	err := db.Model(gorm_model.YoungeeTaskInfo{}).Select("task_id").Where("project_id = ? and task_status = 2", projectId).Find(&taskIds).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[CreateMessageByTask] error read mysql, err:%+v", err)
-		return nil, err
-	}
-
-	return taskIds, nil
-}
-
-func UpdateTask(ctx context.Context, updateData gorm_model.YoungeeTaskInfo, tx *gorm.DB) (bool, error) {
-	db := GetWriteDB(ctx)
-	whereCondition := gorm_model.YoungeeTaskInfo{
-		TaskId: updateData.TaskId,
-	}
-	if tx != nil {
-		err := tx.Where(whereCondition).Updates(&updateData).Error
-		if err != nil {
-			return false, err
-		}
-	} else {
-		err := db.Where(whereCondition).Updates(&updateData).Error
-		if err != nil {
-			return false, err
-		}
-	}
-
-	return true, nil
-}
+package db
+
+import (
+	"context"
+	"encoding/json"
+	"fmt"
+	"reflect"
+	"strconv"
+	"strings"
+	"time"
+	"youngee_m_api/model/common_model"
+	"youngee_m_api/model/gorm_model"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/pack"
+	"youngee_m_api/util"
+
+	"github.com/caixw/lib.go/conv"
+	"github.com/tidwall/gjson"
+	"gorm.io/gorm"
+
+	"github.com/sirupsen/logrus"
+)
+
+func GetTaskList(ctx context.Context, projectID string) ([]gorm_model.YoungeeTaskInfo, error) {
+	db := GetReadDB(ctx)
+	var tasks []gorm_model.YoungeeTaskInfo
+	err := db.Where("project_id = ? AND task_status = 2", projectID).Find(&tasks).Error
+	if err != nil {
+		return nil, err
+	}
+	return tasks, nil
+}
+
+func UpdateLogisticsStatus(ctx context.Context, taskID string, status int64) error {
+	db := GetReadDB(ctx)
+	err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskID).Update("logistics_status", status).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[task db] call UpdateLogisticsStatus error,err:%+v", err)
+		return err
+	}
+	return nil
+}
+
+func UpdateLogisticsDate(ctx context.Context, taskID string) error {
+	db := GetReadDB(ctx)
+	err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskID).Update("delivery_date", time.Now()).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[task db] call UpdateLogisticsDate error,err:%+v", err)
+		return err
+	}
+	return nil
+}
+
+func GetProjectIdByTaskId(ctx context.Context, taskID string) (*string, error) {
+	db := GetReadDB(ctx)
+	task := &gorm_model.YoungeeTaskInfo{}
+	err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", taskID).Scan(task).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[task db] call UpdateLogisticsStatus error,err:%+v", err)
+		return nil, err
+	}
+	return &task.ProjectId, nil
+}
+
+func ChangeTaskStatus(ctx context.Context, taskIds []string, taskStatus string) ([]int64, error) {
+	db := GetReadDB(ctx)
+
+	taskSta := conv.MustInt(taskStatus, 0)
+	if err := db.Debug().Model(&gorm_model.YoungeeTaskInfo{}).Where("task_id IN ?", taskIds).
+		Updates(gorm_model.YoungeeTaskInfo{TaskStatus: taskSta}).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[ChangeTaskStatus]2 error query mysql total, err:%+v", err)
+		return nil, err
+	}
+
+	var taskInfos []gorm_model.YoungeeTaskInfo
+	err := db.Debug().Model(&gorm_model.YoungeeTaskInfo{}).Where("task_id IN ?", taskIds).Find(&taskInfos).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[ChangeTaskStatus]3 error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	var recruitStrategysIDs []int64
+	recruitStrategys := gorm_model.RecruitStrategy{}
+	for _, taskInfo := range taskInfos {
+		err2 := db.Debug().Model(gorm_model.RecruitStrategy{}).Where("project_id=? AND strategy_id=?", taskInfo.ProjectId, taskInfo.StrategyId).Scan(&recruitStrategys).Error
+		if err2 != nil {
+			logrus.WithContext(ctx).Errorf("[ChangeTaskStatus]4 error query mysql total, err:%+v", err2)
+			return nil, err2
+		}
+		recruitStrategysIDs = append(recruitStrategysIDs, recruitStrategys.RecruitStrategyID)
+	}
+	return recruitStrategysIDs, nil
+}
+
+func ChangeSpecialTaskStatus(ctx context.Context, taskIds []string, taskStatus string, taskStage string) error {
+	db := GetReadDB(ctx)
+	status, err := strconv.Atoi(taskStatus)
+	stage, err := strconv.Atoi(taskStage)
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[ChangeTaskStatus]1 error query mysql total, err:%+v", err)
+		return err
+	}
+	err = db.Transaction(func(tx *gorm.DB) error {
+		if err := tx.Debug().Model(&gorm_model.YoungeeTaskInfo{}).Where("task_id IN ?", taskIds).
+			Updates(gorm_model.YoungeeTaskInfo{TaskStatus: status, TaskStage: stage, SelectDate: time.Now()}).Error; err != nil {
+			logrus.WithContext(ctx).Errorf("[ChangeTaskStatus]2 error query mysql total, err:%+v", err)
+			return err
+		}
+		return nil
+	})
+	if err != nil {
+		return err
+	}
+	//if err := db.Debug().Model(&gorm_model.YoungeeTaskInfo{}).Where("task_id IN ?", taskIds).
+	//	Updates(gorm_model.YoungeeTaskInfo{TaskStatus: status, TaskStage: stage, SelectDate: time.Now()}).Error; err != nil {
+	//	logrus.WithContext(ctx).Errorf("[ChangeTaskStatus]2 error query mysql total, err:%+v", err)
+	//	return err
+	//}
+	return nil
+}
+
+func UpdateTaskStage(ctx context.Context, projectID string, taskStatus int64, taskStage int64) error {
+	db := GetReadDB(ctx)
+	err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id=? and task_status = ?", projectID, taskStatus).Update("task_stage", taskStage).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[UpdateTaskStatusPaying]2 error query mysql total, err:%+v", err)
+		return err
+	}
+	return nil
+}
+
+func UpdateTaskSelectAtByProjectId(ctx context.Context, projectID string, taskStatus int64) error {
+	db := GetReadDB(ctx)
+	err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id=? and task_status = ?", projectID, taskStatus).Update("select_date", time.Now()).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[UpdateTaskStage]2 error query mysql total, err:%+v", err)
+		return err
+	}
+	return nil
+}
+
+func UpdateTaskStageByProjectId(ctx context.Context, projectID string, taskStatus int64, taskStage int64) error {
+	db := GetReadDB(ctx)
+	err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id=? and task_status = ?", projectID, taskStatus).Update("task_stage", taskStage).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[UpdateTaskStage]2 error query mysql total, err:%+v", err)
+		return err
+	}
+	return nil
+}
+
+func GetSpecialTaskInviteList(ctx context.Context, projectID string, pageSize, pageNum int64, conditions *common_model.TalentConditions) ([]*http_model.SpecialTaskInviteInfo, int64, error) {
+	db := GetReadDB(ctx)
+	// 查询task表信息
+	db = db.Debug().Model(gorm_model.YoungeeTaskInfo{}).Where("task_stage != 3")
+	// 根据Project条件过滤
+	conditionType := reflect.TypeOf(conditions).Elem()
+	conditionValue := reflect.ValueOf(conditions).Elem()
+	var platform_nickname string = ""
+	for i := 0; i < conditionType.NumField(); i++ {
+		field := conditionType.Field(i)
+		tag := field.Tag.Get("condition")
+		value := conditionValue.FieldByName(field.Name)
+		if tag == "task_status" {
+			fmt.Printf("link %+v", value.Interface() == int64(0))
+			if value.Interface() == int64(0) {
+				db = db.Where("task_status <> 2")
+			} else {
+				db = db.Where("task_status = 2")
+			}
+			continue
+		} else if !util.IsBlank(value) {
+			if tag == "platform_nickname" {
+				platform_nickname = fmt.Sprintf("%v", value.Interface())
+				continue
+			} else if tag == "project_id" {
+				db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+			}
+		}
+	}
+	var taskInfos []gorm_model.YoungeeTaskInfo
+	db = db.Model(gorm_model.YoungeeTaskInfo{})
+	// 查询总数
+	var totalTask int64
+	if err := db.Count(&totalTask).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	db.Order("task_id").Find(&taskInfos)
+
+	// 查询该页数据
+	limit := pageSize
+	offset := pageSize * pageNum // assert pageNum start with 0
+	err := db.Order("task_id").Limit(int(limit)).Offset(int(offset)).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetProjectTaskList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+
+	var taskDatas []*http_model.SpecialTaskInviteInfo
+	var newTaskDatas []*http_model.SpecialTaskInviteInfo
+
+	taskDatas = pack.YoungeeTaskInfoToSpecialTaskInviteInfo(taskInfos)
+
+	for _, v := range taskDatas {
+		if platform_nickname == "" {
+			newTaskDatas = append(newTaskDatas, v)
+		} else if strings.Contains(v.PlatformNickname, platform_nickname) {
+			newTaskDatas = append(newTaskDatas, v)
+		} else if strings.Contains(conv.MustString(v.TaskID, ""), platform_nickname) {
+			newTaskDatas = append(newTaskDatas, v)
+		} else {
+			totalTask--
+		}
+	}
+	return newTaskDatas, totalTask, nil
+}
+
+// 任务结案
+func SetTaskFinish(ctx context.Context, TaskIDs []string) error {
+	db := GetReadDB(ctx)
+	// 1. 修改任务表,更新任务阶段为已结案,结案方式为正常结束,数据状态为已通过,
+	err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).
+		Updates(gorm_model.YoungeeTaskInfo{DataStatus: 5, TaskStage: 15, CompleteStatus: 2, WithdrawStatus: 2, CompleteDate: time.Now()}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Task db] Update YoungeeTaskInfo error,err:%+v", err)
+		return err
+	}
+
+	// 2. 修改招募策略表,更新粉丝量、播放量、点赞数、收藏数、评论数、总支付、结案数量
+	for _, v := range TaskIDs {
+		// 查询task_info
+		db = GetReadDB(ctx)
+		taskInfo := gorm_model.YoungeeTaskInfo{}
+		err1 := db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id = ?", v).Scan(&taskInfo).Error
+		if err1 != nil {
+			logrus.WithContext(ctx).Errorf("[Task db] Find YoungeeTaskInfo error,err:%+v", err)
+			return err1
+		}
+		//查询project_info
+		projectInfo := gorm_model.ProjectInfo{}
+		err1 = db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", taskInfo.ProjectId).Scan(&projectInfo).Error
+		if err1 != nil {
+			logrus.WithContext(ctx).Errorf("[Task db] Find ProjectInfo error,err:%+v", err)
+			return err1
+		}
+		// 查询data_info
+		db = GetReadDB(ctx)
+		dataInfo := gorm_model.YounggeeDataInfo{}
+		err1 = db.Model(gorm_model.YounggeeDataInfo{}).Where("task_id = ? and is_ok = 1", v).Scan(&dataInfo).Error
+		if err1 != nil {
+			logrus.WithContext(ctx).Errorf("[Task db] Find YounggeeDataInfo error,err:%+v", err)
+			return err1
+		}
+
+		// 2. 创建任务收益
+		var productStruct gorm_model.YounggeeProduct
+		if err = json.Unmarshal([]byte(projectInfo.ProductSnap), &productStruct); err != nil {
+			fmt.Println("Error:", err)
+			return err
+		}
+		t := time.Now()
+		income := gorm_model.YounggeeTalentIncome{
+			TalentID:       taskInfo.TalentId,
+			ProjectID:      taskInfo.ProjectId,
+			SectaskID:      taskInfo.TaskId,
+			BrandName:      productStruct.BrandName,
+			TaskName:       projectInfo.ProjectName,
+			Income:         strconv.FormatFloat(taskInfo.SettleAmount, 'f', 10, 32),
+			IncomeType:     1,
+			WithdrawStatus: 1,
+			IncomeAt:       &t,
+			WithdrawAt:     nil,
+		}
+		err = CreateIncome(ctx, income, nil)
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[projectPay service] call SpecialSettlePay error,err:%+v", err)
+			return err
+		}
+
+		// 更新招募策略
+		db = GetReadDB(ctx)
+		db = db.Model(gorm_model.RecruitStrategy{}).Where("project_id = ? and strategy_id = ?", taskInfo.ProjectId, taskInfo.StrategyId)
+		fansCount, _ := strconv.Atoi(conv.MustString(gjson.Get(taskInfo.TalentPlatformInfoSnap, "fans_count"), ""))
+		err = db.Updates(map[string]interface{}{
+			"fan_number":     gorm.Expr("fan_number + ?", fansCount),
+			"play_number":    gorm.Expr("play_number + ?", dataInfo.PlayNumber),
+			"like_number":    gorm.Expr("like_number + ?", dataInfo.LikeNumber),
+			"collect_number": gorm.Expr("collect_number + ?", dataInfo.CollectNumber),
+			"comment_number": gorm.Expr("comment_number + ?", dataInfo.CommentNumber),
+			"finish_number":  gorm.Expr("finish_number + 1"),
+			"total_offer":    gorm.Expr("total_offer + ?", taskInfo.RealPayment)}).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[Task db] Update YounggeeDataInfo error,err:%+v", err)
+			return err
+		}
+	}
+	return nil
+}
+
+// SetTaskFinish 专项任务结案
+func SetSpecialTaskFinish(ctx context.Context, TaskIDs []string) error {
+	db := GetReadDB(ctx)
+	// 1. 修改任务表,更新任务阶段为已结案,结案方式为正常结束,数据状态为已通过,
+	err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Updates(gorm_model.YoungeeTaskInfo{DataStatus: 5, TaskStage: 15, CompleteStatus: 2, WithdrawStatus: 2, CompleteDate: time.Now()}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Task db] Update YoungeeTaskInfo error,err:%+v", err)
+		return err
+	}
+	return nil
+}
+
+func SetTalentIncome(ctx context.Context, TaskIDs []string) error {
+	db := GetReadDB(ctx)
+	var TaskInfoList []gorm_model.YoungeeTaskInfo
+	err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).Scan(&TaskInfoList).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Task db] Update SetTalentIncome error,err:%+v", err)
+		return err
+	}
+	for _, taskInfo := range TaskInfoList {
+		err := db.Model(gorm_model.YoungeeTalentInfo{}).Where("id = ?", taskInfo.TalentId).Updates(map[string]interface{}{
+			"income":      gorm.Expr("income + ?", taskInfo.SettleAmount),
+			"canwithdraw": gorm.Expr("canwithdraw + ?", taskInfo.SettleAmount)}).Error
+		if err != nil {
+			logrus.WithContext(ctx).Errorf("[Task db] Update SetTalentIncome error,err:%+v", err)
+			return err
+		}
+	}
+	return nil
+}
+
+func GetUnfinishedTaskNumber(ctx context.Context, projectID string) (*int64, error) {
+	var unFinishedTaskNumber int64
+	db := GetReadDB(ctx)
+	err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2 and task_stage < 15", projectID).Count(&unFinishedTaskNumber).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Data db] Find YounggeeTaskInfo error,err:%+v", err)
+		return nil, err
+	}
+	return &unFinishedTaskNumber, nil
+}
+
+func UpdateTaskStageByTaskId(ctx context.Context, taskID string, taskStatus int64, taskStage int64) error {
+	db := GetReadDB(ctx)
+	err := db.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id=? and task_status = ?", taskID, taskStatus).Update("task_stage", taskStage).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[UpdateTaskStageByTaskId]2 error query mysql total, err:%+v", err)
+		return err
+	}
+	return nil
+}
+
+// 获取任务ids
+func GetTaskIds(ctx context.Context, projectId string) ([]string, error) {
+	db := GetReadDB(ctx)
+	var taskIds []string
+	err := db.Model(gorm_model.YoungeeTaskInfo{}).Select("task_id").Where("project_id = ? and task_status = 2", projectId).Find(&taskIds).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[CreateMessageByTask] error read mysql, err:%+v", err)
+		return nil, err
+	}
+
+	return taskIds, nil
+}
+
+func UpdateTask(ctx context.Context, updateData gorm_model.YoungeeTaskInfo, tx *gorm.DB) (bool, error) {
+	db := GetWriteDB(ctx)
+	whereCondition := gorm_model.YoungeeTaskInfo{
+		TaskId: updateData.TaskId,
+	}
+	if tx != nil {
+		err := tx.Where(whereCondition).Updates(&updateData).Error
+		if err != nil {
+			return false, err
+		}
+	} else {
+		err := db.Where(whereCondition).Updates(&updateData).Error
+		if err != nil {
+			return false, err
+		}
+	}
+
+	return true, nil
+}

+ 24 - 24
db/task_log.go

@@ -1,24 +1,24 @@
-package db
-
-import (
-	"context"
-	"time"
-	"youngee_m_api/model/gorm_model"
-
-	"github.com/sirupsen/logrus"
-)
-
-func CreateTaskLog(ctx context.Context, taskId string, log string) error {
-	db := GetReadDB(ctx)
-	taskLog := gorm_model.YounggeeTaskLog{
-		TaskID:  taskId,
-		Content: log,
-		LogAt:   time.Now(),
-	}
-	err := db.Model(gorm_model.YounggeeTaskLog{}).Create(&taskLog).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[Sketch db] Insert YounggeeTaskLog error,err:%+v", err)
-		return err
-	}
-	return nil
-}
+package db
+
+import (
+	"context"
+	"time"
+	"youngee_m_api/model/gorm_model"
+
+	"github.com/sirupsen/logrus"
+)
+
+func CreateTaskLog(ctx context.Context, taskId string, log string) error {
+	db := GetReadDB(ctx)
+	taskLog := gorm_model.YounggeeTaskLog{
+		TaskID:  taskId,
+		Content: log,
+		LogAt:   time.Now(),
+	}
+	err := db.Model(gorm_model.YounggeeTaskLog{}).Create(&taskLog).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Sketch db] Insert YounggeeTaskLog error,err:%+v", err)
+		return err
+	}
+	return nil
+}

+ 84 - 84
db/terminate.go

@@ -1,84 +1,84 @@
-package db
-
-import (
-	"context"
-	"fmt"
-	"gorm.io/gorm"
-	"log"
-	"time"
-	"youngee_m_api/model/gorm_model"
-	"youngee_m_api/util"
-
-	"github.com/sirupsen/logrus"
-)
-
-// Terminate 批量提交解约申请
-func Terminate(ctx context.Context, TaskIDs []string, projectIds []string) error {
-	db := GetReadDB(ctx)
-	err := db.Model(gorm_model.YoungeeContractInfo{}).Where("task_id in ?  and (default_status = 1 or default_status = 4)", TaskIDs).
-		Updates(map[string]interface{}{"default_status": 3, "terminate_at": time.Now()}).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[Data db] Update YoungeeContractInfo error,err:%+v", err)
-		return err
-	}
-	dbc := GetReadDB(ctx)
-	errCurDef := dbc.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).
-		Updates(map[string]interface{}{"cur_default_type": 9}).Error
-	if errCurDef != nil {
-		logrus.WithContext(ctx).Errorf("[Data db] Update YoungeeTaskInfo error,err:%+v", errCurDef)
-		return errCurDef
-	}
-	projectIds = util.RemoveStrRepByMap(projectIds)
-	var unfinishedNum int64
-	for _, projectId := range projectIds {
-		err1 := db.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_status = 2 AND task_stage < 15", projectId).Count(&unfinishedNum).Error
-		if err1 != nil {
-			logrus.WithContext(ctx).Errorf("[Data db] Count YoungeeTaskInfo error,err:%+v", err)
-			return err1
-		}
-		var finishedNum int64
-		db.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2 and task_stage >= 15", projectId).Count(&finishedNum)
-		if unfinishedNum == 0 && finishedNum != 0 {
-			// 2. 释放企业账户因项目冻结的资金
-			// 1) 计算剩余资金
-			db1 := GetReadDB(ctx)
-			var allPayment float64
-			var realPayment float64
-			err = db1.Model(gorm_model.YoungeeTaskInfo{}).
-				Where("project_id = ? and task_status = 2 and task_stage >= 15", projectId).Pluck("COALESCE(SUM(all_payment), 0) as allPayment", &allPayment).Error
-			if err != nil {
-				log.Println("DB GetAutoCaseCloseTask error in data:", err)
-				return err
-			}
-			err = db1.Model(gorm_model.YoungeeTaskInfo{}).Select("sum(real_payment) as realPayment").
-				Where("project_id = ? and task_status = 2 and task_stage >= 15", projectId).Pluck("COALESCE(SUM(real_payment), 0) as realPayment", &realPayment).Error
-			if err != nil {
-				log.Println("DB GetAutoCaseCloseTask error in data:", err)
-				return err
-			}
-			fmt.Println("企业应支付金额总计:", allPayment, "实际支付总计:", realPayment)
-			db2 := GetReadDB(ctx)
-			var enterpriseID int64
-			db2.Model(gorm_model.ProjectInfo{}).Select("enterprise_id").Where("project_id = ?", projectId).Find(&enterpriseID)
-			// 	2). 释放剩余资金
-			err = db1.Model(gorm_model.Enterprise{}).Where("enterprise_id = ?", enterpriseID).Updates(
-				map[string]interface{}{
-					"frozen_balance":    gorm.Expr("frozen_balance - ?", allPayment),
-					"balance":           gorm.Expr("balance - ?", realPayment),
-					"available_balance": gorm.Expr("available_balance + ?", allPayment-realPayment)}).Error
-			if err != nil {
-				log.Println("DB GetAutoCaseCloseTask error in data:", err)
-				return err
-			}
-			// 1. 更新项目状态为已结束
-			t := time.Now()
-			err = db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectId).
-				Updates(map[string]interface{}{"project_status": 10, "payment_amount": realPayment, "finish_at": &t}).Error
-			if err != nil {
-				logrus.WithContext(ctx).Errorf("[Project db] Update ProjectInfo error,err:%+v", err)
-				return err
-			}
-		}
-	}
-	return nil
-}
+package db
+
+import (
+	"context"
+	"fmt"
+	"gorm.io/gorm"
+	"log"
+	"time"
+	"youngee_m_api/model/gorm_model"
+	"youngee_m_api/util"
+
+	"github.com/sirupsen/logrus"
+)
+
+// Terminate 批量提交解约申请
+func Terminate(ctx context.Context, TaskIDs []string, projectIds []string) error {
+	db := GetReadDB(ctx)
+	err := db.Model(gorm_model.YoungeeContractInfo{}).Where("task_id in ?  and (default_status = 1 or default_status = 4)", TaskIDs).
+		Updates(map[string]interface{}{"default_status": 3, "terminate_at": time.Now()}).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[Data db] Update YoungeeContractInfo error,err:%+v", err)
+		return err
+	}
+	dbc := GetReadDB(ctx)
+	errCurDef := dbc.Model(gorm_model.YoungeeTaskInfo{}).Where("task_id in ?", TaskIDs).
+		Updates(map[string]interface{}{"cur_default_type": 9}).Error
+	if errCurDef != nil {
+		logrus.WithContext(ctx).Errorf("[Data db] Update YoungeeTaskInfo error,err:%+v", errCurDef)
+		return errCurDef
+	}
+	projectIds = util.RemoveStrRepByMap(projectIds)
+	var unfinishedNum int64
+	for _, projectId := range projectIds {
+		err1 := db.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? AND task_status = 2 AND task_stage < 15", projectId).Count(&unfinishedNum).Error
+		if err1 != nil {
+			logrus.WithContext(ctx).Errorf("[Data db] Count YoungeeTaskInfo error,err:%+v", err)
+			return err1
+		}
+		var finishedNum int64
+		db.Model(gorm_model.YoungeeTaskInfo{}).Where("project_id = ? and task_status = 2 and task_stage >= 15", projectId).Count(&finishedNum)
+		if unfinishedNum == 0 && finishedNum != 0 {
+			// 2. 释放企业账户因项目冻结的资金
+			// 1) 计算剩余资金
+			db1 := GetReadDB(ctx)
+			var allPayment float64
+			var realPayment float64
+			err = db1.Model(gorm_model.YoungeeTaskInfo{}).
+				Where("project_id = ? and task_status = 2 and task_stage >= 15", projectId).Pluck("COALESCE(SUM(all_payment), 0) as allPayment", &allPayment).Error
+			if err != nil {
+				log.Println("DB GetAutoCaseCloseTask error in data:", err)
+				return err
+			}
+			err = db1.Model(gorm_model.YoungeeTaskInfo{}).Select("sum(real_payment) as realPayment").
+				Where("project_id = ? and task_status = 2 and task_stage >= 15", projectId).Pluck("COALESCE(SUM(real_payment), 0) as realPayment", &realPayment).Error
+			if err != nil {
+				log.Println("DB GetAutoCaseCloseTask error in data:", err)
+				return err
+			}
+			fmt.Println("企业应支付金额总计:", allPayment, "实际支付总计:", realPayment)
+			db2 := GetReadDB(ctx)
+			var enterpriseID int64
+			db2.Model(gorm_model.ProjectInfo{}).Select("enterprise_id").Where("project_id = ?", projectId).Find(&enterpriseID)
+			// 	2). 释放剩余资金
+			err = db1.Model(gorm_model.Enterprise{}).Where("enterprise_id = ?", enterpriseID).Updates(
+				map[string]interface{}{
+					"frozen_balance":    gorm.Expr("frozen_balance - ?", allPayment),
+					"balance":           gorm.Expr("balance - ?", realPayment),
+					"available_balance": gorm.Expr("available_balance + ?", allPayment-realPayment)}).Error
+			if err != nil {
+				log.Println("DB GetAutoCaseCloseTask error in data:", err)
+				return err
+			}
+			// 1. 更新项目状态为已结束
+			t := time.Now()
+			err = db.Model(gorm_model.ProjectInfo{}).Where("project_id = ?", projectId).
+				Updates(map[string]interface{}{"project_status": 10, "payment_amount": realPayment, "finish_at": &t}).Error
+			if err != nil {
+				logrus.WithContext(ctx).Errorf("[Project db] Update ProjectInfo error,err:%+v", err)
+				return err
+			}
+		}
+	}
+	return nil
+}

+ 428 - 428
db/user.go

@@ -1,428 +1,428 @@
-package db
-
-import (
-	"context"
-	"fmt"
-	"github.com/caixw/lib.go/conv"
-	"github.com/sirupsen/logrus"
-	"gorm.io/gorm"
-	"reflect"
-	"time"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/common_model"
-	"youngee_m_api/model/gorm_model"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/pack"
-	"youngee_m_api/util"
-)
-
-// GetUser 查找用户,查不到返回空
-func GetUser(ctx context.Context, User string) (*gorm_model.YounggeeUser, error) {
-	db := GetReadDB(ctx)
-	user := &gorm_model.YounggeeUser{}
-	err := db.Model(user).Where("user = ?", User).First(user).Error
-	if err != nil {
-		if err == gorm.ErrRecordNotFound {
-			fmt.Println("record not found")
-			return nil, nil
-		}
-		return nil, err
-	}
-	return user, nil
-}
-
-// GetUserByID 查不到返回空
-func GetUserByID(ctx context.Context, ID int64) (*gorm_model.YounggeeUser, error) {
-	db := GetReadDB(ctx)
-	user := &gorm_model.YounggeeUser{}
-	err := db.Model(user).Where("id = ?", ID).First(user).Error
-	if err != nil {
-		if err == gorm.ErrRecordNotFound {
-			fmt.Println("record not found")
-			return nil, nil
-		}
-		return nil, err
-	}
-	return user, nil
-}
-
-// GetAllUser 查找所有用户
-func GetAllUser(ctx context.Context) ([]string, error) {
-	db := GetReadDB(ctx)
-	db = db.Debug().Model([]gorm_model.YounggeeUser{}).Where("role = ? or role = ?", "1", "2")
-	var user []gorm_model.YounggeeUser
-	db.Find(&user)
-	var total int64
-	if err := db.Count(&total).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetAllUser] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	var userList []string
-	for _, User := range user {
-		userList = append(userList, User.User)
-	}
-	return userList, nil
-}
-
-// GetUserList 获取员工用户列表
-func GetUserList(ctx context.Context, pageNum, pageSize int32) (*http_model.UserListData, error) {
-	db := GetReadDB(ctx)
-	db = db.Debug().Model([]gorm_model.YounggeeUser{}).Where("role = ? or role = ?", "1", "2")
-	var user []gorm_model.YounggeeUser
-	// 查询总数
-	var total int64
-	if err := db.Count(&total).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetUserList] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	// 查询该页数据
-	limit := pageSize
-	offset := pageSize * pageNum // assert pageNum start with 0
-	err := db.Order("created_at desc").Limit(int(limit)).Offset(int(offset)).Find(&user).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetUserList] error query mysql find, err:%+v", err)
-		return nil, err
-	}
-	userList := new(http_model.UserListData)
-	userList.UserListPreview = pack.MGormUserListToHttpUserListPreview(user)
-	userList.Total = conv.MustString(total, "")
-	return userList, nil
-}
-
-func UpdateUserInfo(ctx context.Context, req *http_model.UpdateUserInfoRequest) (string, error) {
-	db := GetReadDB(ctx)
-	user, username, role, password, email, phone := req.User, req.Username, req.Role, req.Password, req.Email, req.Phone
-	db = db.Debug().Model([]gorm_model.YounggeeUser{}).Where("user = ?", user)
-	err := db.Updates(map[string]interface{}{
-		"username": username, "password": password, "email": email, "phone": phone, "role": role}).Error
-	if err != nil {
-		return "", err
-	}
-	return "更新成功", nil
-}
-
-func CreateUser(ctx context.Context, req *http_model.CreateUserRequest) (string, error) {
-	db := GetReadDB(ctx)
-	username, role, password, email, phone := req.Username, req.Role, req.Password, req.Email, req.Phone
-	var IsUserPhone gorm_model.YounggeeUser
-	err := db.Debug().Where(" phone = ?", req.Phone).First(&IsUserPhone).Error
-	if err == nil {
-		return "手机号已存在,不能再次创建", nil
-	}
-	var user gorm_model.YounggeeUser
-	var userInfo gorm_model.YounggeeUser
-	getMonth := time.Now().Format("01") //获取月
-	getDay := time.Now().Day()          //获取日
-	dayString := ""
-	if getDay < 10 {
-		dayString = conv.MustString(getDay, "")
-		dayString = "0" + dayString
-	} else {
-		dayString = conv.MustString(getDay, "")
-	}
-	monthAndDay := conv.MustString(getMonth, "") + dayString
-	err = db.Debug().Where(fmt.Sprintf(" user like '%s%%'", monthAndDay)).Last(&userInfo).Error
-
-	num := 1
-	if userInfo.User != "" {
-		num = conv.MustInt(userInfo.User[4:6], 0)
-		num = num + 1 //获取日
-	} else {
-		num = 1
-	}
-	numString := ""
-	if num < 10 {
-		numString = conv.MustString(num, "")
-		numString = "0" + numString
-	} else {
-		numString = conv.MustString(num, "")
-	}
-
-	user.Username = username
-	user.RealName = username
-	user.User = monthAndDay + numString
-	user.Role = role
-	user.Password = password
-	user.Email = email
-	user.Phone = phone
-	user.LastLoginTime = time.Now()
-	user.CreatedAt = time.Now()
-	user.UpdatedAt = time.Now()
-	err = db.Debug().Create(&user).Error
-	if err != nil {
-		return "创建失败", err
-	}
-	return "创建成功", nil
-}
-
-func DisabledUser(ctx context.Context, user string) (string, error) {
-	db := GetReadDB(ctx)
-	err := db.Debug().Model(gorm_model.YounggeeUser{}).Where("user = ?", user).Update("user_state", "0").Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[DisabledUser] error Update mysql find, err:%+v", err)
-		return "禁用失败", err
-	}
-	return "账号已禁止使用", nil
-}
-
-func GetEnterpriseUserList(ctx context.Context, pageSize, pageNum int32, conditions *common_model.EnterpriseUserConditions) ([]*http_model.EnterpriseUserPreview, int64, error) {
-	db := GetReadDB(ctx)
-	// 查询user表信息,筛选出企业用户
-	db = db.Model([]gorm_model.YounggeeUser{}).Where("role = ? ", "3")
-	if conditions.User != "" {
-		userId := GetUserIDByEnterpriseID(ctx, conditions.User)
-		db = db.Where("id = ?", userId)
-	}
-	// 根据 查询条件过滤
-	conditionType := reflect.TypeOf(conditions).Elem()
-	conditionValue := reflect.ValueOf(conditions).Elem()
-	for i := 0; i < conditionType.NumField(); i++ {
-		field := conditionType.Field(i)
-		tag := field.Tag.Get("condition")
-		value := conditionValue.FieldByName(field.Name)
-		if !util.IsBlank(value) && tag != "created_at" && tag != "username" && tag != "user" {
-			db = db.Debug().Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-		} else if tag == "created_at" && value.Interface() != nil {
-			db = db.Where(fmt.Sprintf("created_at like '%s%%'", value.Interface()))
-		} else if tag == "username" && value.Interface() != nil {
-			db = db.Debug().Where(fmt.Sprintf("username like '%%%s%%'", value.Interface()))
-		}
-	}
-	var totalUser int64
-	if err := db.Count(&totalUser).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetEnterpriseUserList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-
-	var users []gorm_model.YounggeeUser
-	// 查询该页数据
-	limit := pageSize
-	offset := pageSize * pageNum // assert pageNum start with 0
-	err := db.Order("created_at desc").Limit(int(limit)).Offset(int(offset)).Find(&users).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetEnterpriseUserList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	// 查询 用户自增的id
-	var userIds []int64
-	userMap := make(map[int64]gorm_model.YounggeeUser)
-	for _, user := range users {
-		userIds = append(userIds, user.ID)
-		userMap[user.ID] = user
-	}
-
-	db1 := GetReadDB(ctx)
-	var enterprises []gorm_model.Enterprise
-	db1 = db1.Model(gorm_model.Enterprise{}).Where("user_id IN ?", userIds).Find(&enterprises)
-
-	enterpriseMap := make(map[int64]gorm_model.Enterprise)
-	for _, enterprise := range enterprises {
-		enterpriseMap[enterprise.UserID] = enterprise
-	}
-
-	var enterpriseUsers []*http_model.EnterpriseUser
-	for _, userId := range userIds {
-		enterpriseUser := new(http_model.EnterpriseUser)
-		_, ok1 := userMap[userId]
-		_, ok2 := enterpriseMap[userId]
-		if ok1 && ok2 {
-			enterpriseUser.Enterprise = enterpriseMap[userId]
-			enterpriseUser.YoungeeUser = userMap[userId]
-		}
-		enterpriseUsers = append(enterpriseUsers, enterpriseUser)
-	}
-
-	var enterpriseUserDatas []*http_model.EnterpriseUserPreview
-	enterpriseUserDatas = pack.EnterpriseUserToEnterpriseUserData(enterpriseUsers)
-	return enterpriseUserDatas, totalUser, nil
-}
-
-func GetCreatorList(ctx context.Context, pageSize, pageNum int32, conditions *common_model.CreatorListConditions) ([]*http_model.CreatorListPreview, int64, error) {
-	db := GetReadDB(ctx)
-	db = db.Debug().Model(gorm_model.YoungeeTalentInfo{}).Where("in_blacklist = ?", conditions.InBlacklist)
-	// 根据 条件过滤
-	conditionType := reflect.TypeOf(conditions).Elem()
-	conditionValue := reflect.ValueOf(conditions).Elem()
-	for i := 0; i < conditionType.NumField(); i++ {
-		field := conditionType.Field(i)
-		tag := field.Tag.Get("condition")
-		value := conditionValue.FieldByName(field.Name)
-		if !util.IsBlank(value) && tag != "create_date" && tag != "talent_wx_nickname" && tag != "id" {
-			db = db.Debug().Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-		} else if tag == "create_date" && value.Interface() != nil {
-			db = db.Where(fmt.Sprintf("create_date like '%s%%'", value.Interface()))
-		} else if tag == "talent_wx_nickname" && value.Interface() != nil {
-			db = db.Where(fmt.Sprintf("talent_wx_nickname like '%%%s%%'", value.Interface()))
-		} else if tag == "id" && value.Interface() != nil {
-			db = db.Where(fmt.Sprintf("id like '%%%s%%'", value.Interface()))
-		}
-	}
-
-	// 查询总数
-	var total int64
-	var talentList []gorm_model.YoungeeTalentInfo
-	if err := db.Count(&total).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetCreatorList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	// 查询该页数据
-	limit := pageSize
-	offset := pageSize * pageNum // assert pageNum start with 0
-	err := db.Order("create_date desc").Limit(int(limit)).Offset(int(offset)).Find(&talentList).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetCreatorList] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-
-	var CreatorList []*http_model.CreatorListPreview
-
-	CreatorList = pack.TalentListToCreatorListData(talentList)
-	return CreatorList, total, nil
-}
-
-func AccountInfo(ctx context.Context, pageSize, pageNum int32, conditions *common_model.AccountInfoConditions) ([]*http_model.AccountInfoData, int64, error) {
-	db := GetReadDB(ctx)
-	db = db.Debug().Model(gorm_model.YoungeePlatformAccountInfo{})
-	// 根据 条件过滤
-	conditionType := reflect.TypeOf(conditions).Elem()
-	conditionValue := reflect.ValueOf(conditions).Elem()
-	for i := 0; i < conditionType.NumField(); i++ {
-		field := conditionType.Field(i)
-		tag := field.Tag.Get("condition")
-		value := conditionValue.FieldByName(field.Name)
-		if !util.IsBlank(value) && tag != "bind_date" && tag != "fans_low" && tag != "fans_high" && tag != "platform_nickname" {
-			db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
-		} else if tag == "bind_date" && value.Interface() != nil {
-			db = db.Where(fmt.Sprintf("bind_date like '%s%%'", value.Interface()))
-		}
-		if !util.IsBlank(value) && tag == "fans_low" {
-			db = db.Where(fmt.Sprintf("%s >= ?", "fans_count"), value.Interface())
-		}
-		if !util.IsBlank(value) && tag == "fans_high" {
-			db = db.Where(fmt.Sprintf("%s <= ?", "fans_count"), value.Interface())
-		}
-		if !util.IsBlank(value) && tag == "platform_nickname" {
-			db = db.Where(fmt.Sprintf("platform_nickname like '%%%s%%'", value.Interface()))
-		}
-	}
-	db = db.Debug().Where("deleted = ?", 0)
-	var total int64
-	if err := db.Count(&total).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetAccountInfo] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	var PlatformAccountInfos []*gorm_model.YoungeePlatformAccountInfo
-	// 查询该页数据
-	limit := pageSize
-	offset := pageSize * pageNum // assert pageNum start with 0
-	err := db.Order("bind_date desc").Limit(int(limit)).Offset(int(offset)).Find(&PlatformAccountInfos).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetAccountInfo] error query mysql total, err:%+v", err)
-		return nil, 0, err
-	}
-	phoneMap := map[string]string{}
-	for _, PlatformAccountInfo := range PlatformAccountInfos {
-		if _, ok := phoneMap[PlatformAccountInfo.TalentID]; !ok {
-			phoneMap[PlatformAccountInfo.TalentID] = getPhoneByTalentID(ctx, PlatformAccountInfo.TalentID)
-		}
-	}
-	var accountInfoDatas []*http_model.AccountInfoData
-	for _, PlatformAccountInfo := range PlatformAccountInfos {
-		accountInfo := new(http_model.AccountInfoData)
-		accountInfo.BindDate = conv.MustString(PlatformAccountInfo.BindDate, "")[0:19]
-		accountInfo.Platform = consts.GetProjectPlatform(PlatformAccountInfo.PlatformID)
-		accountInfo.PlatformNickname = PlatformAccountInfo.PlatformNickname
-		accountInfo.PlatformType = PlatformAccountInfo.PlatformType
-		accountInfo.TalentId = PlatformAccountInfo.TalentID
-		accountInfo.Phone = phoneMap[PlatformAccountInfo.TalentID]
-		accountInfo.Fans = util.GetNumString(PlatformAccountInfo.FansCount)
-		accountInfo.HomePageUrl = PlatformAccountInfo.HomePageUrl
-		accountInfo.HomePageCaptureUrl = PlatformAccountInfo.HomePageCaptureUrl
-		accountInfoDatas = append(accountInfoDatas, accountInfo)
-	}
-	return accountInfoDatas, total, nil
-}
-
-func getPhoneByTalentID(ctx context.Context, talentID string) string {
-	db := GetReadDB(ctx)
-	//talentInfo := gorm_model.YoungeeTalentInfo{}
-	phoneNumber := ""
-	err := db.Debug().Model(&gorm_model.YoungeeTalentDeliveryAddress{}).Select("phone_number").Where("talent_id = ?", talentID).First(&phoneNumber).Error
-	if err != nil {
-		if err == gorm.ErrRecordNotFound {
-			return ""
-		} else {
-			return ""
-		}
-	}
-	return phoneNumber
-}
-
-func DeleteAccount(ctx context.Context, PlatformID, PlatformNickname, TalentId string) error {
-	db := GetReadDB(ctx)
-	accountInfo := gorm_model.YoungeePlatformAccountInfo{}
-	db = db.Debug().Where("talent_id = ? "+
-		"AND platform_nickname = ? "+
-		"AND platform_id = ?",
-		TalentId, PlatformNickname, PlatformID).Find(&accountInfo)
-	err := CreateMessage(context.Background(), 15, 2, accountInfo.TalentID, "")
-	if err != nil {
-		logrus.WithContext(context.Background()).Errorf("[user db] call CreateMessageByTaskId error,err:%+v", err)
-	}
-	err = db.Delete(&accountInfo).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[user db] call DeleteAccount error,err:%+v", err)
-		return err
-	}
-	return nil
-}
-
-func GetEnterpriseIds(ctx context.Context) (*http_model.EnterPriseIds, error) {
-	var enterpriseIds []string
-	db := GetReadDB(ctx)
-	err := db.Model(gorm_model.Enterprise{}).Select("enterprise_id").Find(&enterpriseIds).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[user db] call GetEnterpriseIds error,err:%+v", err)
-		return nil, err
-	}
-	EnterpriseIds := http_model.EnterPriseIds{}
-	EnterpriseIds.EnterPriseIds = enterpriseIds
-	return &EnterpriseIds, nil
-}
-
-func ModifyAccInfo(ctx context.Context, req *http_model.ModifyAccInfoRequest) error {
-	db := GetReadDB(ctx)
-	return db.Model(gorm_model.YoungeePlatformAccountInfo{}).Where("account_id = ?", req.AccountId).Updates(
-		gorm_model.YoungeePlatformAccountInfo{
-			FansCount:          req.Fans,
-			PlatformNickname:   req.PlatformNickname,
-			HomePageUrl:        req.HomePageUrl,
-			HomePageCaptureUrl: req.HomePageCaptureUrl,
-			UpdatedPerson:      1,
-			UpdatedAdminID:     req.User,
-		}).Error
-}
-
-// 拉黑创作者
-func Block(ctx context.Context, data http_model.BlockRequest) error {
-	err := Black(ctx, data.ID, data.InBlacklist)
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[project] call ChangeProjectStatus error,err:%+v", err)
-		return err
-	}
-	return nil
-}
-
-func Black(ctx context.Context, ID string, InBlacklist uint) error {
-	db := GetReadDB(ctx)
-	talentInfo := gorm_model.YoungeeTalentInfo{}
-	if err := db.Debug().Model(&talentInfo).
-		Where("id = ?", ID).
-		//Updates(gorm_model.YoungeeTalentInfo{InBlacklist: InBlacklist}). //这种方法置0不生效
-		UpdateColumn("in_blacklist", InBlacklist).
-		Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[ChangeProjectStatus] error query mysql total, err:%+v", err)
-		return err
-	}
-	return nil
-}
+package db
+
+import (
+	"context"
+	"fmt"
+	"github.com/caixw/lib.go/conv"
+	"github.com/sirupsen/logrus"
+	"gorm.io/gorm"
+	"reflect"
+	"time"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/common_model"
+	"youngee_m_api/model/gorm_model"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/pack"
+	"youngee_m_api/util"
+)
+
+// GetUser 查找用户,查不到返回空
+func GetUser(ctx context.Context, User string) (*gorm_model.YounggeeUser, error) {
+	db := GetReadDB(ctx)
+	user := &gorm_model.YounggeeUser{}
+	err := db.Model(user).Where("user = ?", User).First(user).Error
+	if err != nil {
+		if err == gorm.ErrRecordNotFound {
+			fmt.Println("record not found")
+			return nil, nil
+		}
+		return nil, err
+	}
+	return user, nil
+}
+
+// GetUserByID 查不到返回空
+func GetUserByID(ctx context.Context, ID int64) (*gorm_model.YounggeeUser, error) {
+	db := GetReadDB(ctx)
+	user := &gorm_model.YounggeeUser{}
+	err := db.Model(user).Where("id = ?", ID).First(user).Error
+	if err != nil {
+		if err == gorm.ErrRecordNotFound {
+			fmt.Println("record not found")
+			return nil, nil
+		}
+		return nil, err
+	}
+	return user, nil
+}
+
+// GetAllUser 查找所有用户
+func GetAllUser(ctx context.Context) ([]string, error) {
+	db := GetReadDB(ctx)
+	db = db.Debug().Model([]gorm_model.YounggeeUser{}).Where("role = ? or role = ?", "1", "2")
+	var user []gorm_model.YounggeeUser
+	db.Find(&user)
+	var total int64
+	if err := db.Count(&total).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetAllUser] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	var userList []string
+	for _, User := range user {
+		userList = append(userList, User.User)
+	}
+	return userList, nil
+}
+
+// GetUserList 获取员工用户列表
+func GetUserList(ctx context.Context, pageNum, pageSize int32) (*http_model.UserListData, error) {
+	db := GetReadDB(ctx)
+	db = db.Debug().Model([]gorm_model.YounggeeUser{}).Where("role = ? or role = ?", "1", "2")
+	var user []gorm_model.YounggeeUser
+	// 查询总数
+	var total int64
+	if err := db.Count(&total).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetUserList] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	// 查询该页数据
+	limit := pageSize
+	offset := pageSize * pageNum // assert pageNum start with 0
+	err := db.Order("created_at desc").Limit(int(limit)).Offset(int(offset)).Find(&user).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetUserList] error query mysql find, err:%+v", err)
+		return nil, err
+	}
+	userList := new(http_model.UserListData)
+	userList.UserListPreview = pack.MGormUserListToHttpUserListPreview(user)
+	userList.Total = conv.MustString(total, "")
+	return userList, nil
+}
+
+func UpdateUserInfo(ctx context.Context, req *http_model.UpdateUserInfoRequest) (string, error) {
+	db := GetReadDB(ctx)
+	user, username, role, password, email, phone := req.User, req.Username, req.Role, req.Password, req.Email, req.Phone
+	db = db.Debug().Model([]gorm_model.YounggeeUser{}).Where("user = ?", user)
+	err := db.Updates(map[string]interface{}{
+		"username": username, "password": password, "email": email, "phone": phone, "role": role}).Error
+	if err != nil {
+		return "", err
+	}
+	return "更新成功", nil
+}
+
+func CreateUser(ctx context.Context, req *http_model.CreateUserRequest) (string, error) {
+	db := GetReadDB(ctx)
+	username, role, password, email, phone := req.Username, req.Role, req.Password, req.Email, req.Phone
+	var IsUserPhone gorm_model.YounggeeUser
+	err := db.Debug().Where(" phone = ?", req.Phone).First(&IsUserPhone).Error
+	if err == nil {
+		return "手机号已存在,不能再次创建", nil
+	}
+	var user gorm_model.YounggeeUser
+	var userInfo gorm_model.YounggeeUser
+	getMonth := time.Now().Format("01") //获取月
+	getDay := time.Now().Day()          //获取日
+	dayString := ""
+	if getDay < 10 {
+		dayString = conv.MustString(getDay, "")
+		dayString = "0" + dayString
+	} else {
+		dayString = conv.MustString(getDay, "")
+	}
+	monthAndDay := conv.MustString(getMonth, "") + dayString
+	err = db.Debug().Where(fmt.Sprintf(" user like '%s%%'", monthAndDay)).Last(&userInfo).Error
+
+	num := 1
+	if userInfo.User != "" {
+		num = conv.MustInt(userInfo.User[4:6], 0)
+		num = num + 1 //获取日
+	} else {
+		num = 1
+	}
+	numString := ""
+	if num < 10 {
+		numString = conv.MustString(num, "")
+		numString = "0" + numString
+	} else {
+		numString = conv.MustString(num, "")
+	}
+
+	user.Username = username
+	user.RealName = username
+	user.User = monthAndDay + numString
+	user.Role = role
+	user.Password = password
+	user.Email = email
+	user.Phone = phone
+	user.LastLoginTime = time.Now()
+	user.CreatedAt = time.Now()
+	user.UpdatedAt = time.Now()
+	err = db.Debug().Create(&user).Error
+	if err != nil {
+		return "创建失败", err
+	}
+	return "创建成功", nil
+}
+
+func DisabledUser(ctx context.Context, user string) (string, error) {
+	db := GetReadDB(ctx)
+	err := db.Debug().Model(gorm_model.YounggeeUser{}).Where("user = ?", user).Update("user_state", "0").Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[DisabledUser] error Update mysql find, err:%+v", err)
+		return "禁用失败", err
+	}
+	return "账号已禁止使用", nil
+}
+
+func GetEnterpriseUserList(ctx context.Context, pageSize, pageNum int32, conditions *common_model.EnterpriseUserConditions) ([]*http_model.EnterpriseUserPreview, int64, error) {
+	db := GetReadDB(ctx)
+	// 查询user表信息,筛选出企业用户
+	db = db.Model([]gorm_model.YounggeeUser{}).Where("role = ? ", "3")
+	if conditions.User != "" {
+		userId := GetUserIDByEnterpriseID(ctx, conditions.User)
+		db = db.Where("id = ?", userId)
+	}
+	// 根据 查询条件过滤
+	conditionType := reflect.TypeOf(conditions).Elem()
+	conditionValue := reflect.ValueOf(conditions).Elem()
+	for i := 0; i < conditionType.NumField(); i++ {
+		field := conditionType.Field(i)
+		tag := field.Tag.Get("condition")
+		value := conditionValue.FieldByName(field.Name)
+		if !util.IsBlank(value) && tag != "created_at" && tag != "username" && tag != "user" {
+			db = db.Debug().Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+		} else if tag == "created_at" && value.Interface() != nil {
+			db = db.Where(fmt.Sprintf("created_at like '%s%%'", value.Interface()))
+		} else if tag == "username" && value.Interface() != nil {
+			db = db.Debug().Where(fmt.Sprintf("username like '%%%s%%'", value.Interface()))
+		}
+	}
+	var totalUser int64
+	if err := db.Count(&totalUser).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetEnterpriseUserList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+
+	var users []gorm_model.YounggeeUser
+	// 查询该页数据
+	limit := pageSize
+	offset := pageSize * pageNum // assert pageNum start with 0
+	err := db.Order("created_at desc").Limit(int(limit)).Offset(int(offset)).Find(&users).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetEnterpriseUserList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	// 查询 用户自增的id
+	var userIds []int64
+	userMap := make(map[int64]gorm_model.YounggeeUser)
+	for _, user := range users {
+		userIds = append(userIds, user.ID)
+		userMap[user.ID] = user
+	}
+
+	db1 := GetReadDB(ctx)
+	var enterprises []gorm_model.Enterprise
+	db1 = db1.Model(gorm_model.Enterprise{}).Where("user_id IN ?", userIds).Find(&enterprises)
+
+	enterpriseMap := make(map[int64]gorm_model.Enterprise)
+	for _, enterprise := range enterprises {
+		enterpriseMap[enterprise.UserID] = enterprise
+	}
+
+	var enterpriseUsers []*http_model.EnterpriseUser
+	for _, userId := range userIds {
+		enterpriseUser := new(http_model.EnterpriseUser)
+		_, ok1 := userMap[userId]
+		_, ok2 := enterpriseMap[userId]
+		if ok1 && ok2 {
+			enterpriseUser.Enterprise = enterpriseMap[userId]
+			enterpriseUser.YoungeeUser = userMap[userId]
+		}
+		enterpriseUsers = append(enterpriseUsers, enterpriseUser)
+	}
+
+	var enterpriseUserDatas []*http_model.EnterpriseUserPreview
+	enterpriseUserDatas = pack.EnterpriseUserToEnterpriseUserData(enterpriseUsers)
+	return enterpriseUserDatas, totalUser, nil
+}
+
+func GetCreatorList(ctx context.Context, pageSize, pageNum int32, conditions *common_model.CreatorListConditions) ([]*http_model.CreatorListPreview, int64, error) {
+	db := GetReadDB(ctx)
+	db = db.Debug().Model(gorm_model.YoungeeTalentInfo{}).Where("in_blacklist = ?", conditions.InBlacklist)
+	// 根据 条件过滤
+	conditionType := reflect.TypeOf(conditions).Elem()
+	conditionValue := reflect.ValueOf(conditions).Elem()
+	for i := 0; i < conditionType.NumField(); i++ {
+		field := conditionType.Field(i)
+		tag := field.Tag.Get("condition")
+		value := conditionValue.FieldByName(field.Name)
+		if !util.IsBlank(value) && tag != "create_date" && tag != "talent_wx_nickname" && tag != "id" {
+			db = db.Debug().Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+		} else if tag == "create_date" && value.Interface() != nil {
+			db = db.Where(fmt.Sprintf("create_date like '%s%%'", value.Interface()))
+		} else if tag == "talent_wx_nickname" && value.Interface() != nil {
+			db = db.Where(fmt.Sprintf("talent_wx_nickname like '%%%s%%'", value.Interface()))
+		} else if tag == "id" && value.Interface() != nil {
+			db = db.Where(fmt.Sprintf("id like '%%%s%%'", value.Interface()))
+		}
+	}
+
+	// 查询总数
+	var total int64
+	var talentList []gorm_model.YoungeeTalentInfo
+	if err := db.Count(&total).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetCreatorList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	// 查询该页数据
+	limit := pageSize
+	offset := pageSize * pageNum // assert pageNum start with 0
+	err := db.Order("create_date desc").Limit(int(limit)).Offset(int(offset)).Find(&talentList).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetCreatorList] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+
+	var CreatorList []*http_model.CreatorListPreview
+
+	CreatorList = pack.TalentListToCreatorListData(talentList)
+	return CreatorList, total, nil
+}
+
+func AccountInfo(ctx context.Context, pageSize, pageNum int32, conditions *common_model.AccountInfoConditions) ([]*http_model.AccountInfoData, int64, error) {
+	db := GetReadDB(ctx)
+	db = db.Debug().Model(gorm_model.YoungeePlatformAccountInfo{})
+	// 根据 条件过滤
+	conditionType := reflect.TypeOf(conditions).Elem()
+	conditionValue := reflect.ValueOf(conditions).Elem()
+	for i := 0; i < conditionType.NumField(); i++ {
+		field := conditionType.Field(i)
+		tag := field.Tag.Get("condition")
+		value := conditionValue.FieldByName(field.Name)
+		if !util.IsBlank(value) && tag != "bind_date" && tag != "fans_low" && tag != "fans_high" && tag != "platform_nickname" {
+			db = db.Where(fmt.Sprintf("%s = ?", tag), value.Interface())
+		} else if tag == "bind_date" && value.Interface() != nil {
+			db = db.Where(fmt.Sprintf("bind_date like '%s%%'", value.Interface()))
+		}
+		if !util.IsBlank(value) && tag == "fans_low" {
+			db = db.Where(fmt.Sprintf("%s >= ?", "fans_count"), value.Interface())
+		}
+		if !util.IsBlank(value) && tag == "fans_high" {
+			db = db.Where(fmt.Sprintf("%s <= ?", "fans_count"), value.Interface())
+		}
+		if !util.IsBlank(value) && tag == "platform_nickname" {
+			db = db.Where(fmt.Sprintf("platform_nickname like '%%%s%%'", value.Interface()))
+		}
+	}
+	db = db.Debug().Where("deleted = ?", 0)
+	var total int64
+	if err := db.Count(&total).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetAccountInfo] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	var PlatformAccountInfos []*gorm_model.YoungeePlatformAccountInfo
+	// 查询该页数据
+	limit := pageSize
+	offset := pageSize * pageNum // assert pageNum start with 0
+	err := db.Order("bind_date desc").Limit(int(limit)).Offset(int(offset)).Find(&PlatformAccountInfos).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetAccountInfo] error query mysql total, err:%+v", err)
+		return nil, 0, err
+	}
+	phoneMap := map[string]string{}
+	for _, PlatformAccountInfo := range PlatformAccountInfos {
+		if _, ok := phoneMap[PlatformAccountInfo.TalentID]; !ok {
+			phoneMap[PlatformAccountInfo.TalentID] = getPhoneByTalentID(ctx, PlatformAccountInfo.TalentID)
+		}
+	}
+	var accountInfoDatas []*http_model.AccountInfoData
+	for _, PlatformAccountInfo := range PlatformAccountInfos {
+		accountInfo := new(http_model.AccountInfoData)
+		accountInfo.BindDate = conv.MustString(PlatformAccountInfo.BindDate, "")[0:19]
+		accountInfo.Platform = consts.GetProjectPlatform(PlatformAccountInfo.PlatformID)
+		accountInfo.PlatformNickname = PlatformAccountInfo.PlatformNickname
+		accountInfo.PlatformType = PlatformAccountInfo.PlatformType
+		accountInfo.TalentId = PlatformAccountInfo.TalentID
+		accountInfo.Phone = phoneMap[PlatformAccountInfo.TalentID]
+		accountInfo.Fans = util.GetNumString(PlatformAccountInfo.FansCount)
+		accountInfo.HomePageUrl = PlatformAccountInfo.HomePageUrl
+		accountInfo.HomePageCaptureUrl = PlatformAccountInfo.HomePageCaptureUrl
+		accountInfoDatas = append(accountInfoDatas, accountInfo)
+	}
+	return accountInfoDatas, total, nil
+}
+
+func getPhoneByTalentID(ctx context.Context, talentID string) string {
+	db := GetReadDB(ctx)
+	//talentInfo := gorm_model.YoungeeTalentInfo{}
+	phoneNumber := ""
+	err := db.Debug().Model(&gorm_model.YoungeeTalentDeliveryAddress{}).Select("phone_number").Where("talent_id = ?", talentID).First(&phoneNumber).Error
+	if err != nil {
+		if err == gorm.ErrRecordNotFound {
+			return ""
+		} else {
+			return ""
+		}
+	}
+	return phoneNumber
+}
+
+func DeleteAccount(ctx context.Context, PlatformID, PlatformNickname, TalentId string) error {
+	db := GetReadDB(ctx)
+	accountInfo := gorm_model.YoungeePlatformAccountInfo{}
+	db = db.Debug().Where("talent_id = ? "+
+		"AND platform_nickname = ? "+
+		"AND platform_id = ?",
+		TalentId, PlatformNickname, PlatformID).Find(&accountInfo)
+	err := CreateMessage(context.Background(), 15, 2, accountInfo.TalentID, "")
+	if err != nil {
+		logrus.WithContext(context.Background()).Errorf("[user db] call CreateMessageByTaskId error,err:%+v", err)
+	}
+	err = db.Delete(&accountInfo).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[user db] call DeleteAccount error,err:%+v", err)
+		return err
+	}
+	return nil
+}
+
+func GetEnterpriseIds(ctx context.Context) (*http_model.EnterPriseIds, error) {
+	var enterpriseIds []string
+	db := GetReadDB(ctx)
+	err := db.Model(gorm_model.Enterprise{}).Select("enterprise_id").Find(&enterpriseIds).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[user db] call GetEnterpriseIds error,err:%+v", err)
+		return nil, err
+	}
+	EnterpriseIds := http_model.EnterPriseIds{}
+	EnterpriseIds.EnterPriseIds = enterpriseIds
+	return &EnterpriseIds, nil
+}
+
+func ModifyAccInfo(ctx context.Context, req *http_model.ModifyAccInfoRequest) error {
+	db := GetReadDB(ctx)
+	return db.Model(gorm_model.YoungeePlatformAccountInfo{}).Where("account_id = ?", req.AccountId).Updates(
+		gorm_model.YoungeePlatformAccountInfo{
+			FansCount:          req.Fans,
+			PlatformNickname:   req.PlatformNickname,
+			HomePageUrl:        req.HomePageUrl,
+			HomePageCaptureUrl: req.HomePageCaptureUrl,
+			UpdatedPerson:      1,
+			UpdatedAdminID:     req.User,
+		}).Error
+}
+
+// 拉黑创作者
+func Block(ctx context.Context, data http_model.BlockRequest) error {
+	err := Black(ctx, data.ID, data.InBlacklist)
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[project] call ChangeProjectStatus error,err:%+v", err)
+		return err
+	}
+	return nil
+}
+
+func Black(ctx context.Context, ID string, InBlacklist uint) error {
+	db := GetReadDB(ctx)
+	talentInfo := gorm_model.YoungeeTalentInfo{}
+	if err := db.Debug().Model(&talentInfo).
+		Where("id = ?", ID).
+		//Updates(gorm_model.YoungeeTalentInfo{InBlacklist: InBlacklist}). //这种方法置0不生效
+		UpdateColumn("in_blacklist", InBlacklist).
+		Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[ChangeProjectStatus] error query mysql total, err:%+v", err)
+		return err
+	}
+	return nil
+}

+ 47 - 47
db/youngee.go

@@ -1,47 +1,47 @@
-package db
-
-import (
-	"context"
-	"github.com/sirupsen/logrus"
-	"strconv"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/gorm_model"
-	"youngee_m_api/model/http_model"
-)
-
-func GetYoungeeRecords(ctx context.Context, talentId string) (*http_model.YoungeeRecordsData, error) {
-	db := GetReadDB(ctx)
-	var youngeeInfos []*gorm_model.YounggeeTalentTeam
-	db = db.Model(&gorm_model.YounggeeTalentTeam{}).Where("talent_id = ?", talentId)
-	// 查询总数
-	var total int64
-	if err := db.Count(&total).Error; err != nil {
-		logrus.WithContext(ctx).Errorf("[GetyoungeeRecords] error query mysql total, err:%+v", err)
-		return nil, err
-	}
-	// 查询该页数据
-	//limit := pageSize
-	//offset := pageSize * pageNum // assert pageNum start with 0
-	err := db.Order("create_at desc").Find(&youngeeInfos).Error
-	if err != nil {
-		logrus.WithContext(ctx).Errorf("[GetyoungeeRecords] error query mysql total, err:%+v", err)
-	}
-	var youngeeRecords []*http_model.YoungeeRecordsPreview
-	for _, youngeeInfo := range youngeeInfos {
-		pointIncome := strconv.FormatInt(youngeeInfo.PointIncome, 10)
-		youngeeRecordsPreview := new(http_model.YoungeeRecordsPreview)
-		youngeeRecordsPreview.ProjectId = youngeeInfo.ProjectID
-		youngeeRecordsPreview.ProjectName = youngeeInfo.ProjectName
-		youngeeRecordsPreview.ProjectType = consts.GetyoungeeType(youngeeInfo.ProjectType)
-		youngeeRecordsPreview.ProjectPlatform = consts.GetyoungeeType(youngeeInfo.Platform)
-		youngeeRecordsPreview.TeamId = youngeeInfo.TeamID
-		youngeeRecordsPreview.TeamStatus = consts.GetTeamStage(youngeeInfo.TeamStatus)
-		youngeeRecordsPreview.PintIncome = pointIncome
-		youngeeRecordsPreview.MoneyIncome = youngeeInfo.MoneyIncome
-		youngeeRecords = append(youngeeRecords, youngeeRecordsPreview)
-	}
-	youngeeRecordsData := http_model.YoungeeRecordsData{}
-	youngeeRecordsData.YoungeeRecordsPreview = youngeeRecords
-	youngeeRecordsData.Total = strconv.FormatInt(total, 10)
-	return &youngeeRecordsData, nil
-}
+package db
+
+import (
+	"context"
+	"github.com/sirupsen/logrus"
+	"strconv"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/gorm_model"
+	"youngee_m_api/model/http_model"
+)
+
+func GetYoungeeRecords(ctx context.Context, talentId string) (*http_model.YoungeeRecordsData, error) {
+	db := GetReadDB(ctx)
+	var youngeeInfos []*gorm_model.YounggeeTalentTeam
+	db = db.Model(&gorm_model.YounggeeTalentTeam{}).Where("talent_id = ?", talentId)
+	// 查询总数
+	var total int64
+	if err := db.Count(&total).Error; err != nil {
+		logrus.WithContext(ctx).Errorf("[GetyoungeeRecords] error query mysql total, err:%+v", err)
+		return nil, err
+	}
+	// 查询该页数据
+	//limit := pageSize
+	//offset := pageSize * pageNum // assert pageNum start with 0
+	err := db.Order("create_at desc").Find(&youngeeInfos).Error
+	if err != nil {
+		logrus.WithContext(ctx).Errorf("[GetyoungeeRecords] error query mysql total, err:%+v", err)
+	}
+	var youngeeRecords []*http_model.YoungeeRecordsPreview
+	for _, youngeeInfo := range youngeeInfos {
+		pointIncome := strconv.FormatInt(youngeeInfo.PointIncome, 10)
+		youngeeRecordsPreview := new(http_model.YoungeeRecordsPreview)
+		youngeeRecordsPreview.ProjectId = youngeeInfo.ProjectID
+		youngeeRecordsPreview.ProjectName = youngeeInfo.ProjectName
+		youngeeRecordsPreview.ProjectType = consts.GetyoungeeType(youngeeInfo.ProjectType)
+		youngeeRecordsPreview.ProjectPlatform = consts.GetyoungeeType(youngeeInfo.Platform)
+		youngeeRecordsPreview.TeamId = youngeeInfo.TeamID
+		youngeeRecordsPreview.TeamStatus = consts.GetTeamStage(youngeeInfo.TeamStatus)
+		youngeeRecordsPreview.PintIncome = pointIncome
+		youngeeRecordsPreview.MoneyIncome = youngeeInfo.MoneyIncome
+		youngeeRecords = append(youngeeRecords, youngeeRecordsPreview)
+	}
+	youngeeRecordsData := http_model.YoungeeRecordsData{}
+	youngeeRecordsData.YoungeeRecordsPreview = youngeeRecords
+	youngeeRecordsData.Total = strconv.FormatInt(total, 10)
+	return &youngeeRecordsData, nil
+}

+ 23 - 23
dockerfile

@@ -1,23 +1,23 @@
-FROM golang:1.17 as builder
-
-WORKDIR /go/src/app
-
-COPY . .
-
-RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
-
-ENV youngee_env pro
-
-RUN go env -w GO111MODULE=on
-
-RUN go env -w GOPROXY=https://goproxy.cn,direct
-
-RUN go mod tidy -compat=1.17
-
-RUN go build .
-
-EXPOSE 8400
-
-WORKDIR /go/src/app
-
-ENTRYPOINT ["./youngee_m_api"]
+FROM golang:1.17 as builder
+
+WORKDIR /go/src/app
+
+COPY . .
+
+RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
+
+ENV youngee_env pro
+
+RUN go env -w GO111MODULE=on
+
+RUN go env -w GOPROXY=https://goproxy.cn,direct
+
+RUN go mod tidy -compat=1.17
+
+RUN go build .
+
+EXPOSE 8400
+
+WORKDIR /go/src/app
+
+ENTRYPOINT ["./youngee_m_api"]

+ 23 - 23
go.mod

@@ -1,23 +1,23 @@
-module youngee_m_api
-
-go 1.16
-
-require (
-	github.com/caixw/lib.go v0.0.0-20141220110639-1781da9139e0
-	github.com/cstockton/go-conv v1.0.0
-	github.com/gin-gonic/gin v1.8.1
-	github.com/sirupsen/logrus v1.8.1
-	gopkg.in/yaml.v2 v2.4.0
-	gorm.io/driver/mysql v1.3.4
-	gorm.io/gorm v1.23.6
-)
-
-require (
-	github.com/GUAIK-ORG/go-snowflake v0.0.0-20200116064823-220c4260e85f
-	github.com/go-redis/redis/v8 v8.11.5
-	github.com/google/uuid v1.3.0
-	github.com/issue9/conv v1.2.1
-	github.com/robfig/cron/v3 v3.0.0
-	github.com/tidwall/gjson v1.14.3
-	github.com/wechatpay-apiv3/wechatpay-go v0.2.15
-)
+module youngee_m_api
+
+go 1.16
+
+require (
+	github.com/caixw/lib.go v0.0.0-20141220110639-1781da9139e0
+	github.com/cstockton/go-conv v1.0.0
+	github.com/gin-gonic/gin v1.8.1
+	github.com/sirupsen/logrus v1.8.1
+	gopkg.in/yaml.v2 v2.4.0
+	gorm.io/driver/mysql v1.3.4
+	gorm.io/gorm v1.23.6
+)
+
+require (
+	github.com/GUAIK-ORG/go-snowflake v0.0.0-20200116064823-220c4260e85f
+	github.com/go-redis/redis/v8 v8.11.5
+	github.com/google/uuid v1.3.0
+	github.com/issue9/conv v1.2.1
+	github.com/robfig/cron/v3 v3.0.0
+	github.com/tidwall/gjson v1.14.3
+	github.com/wechatpay-apiv3/wechatpay-go v0.2.15
+)

+ 218 - 218
go.sum

@@ -1,218 +1,218 @@
-github.com/GUAIK-ORG/go-snowflake v0.0.0-20200116064823-220c4260e85f h1:RDkg3pyE1qGbBpRWmvSN9RNZC5nUrOaEPiEpEb8y2f0=
-github.com/GUAIK-ORG/go-snowflake v0.0.0-20200116064823-220c4260e85f/go.mod h1:zA7AF9RTfpluCfz0omI4t5KCMaWHUMicsZoMccnaT44=
-github.com/agiledragon/gomonkey v2.0.2+incompatible h1:eXKi9/piiC3cjJD1658mEE2o3NjkJ5vDLgYjCQu0Xlw=
-github.com/agiledragon/gomonkey v2.0.2+incompatible/go.mod h1:2NGfXu1a80LLr2cmWXGBDaHEjb1idR6+FVlX5T3D9hw=
-github.com/caixw/lib.go v0.0.0-20141220110639-1781da9139e0 h1:MnIURgMAFAMyxAHu8h2TbnjxMMd7SKVCPyTZz5EfwNA=
-github.com/caixw/lib.go v0.0.0-20141220110639-1781da9139e0/go.mod h1:hQL8hyiiVE/BSo7gh13njx+DpvoPh/yE8/BkKKc62RA=
-github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE=
-github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
-github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
-github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
-github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
-github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
-github.com/cstockton/go-conv v1.0.0 h1:zj/q/0MpQ/97XfiC9glWiohO8lhgR4TTnHYZifLTv6I=
-github.com/cstockton/go-conv v1.0.0/go.mod h1:HuiHkkRgOA0IoBNPC7ysG7kNpjDYlgM7Kj62yQPxjy4=
-github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
-github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78=
-github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
-github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
-github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
-github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
-github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
-github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
-github.com/gin-gonic/gin v1.8.1 h1:4+fr/el88TOO3ewCmQr8cx/CtZ/umlIRIs5M4NTNjf8=
-github.com/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk=
-github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A=
-github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
-github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU=
-github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs=
-github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho=
-github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA=
-github.com/go-playground/validator/v10 v10.10.0 h1:I7mrTYv78z8k8VXa/qJlOlEXn/nBh+BF8dHX5nt/dr0=
-github.com/go-playground/validator/v10 v10.10.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos=
-github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI=
-github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo=
-github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
-github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
-github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
-github.com/goccy/go-json v0.9.7 h1:IcB+Aqpx/iMHu5Yooh7jEzJk1JZ7Pjtmys2ukPr7EeM=
-github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
-github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
-github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
-github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
-github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
-github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
-github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
-github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
-github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
-github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
-github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
-github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
-github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
-github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
-github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
-github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
-github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
-github.com/issue9/assert v1.4.1 h1:gUtOpMTeaE4JTe9kACma5foOHBvVt1p5XTFrULDwdXI=
-github.com/issue9/assert v1.4.1/go.mod h1:Yktk83hAVl1SPSYtd9kjhBizuiBIqUQyj+D5SE2yjVY=
-github.com/issue9/conv v1.2.1 h1:bSRC6p0eSJqwtnN2yk04ct4F556y8i+TdiUiBvN+KdA=
-github.com/issue9/conv v1.2.1/go.mod h1:rxUsUvpb1/3rZt0Uf/UtEC6BogEO2BV3bCWbh2DORp8=
-github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
-github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
-github.com/jinzhu/now v1.1.4 h1:tHnRBy1i5F2Dh8BAFxqFzxKqqvezXrL2OW1TnX+Mlas=
-github.com/jinzhu/now v1.1.4/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
-github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
-github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
-github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
-github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
-github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
-github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
-github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
-github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
-github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
-github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
-github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w=
-github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
-github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
-github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
-github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc=
-github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
-github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
-github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
-github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
-github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
-github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
-github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
-github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0=
-github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
-github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
-github.com/onsi/ginkgo/v2 v2.0.0/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c=
-github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
-github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
-github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
-github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE=
-github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5hitRs=
-github.com/pelletier/go-toml/v2 v2.0.1 h1:8e3L2cCQzLFi2CR4g7vGFuFxX7Jl1kKX8gW+iV0GUKU=
-github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo=
-github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
-github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
-github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/robfig/cron/v3 v3.0.0 h1:kQ6Cb7aHOHTSzNVNEhmp8EcWKLb4CbiMW9h9VyIhO4E=
-github.com/robfig/cron/v3 v3.0.0/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
-github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
-github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8=
-github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
-github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
-github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
-github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
-github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
-github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
-github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
-github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
-github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
-github.com/tidwall/gjson v1.14.3 h1:9jvXn7olKEHU1S9vwoMGliaT8jq1vJ7IH/n9zD9Dnlw=
-github.com/tidwall/gjson v1.14.3/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
-github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
-github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
-github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs=
-github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
-github.com/ugorji/go v1.2.7 h1:qYhyWUUd6WbiM+C6JZAUkIJt/1WrjzNHY9+KCIjVqTo=
-github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M=
-github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0=
-github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY=
-github.com/wechatpay-apiv3/wechatpay-go v0.2.15 h1:WtlAK8GsLwTveS7c5W8Vd1m4rU1cJ0YW6tqBW2BlKH8=
-github.com/wechatpay-apiv3/wechatpay-go v0.2.15/go.mod h1:Ca9wvI7xFoIWiY163q1jzddarQBS+1NE17OM1ZV24nw=
-github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97 h1:/UOmuWzQfxxo9UtlXMwuQU8CMgg1eZXqTRwkSQJWKOI=
-golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20210428140749-89ef3d95e781 h1:DzZ89McO9/gWPsQXS/FVKAlG02ZjaQ6AlZRBimEYOd0=
-golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
-golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e h1:fLOSk5Q00efkSvAm+4xcoXD+RRmLmmulPn5I3Y9F2EM=
-golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M=
-golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
-golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
-google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
-google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
-google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
-google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
-google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
-google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
-google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
-google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw=
-google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
-gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
-gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
-gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
-gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
-gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
-gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
-gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
-gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
-gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
-gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gorm.io/driver/mysql v1.3.4 h1:/KoBMgsUHC3bExsekDcmNYaBnfH2WNeFuXqqrqMc98Q=
-gorm.io/driver/mysql v1.3.4/go.mod h1:s4Tq0KmD0yhPGHbZEwg1VPlH0vT/GBHJZorPzhcxBUE=
-gorm.io/gorm v1.23.4/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=
-gorm.io/gorm v1.23.6 h1:KFLdNgri4ExFFGTRGGFWON2P1ZN28+9SJRN8voOoYe0=
-gorm.io/gorm v1.23.6/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=
+github.com/GUAIK-ORG/go-snowflake v0.0.0-20200116064823-220c4260e85f h1:RDkg3pyE1qGbBpRWmvSN9RNZC5nUrOaEPiEpEb8y2f0=
+github.com/GUAIK-ORG/go-snowflake v0.0.0-20200116064823-220c4260e85f/go.mod h1:zA7AF9RTfpluCfz0omI4t5KCMaWHUMicsZoMccnaT44=
+github.com/agiledragon/gomonkey v2.0.2+incompatible h1:eXKi9/piiC3cjJD1658mEE2o3NjkJ5vDLgYjCQu0Xlw=
+github.com/agiledragon/gomonkey v2.0.2+incompatible/go.mod h1:2NGfXu1a80LLr2cmWXGBDaHEjb1idR6+FVlX5T3D9hw=
+github.com/caixw/lib.go v0.0.0-20141220110639-1781da9139e0 h1:MnIURgMAFAMyxAHu8h2TbnjxMMd7SKVCPyTZz5EfwNA=
+github.com/caixw/lib.go v0.0.0-20141220110639-1781da9139e0/go.mod h1:hQL8hyiiVE/BSo7gh13njx+DpvoPh/yE8/BkKKc62RA=
+github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE=
+github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
+github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
+github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
+github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
+github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
+github.com/cstockton/go-conv v1.0.0 h1:zj/q/0MpQ/97XfiC9glWiohO8lhgR4TTnHYZifLTv6I=
+github.com/cstockton/go-conv v1.0.0/go.mod h1:HuiHkkRgOA0IoBNPC7ysG7kNpjDYlgM7Kj62yQPxjy4=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78=
+github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
+github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
+github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
+github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
+github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE=
+github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
+github.com/gin-gonic/gin v1.8.1 h1:4+fr/el88TOO3ewCmQr8cx/CtZ/umlIRIs5M4NTNjf8=
+github.com/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk=
+github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A=
+github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
+github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU=
+github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs=
+github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho=
+github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA=
+github.com/go-playground/validator/v10 v10.10.0 h1:I7mrTYv78z8k8VXa/qJlOlEXn/nBh+BF8dHX5nt/dr0=
+github.com/go-playground/validator/v10 v10.10.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos=
+github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI=
+github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo=
+github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
+github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
+github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
+github.com/goccy/go-json v0.9.7 h1:IcB+Aqpx/iMHu5Yooh7jEzJk1JZ7Pjtmys2ukPr7EeM=
+github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
+github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
+github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
+github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
+github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
+github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
+github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
+github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
+github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
+github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
+github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
+github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
+github.com/issue9/assert v1.4.1 h1:gUtOpMTeaE4JTe9kACma5foOHBvVt1p5XTFrULDwdXI=
+github.com/issue9/assert v1.4.1/go.mod h1:Yktk83hAVl1SPSYtd9kjhBizuiBIqUQyj+D5SE2yjVY=
+github.com/issue9/conv v1.2.1 h1:bSRC6p0eSJqwtnN2yk04ct4F556y8i+TdiUiBvN+KdA=
+github.com/issue9/conv v1.2.1/go.mod h1:rxUsUvpb1/3rZt0Uf/UtEC6BogEO2BV3bCWbh2DORp8=
+github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
+github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
+github.com/jinzhu/now v1.1.4 h1:tHnRBy1i5F2Dh8BAFxqFzxKqqvezXrL2OW1TnX+Mlas=
+github.com/jinzhu/now v1.1.4/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
+github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
+github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
+github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
+github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w=
+github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
+github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
+github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
+github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
+github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
+github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
+github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
+github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
+github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0=
+github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
+github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
+github.com/onsi/ginkgo/v2 v2.0.0/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c=
+github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
+github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
+github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
+github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE=
+github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5hitRs=
+github.com/pelletier/go-toml/v2 v2.0.1 h1:8e3L2cCQzLFi2CR4g7vGFuFxX7Jl1kKX8gW+iV0GUKU=
+github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo=
+github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/robfig/cron/v3 v3.0.0 h1:kQ6Cb7aHOHTSzNVNEhmp8EcWKLb4CbiMW9h9VyIhO4E=
+github.com/robfig/cron/v3 v3.0.0/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
+github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
+github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8=
+github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
+github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
+github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
+github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
+github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
+github.com/tidwall/gjson v1.14.3 h1:9jvXn7olKEHU1S9vwoMGliaT8jq1vJ7IH/n9zD9Dnlw=
+github.com/tidwall/gjson v1.14.3/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
+github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
+github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
+github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs=
+github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
+github.com/ugorji/go v1.2.7 h1:qYhyWUUd6WbiM+C6JZAUkIJt/1WrjzNHY9+KCIjVqTo=
+github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M=
+github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0=
+github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY=
+github.com/wechatpay-apiv3/wechatpay-go v0.2.15 h1:WtlAK8GsLwTveS7c5W8Vd1m4rU1cJ0YW6tqBW2BlKH8=
+github.com/wechatpay-apiv3/wechatpay-go v0.2.15/go.mod h1:Ca9wvI7xFoIWiY163q1jzddarQBS+1NE17OM1ZV24nw=
+github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97 h1:/UOmuWzQfxxo9UtlXMwuQU8CMgg1eZXqTRwkSQJWKOI=
+golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
+golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20210428140749-89ef3d95e781 h1:DzZ89McO9/gWPsQXS/FVKAlG02ZjaQ6AlZRBimEYOd0=
+golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
+golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e h1:fLOSk5Q00efkSvAm+4xcoXD+RRmLmmulPn5I3Y9F2EM=
+golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M=
+golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
+google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
+google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
+google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
+google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
+google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw=
+google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
+gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
+gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
+gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gorm.io/driver/mysql v1.3.4 h1:/KoBMgsUHC3bExsekDcmNYaBnfH2WNeFuXqqrqMc98Q=
+gorm.io/driver/mysql v1.3.4/go.mod h1:s4Tq0KmD0yhPGHbZEwg1VPlH0vT/GBHJZorPzhcxBUE=
+gorm.io/gorm v1.23.4/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=
+gorm.io/gorm v1.23.6 h1:KFLdNgri4ExFFGTRGGFWON2P1ZN28+9SJRN8voOoYe0=
+gorm.io/gorm v1.23.6/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=

+ 55 - 55
handler/ConfirmWithdrawal.go

@@ -1,55 +1,55 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/db"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/util"
-)
-
-func WrapConfirmWithdrawalHandler(ctx *gin.Context) {
-	handler := newConfirmWithdrawalHandler(ctx)
-	BaseRun(handler)
-}
-
-type ConfirmWithdrawalHandler struct {
-	ctx  *gin.Context
-	req  *http_model.ConfirmWithdrawalRequest
-	resp *http_model.CommonResponse
-}
-
-func (c ConfirmWithdrawalHandler) getContext() *gin.Context {
-	return c.ctx
-}
-
-func (c ConfirmWithdrawalHandler) getResponse() interface{} {
-	return c.resp
-}
-
-func (c ConfirmWithdrawalHandler) getRequest() interface{} {
-	return c.req
-}
-
-func (c ConfirmWithdrawalHandler) run() {
-	err := db.ConfirmWithdrawal(c.ctx, c.req.WithdrawId)
-	if err != nil {
-		logrus.WithContext(c.ctx).Errorf("[ConfirmWithdrawalHandler] error ConfirmWithdrawal, err:%+v", err)
-		util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, consts.DefaultToast)
-		return
-	}
-	c.resp.Message = "确认提现成功"
-}
-
-func (c ConfirmWithdrawalHandler) checkParam() error {
-	return nil
-}
-
-func newConfirmWithdrawalHandler(ctx *gin.Context) *ConfirmWithdrawalHandler {
-	return &ConfirmWithdrawalHandler{
-		ctx:  ctx,
-		req:  http_model.NewConfirmWithdrawalRequest(),
-		resp: http_model.NewConfirmWithdrawalResponse(),
-	}
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/db"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/util"
+)
+
+func WrapConfirmWithdrawalHandler(ctx *gin.Context) {
+	handler := newConfirmWithdrawalHandler(ctx)
+	BaseRun(handler)
+}
+
+type ConfirmWithdrawalHandler struct {
+	ctx  *gin.Context
+	req  *http_model.ConfirmWithdrawalRequest
+	resp *http_model.CommonResponse
+}
+
+func (c ConfirmWithdrawalHandler) getContext() *gin.Context {
+	return c.ctx
+}
+
+func (c ConfirmWithdrawalHandler) getResponse() interface{} {
+	return c.resp
+}
+
+func (c ConfirmWithdrawalHandler) getRequest() interface{} {
+	return c.req
+}
+
+func (c ConfirmWithdrawalHandler) run() {
+	err := db.ConfirmWithdrawal(c.ctx, c.req.WithdrawId)
+	if err != nil {
+		logrus.WithContext(c.ctx).Errorf("[ConfirmWithdrawalHandler] error ConfirmWithdrawal, err:%+v", err)
+		util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, consts.DefaultToast)
+		return
+	}
+	c.resp.Message = "确认提现成功"
+}
+
+func (c ConfirmWithdrawalHandler) checkParam() error {
+	return nil
+}
+
+func newConfirmWithdrawalHandler(ctx *gin.Context) *ConfirmWithdrawalHandler {
+	return &ConfirmWithdrawalHandler{
+		ctx:  ctx,
+		req:  http_model.NewConfirmWithdrawalRequest(),
+		resp: http_model.NewConfirmWithdrawalResponse(),
+	}
+}

+ 60 - 60
handler/CreateSecTaskLogistics.go

@@ -1,60 +1,60 @@
-package handler
-
-import (
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-)
-
-func WrapCreateSecTaskLogisticsHandler(ctx *gin.Context) {
-	handler := newCreateSecTaskLogisticsHandler(ctx)
-	BaseRun(handler)
-}
-
-type CreateSecTaskLogistics struct {
-	ctx  *gin.Context
-	req  *http_model.CreateSecTaskLogisticsRequest
-	resp *http_model.CommonResponse
-}
-
-func (c CreateSecTaskLogistics) getContext() *gin.Context {
-	return c.ctx
-}
-
-func (c CreateSecTaskLogistics) getResponse() interface{} {
-	return c.resp
-}
-
-func (c CreateSecTaskLogistics) getRequest() interface{} {
-	return c.req
-}
-
-func (c CreateSecTaskLogistics) run() {
-	data := http_model.CreateSecTaskLogisticsRequest{}
-	data = *c.req
-	res, err := service.SecLogistics.Create(c.ctx, data)
-	if err != nil {
-		logrus.Errorf("[CreateSecTaskLogistics] call CreateSecTaskLogistics err:%+v\n", err)
-		util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, "")
-		logrus.Info("CreateSecTaskLogistics fail,req:%+v", c.req)
-		return
-	}
-	c.resp.Message = "成功添加发货信息"
-	c.resp.Data = res
-}
-
-func (c CreateSecTaskLogistics) checkParam() error {
-	return nil
-}
-
-func newCreateSecTaskLogisticsHandler(ctx *gin.Context) *CreateSecTaskLogistics {
-	return &CreateSecTaskLogistics{
-		ctx:  ctx,
-		req:  http_model.NewCreateSecTaskLogisticsRequest(),
-		resp: http_model.NewCreateSecTaskLogisticsResponse(),
-	}
-}
+package handler
+
+import (
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+)
+
+func WrapCreateSecTaskLogisticsHandler(ctx *gin.Context) {
+	handler := newCreateSecTaskLogisticsHandler(ctx)
+	BaseRun(handler)
+}
+
+type CreateSecTaskLogistics struct {
+	ctx  *gin.Context
+	req  *http_model.CreateSecTaskLogisticsRequest
+	resp *http_model.CommonResponse
+}
+
+func (c CreateSecTaskLogistics) getContext() *gin.Context {
+	return c.ctx
+}
+
+func (c CreateSecTaskLogistics) getResponse() interface{} {
+	return c.resp
+}
+
+func (c CreateSecTaskLogistics) getRequest() interface{} {
+	return c.req
+}
+
+func (c CreateSecTaskLogistics) run() {
+	data := http_model.CreateSecTaskLogisticsRequest{}
+	data = *c.req
+	res, err := service.SecLogistics.Create(c.ctx, data)
+	if err != nil {
+		logrus.Errorf("[CreateSecTaskLogistics] call CreateSecTaskLogistics err:%+v\n", err)
+		util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, "")
+		logrus.Info("CreateSecTaskLogistics fail,req:%+v", c.req)
+		return
+	}
+	c.resp.Message = "成功添加发货信息"
+	c.resp.Data = res
+}
+
+func (c CreateSecTaskLogistics) checkParam() error {
+	return nil
+}
+
+func newCreateSecTaskLogisticsHandler(ctx *gin.Context) *CreateSecTaskLogistics {
+	return &CreateSecTaskLogistics{
+		ctx:  ctx,
+		req:  http_model.NewCreateSecTaskLogisticsRequest(),
+		resp: http_model.NewCreateSecTaskLogisticsResponse(),
+	}
+}

+ 61 - 61
handler/GetSecTaskList.go

@@ -1,61 +1,61 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-)
-
-func WrapGetSecTaskListHandler(ctx *gin.Context) {
-	handler := newGetSecTaskListHandler(ctx)
-	BaseRun(handler)
-}
-
-type GetSecTaskList struct {
-	ctx  *gin.Context
-	req  *http_model.GetSecTaskListRequest
-	resp *http_model.CommonResponse
-}
-
-func (c GetSecTaskList) getContext() *gin.Context {
-	return c.ctx
-}
-
-func (c GetSecTaskList) getResponse() interface{} {
-	return c.resp
-}
-
-func (c GetSecTaskList) getRequest() interface{} {
-	return c.req
-}
-
-func (c GetSecTaskList) run() {
-	data := http_model.GetSecTaskListRequest{}
-	data = *c.req
-	//auth := middleware.GetSessionAuth(c.ctx)
-	//enterpriseID := auth.EnterpriseID
-	res, err := service.SelectionTask.GetList(c.ctx, data)
-	if err != nil {
-		logrus.Errorf("[GetSecTaskList] call GetSecTaskList err:%+v\n", err)
-		util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, "")
-		logrus.Info("GetSecTaskList fail,req:%+v", c.req)
-		return
-	}
-	c.resp.Message = "成功查询选品任务"
-	c.resp.Data = res
-}
-
-func (c GetSecTaskList) checkParam() error {
-	return nil
-}
-
-func newGetSecTaskListHandler(ctx *gin.Context) *GetSecTaskList {
-	return &GetSecTaskList{
-		ctx:  ctx,
-		req:  http_model.NewGetSecTaskListRequest(),
-		resp: http_model.NewGetSecTaskListResponse(),
-	}
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+)
+
+func WrapGetSecTaskListHandler(ctx *gin.Context) {
+	handler := newGetSecTaskListHandler(ctx)
+	BaseRun(handler)
+}
+
+type GetSecTaskList struct {
+	ctx  *gin.Context
+	req  *http_model.GetSecTaskListRequest
+	resp *http_model.CommonResponse
+}
+
+func (c GetSecTaskList) getContext() *gin.Context {
+	return c.ctx
+}
+
+func (c GetSecTaskList) getResponse() interface{} {
+	return c.resp
+}
+
+func (c GetSecTaskList) getRequest() interface{} {
+	return c.req
+}
+
+func (c GetSecTaskList) run() {
+	data := http_model.GetSecTaskListRequest{}
+	data = *c.req
+	//auth := middleware.GetSessionAuth(c.ctx)
+	//enterpriseID := auth.EnterpriseID
+	res, err := service.SelectionTask.GetList(c.ctx, data)
+	if err != nil {
+		logrus.Errorf("[GetSecTaskList] call GetSecTaskList err:%+v\n", err)
+		util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, "")
+		logrus.Info("GetSecTaskList fail,req:%+v", c.req)
+		return
+	}
+	c.resp.Message = "成功查询选品任务"
+	c.resp.Data = res
+}
+
+func (c GetSecTaskList) checkParam() error {
+	return nil
+}
+
+func newGetSecTaskListHandler(ctx *gin.Context) *GetSecTaskList {
+	return &GetSecTaskList{
+		ctx:  ctx,
+		req:  http_model.NewGetSecTaskListRequest(),
+		resp: http_model.NewGetSecTaskListResponse(),
+	}
+}

+ 58 - 58
handler/GetServiceFee.go

@@ -1,58 +1,58 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	log "github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-)
-
-func WrapGetServiceChargeHandler(ctx *gin.Context) {
-	handler := newGetServiceChargeHandler(ctx)
-	BaseRun(handler)
-}
-
-func newGetServiceChargeHandler(ctx *gin.Context) *GetServiceChargeHandler {
-	return &GetServiceChargeHandler{
-		req:  http_model.NewGetServiceChargeRequest(),
-		resp: http_model.NewGetServiceChargeResponse(),
-		ctx:  ctx,
-	}
-}
-
-type GetServiceChargeHandler struct {
-	req  *http_model.GetServiceChargeRequest
-	resp *http_model.CommonResponse
-	ctx  *gin.Context
-}
-
-func (h *GetServiceChargeHandler) getRequest() interface{} {
-	return h.req
-}
-func (h *GetServiceChargeHandler) getContext() *gin.Context {
-	return h.ctx
-}
-func (h *GetServiceChargeHandler) getResponse() interface{} {
-	return h.resp
-}
-
-func (h *GetServiceChargeHandler) run() {
-	data := http_model.GetServiceChargeRequest{}
-	data = *h.req
-	res, err := service.Project.GetServiceCharge(h.ctx, data)
-	if err != nil {
-		logrus.Errorf("[GetServiceChargeHandler] call GetServiceCharge err:%+v\n", err)
-		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
-		log.Info("GetServiceCharge fail,req:%+v", h.req)
-		return
-	}
-	h.resp.Message = ""
-	h.resp.Data = res
-}
-
-func (h *GetServiceChargeHandler) checkParam() error {
-	return nil
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	log "github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+)
+
+func WrapGetServiceChargeHandler(ctx *gin.Context) {
+	handler := newGetServiceChargeHandler(ctx)
+	BaseRun(handler)
+}
+
+func newGetServiceChargeHandler(ctx *gin.Context) *GetServiceChargeHandler {
+	return &GetServiceChargeHandler{
+		req:  http_model.NewGetServiceChargeRequest(),
+		resp: http_model.NewGetServiceChargeResponse(),
+		ctx:  ctx,
+	}
+}
+
+type GetServiceChargeHandler struct {
+	req  *http_model.GetServiceChargeRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *GetServiceChargeHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *GetServiceChargeHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *GetServiceChargeHandler) getResponse() interface{} {
+	return h.resp
+}
+
+func (h *GetServiceChargeHandler) run() {
+	data := http_model.GetServiceChargeRequest{}
+	data = *h.req
+	res, err := service.Project.GetServiceCharge(h.ctx, data)
+	if err != nil {
+		logrus.Errorf("[GetServiceChargeHandler] call GetServiceCharge err:%+v\n", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+		log.Info("GetServiceCharge fail,req:%+v", h.req)
+		return
+	}
+	h.resp.Message = ""
+	h.resp.Data = res
+}
+
+func (h *GetServiceChargeHandler) checkParam() error {
+	return nil
+}

+ 58 - 58
handler/GetSpecialDataNumber.go

@@ -1,58 +1,58 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	log "github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-)
-
-func WrapGetSpecialDataNumberHandler(ctx *gin.Context) {
-	handler := newGetSpecialDataNumberHandler(ctx)
-	BaseRun(handler)
-}
-
-func newGetSpecialDataNumberHandler(ctx *gin.Context) *GetSpecialDataNumberHandler {
-	return &GetSpecialDataNumberHandler{
-		req:  http_model.NewGetSpecialDataNumberRequest(),
-		resp: http_model.NewGetSpecialDataNumberResponse(),
-		ctx:  ctx,
-	}
-}
-
-type GetSpecialDataNumberHandler struct {
-	req  *http_model.GetSpecialDataNumberRequest
-	resp *http_model.CommonResponse
-	ctx  *gin.Context
-}
-
-func (h *GetSpecialDataNumberHandler) getRequest() interface{} {
-	return h.req
-}
-func (h *GetSpecialDataNumberHandler) getContext() *gin.Context {
-	return h.ctx
-}
-func (h *GetSpecialDataNumberHandler) getResponse() interface{} {
-	return h.resp
-}
-
-func (h *GetSpecialDataNumberHandler) run() {
-	data := http_model.GetSpecialDataNumberRequest{}
-	data = *h.req
-	res, err := service.Number.GetSpecialDataNumber(h.ctx, data)
-	if err != nil {
-		logrus.Errorf("[GetSpecialDataNumberHandler] call GetSpecialDataNumber err:%+v\n", err)
-		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
-		log.Info("GetSpecialDataNumber fail,req:%+v", h.req)
-		return
-	}
-	h.resp.Message = ""
-	h.resp.Data = res
-}
-
-func (h *GetSpecialDataNumberHandler) checkParam() error {
-	return nil
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	log "github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+)
+
+func WrapGetSpecialDataNumberHandler(ctx *gin.Context) {
+	handler := newGetSpecialDataNumberHandler(ctx)
+	BaseRun(handler)
+}
+
+func newGetSpecialDataNumberHandler(ctx *gin.Context) *GetSpecialDataNumberHandler {
+	return &GetSpecialDataNumberHandler{
+		req:  http_model.NewGetSpecialDataNumberRequest(),
+		resp: http_model.NewGetSpecialDataNumberResponse(),
+		ctx:  ctx,
+	}
+}
+
+type GetSpecialDataNumberHandler struct {
+	req  *http_model.GetSpecialDataNumberRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *GetSpecialDataNumberHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *GetSpecialDataNumberHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *GetSpecialDataNumberHandler) getResponse() interface{} {
+	return h.resp
+}
+
+func (h *GetSpecialDataNumberHandler) run() {
+	data := http_model.GetSpecialDataNumberRequest{}
+	data = *h.req
+	res, err := service.Number.GetSpecialDataNumber(h.ctx, data)
+	if err != nil {
+		logrus.Errorf("[GetSpecialDataNumberHandler] call GetSpecialDataNumber err:%+v\n", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+		log.Info("GetSpecialDataNumber fail,req:%+v", h.req)
+		return
+	}
+	h.resp.Message = ""
+	h.resp.Data = res
+}
+
+func (h *GetSpecialDataNumberHandler) checkParam() error {
+	return nil
+}

+ 58 - 58
handler/GetSpecialFinishData.go

@@ -1,58 +1,58 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	log "github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-)
-
-func WrapGetSpecialFinishDataHandler(ctx *gin.Context) {
-	handler := newGetSpecialFinishDataHandler(ctx)
-	BaseRun(handler)
-}
-
-func newGetSpecialFinishDataHandler(ctx *gin.Context) *GetSpecialFinishDataHandler {
-	return &GetSpecialFinishDataHandler{
-		req:  http_model.NewGetSpecialFinishDataRequest(),
-		resp: http_model.NewGetSpecialFinishDataResponse(),
-		ctx:  ctx,
-	}
-}
-
-type GetSpecialFinishDataHandler struct {
-	req  *http_model.GetSpecialFinishDataRequest
-	resp *http_model.CommonResponse
-	ctx  *gin.Context
-}
-
-func (h *GetSpecialFinishDataHandler) getRequest() interface{} {
-	return h.req
-}
-func (h *GetSpecialFinishDataHandler) getContext() *gin.Context {
-	return h.ctx
-}
-func (h *GetSpecialFinishDataHandler) getResponse() interface{} {
-	return h.resp
-}
-
-func (h *GetSpecialFinishDataHandler) run() {
-	data := http_model.GetSpecialFinishDataRequest{}
-	data = *h.req
-	res, err := service.Number.GetSpecialFinishData(h.ctx, data)
-	if err != nil {
-		logrus.Errorf("[GetSpecialFinishDataHandler] call GetSpecialFinishData err:%+v\n", err)
-		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
-		log.Info("GetSpecialFinishData fail,req:%+v", h.req)
-		return
-	}
-	h.resp.Message = ""
-	h.resp.Data = res
-}
-
-func (h *GetSpecialFinishDataHandler) checkParam() error {
-	return nil
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	log "github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+)
+
+func WrapGetSpecialFinishDataHandler(ctx *gin.Context) {
+	handler := newGetSpecialFinishDataHandler(ctx)
+	BaseRun(handler)
+}
+
+func newGetSpecialFinishDataHandler(ctx *gin.Context) *GetSpecialFinishDataHandler {
+	return &GetSpecialFinishDataHandler{
+		req:  http_model.NewGetSpecialFinishDataRequest(),
+		resp: http_model.NewGetSpecialFinishDataResponse(),
+		ctx:  ctx,
+	}
+}
+
+type GetSpecialFinishDataHandler struct {
+	req  *http_model.GetSpecialFinishDataRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *GetSpecialFinishDataHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *GetSpecialFinishDataHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *GetSpecialFinishDataHandler) getResponse() interface{} {
+	return h.resp
+}
+
+func (h *GetSpecialFinishDataHandler) run() {
+	data := http_model.GetSpecialFinishDataRequest{}
+	data = *h.req
+	res, err := service.Number.GetSpecialFinishData(h.ctx, data)
+	if err != nil {
+		logrus.Errorf("[GetSpecialFinishDataHandler] call GetSpecialFinishData err:%+v\n", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+		log.Info("GetSpecialFinishData fail,req:%+v", h.req)
+		return
+	}
+	h.resp.Message = ""
+	h.resp.Data = res
+}
+
+func (h *GetSpecialFinishDataHandler) checkParam() error {
+	return nil
+}

+ 58 - 58
handler/GetSpecialInviteNumber.go

@@ -1,58 +1,58 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	log "github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-)
-
-func WrapGetSpecialInviteNumberHandler(ctx *gin.Context) {
-	handler := newGetSpecialInviteNumberHandler(ctx)
-	BaseRun(handler)
-}
-
-func newGetSpecialInviteNumberHandler(ctx *gin.Context) *GetSpecialInviteNumberHandler {
-	return &GetSpecialInviteNumberHandler{
-		req:  http_model.NewGetSpecialInviteNumberRequest(),
-		resp: http_model.NewGetSpecialInviteNumberResponse(),
-		ctx:  ctx,
-	}
-}
-
-type GetSpecialInviteNumberHandler struct {
-	req  *http_model.GetSpecialInviteNumberRequest
-	resp *http_model.CommonResponse
-	ctx  *gin.Context
-}
-
-func (h *GetSpecialInviteNumberHandler) getRequest() interface{} {
-	return h.req
-}
-func (h *GetSpecialInviteNumberHandler) getContext() *gin.Context {
-	return h.ctx
-}
-func (h *GetSpecialInviteNumberHandler) getResponse() interface{} {
-	return h.resp
-}
-
-func (h *GetSpecialInviteNumberHandler) run() {
-	data := http_model.GetSpecialInviteNumberRequest{}
-	data = *h.req
-	res, err := service.Number.GetSpecialInviteNumber(h.ctx, data)
-	if err != nil {
-		logrus.Errorf("[GetSpecialInviteNumberHandler] call GetSpecialInviteNumber err:%+v\n", err)
-		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
-		log.Info("GetSpecialInviteNumber fail,req:%+v", h.req)
-		return
-	}
-	h.resp.Message = ""
-	h.resp.Data = res
-}
-
-func (h *GetSpecialInviteNumberHandler) checkParam() error {
-	return nil
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	log "github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+)
+
+func WrapGetSpecialInviteNumberHandler(ctx *gin.Context) {
+	handler := newGetSpecialInviteNumberHandler(ctx)
+	BaseRun(handler)
+}
+
+func newGetSpecialInviteNumberHandler(ctx *gin.Context) *GetSpecialInviteNumberHandler {
+	return &GetSpecialInviteNumberHandler{
+		req:  http_model.NewGetSpecialInviteNumberRequest(),
+		resp: http_model.NewGetSpecialInviteNumberResponse(),
+		ctx:  ctx,
+	}
+}
+
+type GetSpecialInviteNumberHandler struct {
+	req  *http_model.GetSpecialInviteNumberRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *GetSpecialInviteNumberHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *GetSpecialInviteNumberHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *GetSpecialInviteNumberHandler) getResponse() interface{} {
+	return h.resp
+}
+
+func (h *GetSpecialInviteNumberHandler) run() {
+	data := http_model.GetSpecialInviteNumberRequest{}
+	data = *h.req
+	res, err := service.Number.GetSpecialInviteNumber(h.ctx, data)
+	if err != nil {
+		logrus.Errorf("[GetSpecialInviteNumberHandler] call GetSpecialInviteNumber err:%+v\n", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+		log.Info("GetSpecialInviteNumber fail,req:%+v", h.req)
+		return
+	}
+	h.resp.Message = ""
+	h.resp.Data = res
+}
+
+func (h *GetSpecialInviteNumberHandler) checkParam() error {
+	return nil
+}

+ 58 - 58
handler/GetSpecialLinkNumber.go

@@ -1,58 +1,58 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	log "github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-)
-
-func WrapGetSpecialLinkNumberHandler(ctx *gin.Context) {
-	handler := newGetSpecialLinkNumberHandler(ctx)
-	BaseRun(handler)
-}
-
-func newGetSpecialLinkNumberHandler(ctx *gin.Context) *GetSpecialLinkNumberHandler {
-	return &GetSpecialLinkNumberHandler{
-		req:  http_model.NewGetSpecialLinkNumberRequest(),
-		resp: http_model.NewGetSpecialLinkNumberResponse(),
-		ctx:  ctx,
-	}
-}
-
-type GetSpecialLinkNumberHandler struct {
-	req  *http_model.GetSpecialLinkNumberRequest
-	resp *http_model.CommonResponse
-	ctx  *gin.Context
-}
-
-func (h *GetSpecialLinkNumberHandler) getRequest() interface{} {
-	return h.req
-}
-func (h *GetSpecialLinkNumberHandler) getContext() *gin.Context {
-	return h.ctx
-}
-func (h *GetSpecialLinkNumberHandler) getResponse() interface{} {
-	return h.resp
-}
-
-func (h *GetSpecialLinkNumberHandler) run() {
-	data := http_model.GetSpecialLinkNumberRequest{}
-	data = *h.req
-	res, err := service.Number.GetSpecialLinkNumber(h.ctx, data)
-	if err != nil {
-		logrus.Errorf("[GetSpecialLinkNumberHandler] call GetSpecialLinkNumber err:%+v\n", err)
-		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
-		log.Info("GetSpecialLinkNumber fail,req:%+v", h.req)
-		return
-	}
-	h.resp.Message = ""
-	h.resp.Data = res
-}
-
-func (h *GetSpecialLinkNumberHandler) checkParam() error {
-	return nil
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	log "github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+)
+
+func WrapGetSpecialLinkNumberHandler(ctx *gin.Context) {
+	handler := newGetSpecialLinkNumberHandler(ctx)
+	BaseRun(handler)
+}
+
+func newGetSpecialLinkNumberHandler(ctx *gin.Context) *GetSpecialLinkNumberHandler {
+	return &GetSpecialLinkNumberHandler{
+		req:  http_model.NewGetSpecialLinkNumberRequest(),
+		resp: http_model.NewGetSpecialLinkNumberResponse(),
+		ctx:  ctx,
+	}
+}
+
+type GetSpecialLinkNumberHandler struct {
+	req  *http_model.GetSpecialLinkNumberRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *GetSpecialLinkNumberHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *GetSpecialLinkNumberHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *GetSpecialLinkNumberHandler) getResponse() interface{} {
+	return h.resp
+}
+
+func (h *GetSpecialLinkNumberHandler) run() {
+	data := http_model.GetSpecialLinkNumberRequest{}
+	data = *h.req
+	res, err := service.Number.GetSpecialLinkNumber(h.ctx, data)
+	if err != nil {
+		logrus.Errorf("[GetSpecialLinkNumberHandler] call GetSpecialLinkNumber err:%+v\n", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+		log.Info("GetSpecialLinkNumber fail,req:%+v", h.req)
+		return
+	}
+	h.resp.Message = ""
+	h.resp.Data = res
+}
+
+func (h *GetSpecialLinkNumberHandler) checkParam() error {
+	return nil
+}

+ 58 - 58
handler/GetSpecialReviewNumber.go

@@ -1,58 +1,58 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	log "github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-)
-
-func WrapGetSpecialReviewNumberHandler(ctx *gin.Context) {
-	handler := newGetSpecialReviewNumberHandler(ctx)
-	BaseRun(handler)
-}
-
-func newGetSpecialReviewNumberHandler(ctx *gin.Context) *GetSpecialReviewNumberHandler {
-	return &GetSpecialReviewNumberHandler{
-		req:  http_model.NewGetSpecialReviewNumberRequest(),
-		resp: http_model.NewGetSpecialReviewNumberResponse(),
-		ctx:  ctx,
-	}
-}
-
-type GetSpecialReviewNumberHandler struct {
-	req  *http_model.GetSpecialReviewNumberRequest
-	resp *http_model.CommonResponse
-	ctx  *gin.Context
-}
-
-func (h *GetSpecialReviewNumberHandler) getRequest() interface{} {
-	return h.req
-}
-func (h *GetSpecialReviewNumberHandler) getContext() *gin.Context {
-	return h.ctx
-}
-func (h *GetSpecialReviewNumberHandler) getResponse() interface{} {
-	return h.resp
-}
-
-func (h *GetSpecialReviewNumberHandler) run() {
-	data := http_model.GetSpecialReviewNumberRequest{}
-	data = *h.req
-	res, err := service.Number.GetSpecialReviewNumber(h.ctx, data)
-	if err != nil {
-		logrus.Errorf("[GetSpecialReviewNumberHandler] call GetSpecialReviewNumber err:%+v\n", err)
-		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
-		log.Info("GetSpecialReviewNumber fail,req:%+v", h.req)
-		return
-	}
-	h.resp.Message = ""
-	h.resp.Data = res
-}
-
-func (h *GetSpecialReviewNumberHandler) checkParam() error {
-	return nil
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	log "github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+)
+
+func WrapGetSpecialReviewNumberHandler(ctx *gin.Context) {
+	handler := newGetSpecialReviewNumberHandler(ctx)
+	BaseRun(handler)
+}
+
+func newGetSpecialReviewNumberHandler(ctx *gin.Context) *GetSpecialReviewNumberHandler {
+	return &GetSpecialReviewNumberHandler{
+		req:  http_model.NewGetSpecialReviewNumberRequest(),
+		resp: http_model.NewGetSpecialReviewNumberResponse(),
+		ctx:  ctx,
+	}
+}
+
+type GetSpecialReviewNumberHandler struct {
+	req  *http_model.GetSpecialReviewNumberRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *GetSpecialReviewNumberHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *GetSpecialReviewNumberHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *GetSpecialReviewNumberHandler) getResponse() interface{} {
+	return h.resp
+}
+
+func (h *GetSpecialReviewNumberHandler) run() {
+	data := http_model.GetSpecialReviewNumberRequest{}
+	data = *h.req
+	res, err := service.Number.GetSpecialReviewNumber(h.ctx, data)
+	if err != nil {
+		logrus.Errorf("[GetSpecialReviewNumberHandler] call GetSpecialReviewNumber err:%+v\n", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+		log.Info("GetSpecialReviewNumber fail,req:%+v", h.req)
+		return
+	}
+	h.resp.Message = ""
+	h.resp.Data = res
+}
+
+func (h *GetSpecialReviewNumberHandler) checkParam() error {
+	return nil
+}

+ 61 - 61
handler/PassSecTaskCoop.go

@@ -1,61 +1,61 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-)
-
-func WrapPassSecTaskCoopHandler(ctx *gin.Context) {
-	handler := newPassSecTaskCoopHandler(ctx)
-	BaseRun(handler)
-}
-
-type PassSecTaskCoop struct {
-	ctx  *gin.Context
-	req  *http_model.PassSecTaskCoopRequest
-	resp *http_model.CommonResponse
-}
-
-func (c PassSecTaskCoop) getContext() *gin.Context {
-	return c.ctx
-}
-
-func (c PassSecTaskCoop) getResponse() interface{} {
-	return c.resp
-}
-
-func (c PassSecTaskCoop) getRequest() interface{} {
-	return c.req
-}
-
-func (c PassSecTaskCoop) run() {
-	data := http_model.PassSecTaskCoopRequest{}
-	data = *c.req
-	//auth := middleware.GetSessionAuth(c.ctx)
-	//enterpriseID := auth.EnterpriseID
-	res, err := service.SelectionTask.PassCoop(c.ctx, data)
-	if err != nil {
-		logrus.Errorf("[PassSecTaskCoop] call PassSecTaskCoop err:%+v\n", err)
-		util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, "")
-		logrus.Info("PassSecTaskCoop fail,req:%+v", c.req)
-		return
-	}
-	c.resp.Message = "成功合作选品任务"
-	c.resp.Data = res
-}
-
-func (c PassSecTaskCoop) checkParam() error {
-	return nil
-}
-
-func newPassSecTaskCoopHandler(ctx *gin.Context) *PassSecTaskCoop {
-	return &PassSecTaskCoop{
-		ctx:  ctx,
-		req:  http_model.NewPassSecTaskCoopRequest(),
-		resp: http_model.NewPassSecTaskCoopResponse(),
-	}
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+)
+
+func WrapPassSecTaskCoopHandler(ctx *gin.Context) {
+	handler := newPassSecTaskCoopHandler(ctx)
+	BaseRun(handler)
+}
+
+type PassSecTaskCoop struct {
+	ctx  *gin.Context
+	req  *http_model.PassSecTaskCoopRequest
+	resp *http_model.CommonResponse
+}
+
+func (c PassSecTaskCoop) getContext() *gin.Context {
+	return c.ctx
+}
+
+func (c PassSecTaskCoop) getResponse() interface{} {
+	return c.resp
+}
+
+func (c PassSecTaskCoop) getRequest() interface{} {
+	return c.req
+}
+
+func (c PassSecTaskCoop) run() {
+	data := http_model.PassSecTaskCoopRequest{}
+	data = *c.req
+	//auth := middleware.GetSessionAuth(c.ctx)
+	//enterpriseID := auth.EnterpriseID
+	res, err := service.SelectionTask.PassCoop(c.ctx, data)
+	if err != nil {
+		logrus.Errorf("[PassSecTaskCoop] call PassSecTaskCoop err:%+v\n", err)
+		util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, "")
+		logrus.Info("PassSecTaskCoop fail,req:%+v", c.req)
+		return
+	}
+	c.resp.Message = "成功合作选品任务"
+	c.resp.Data = res
+}
+
+func (c PassSecTaskCoop) checkParam() error {
+	return nil
+}
+
+func newPassSecTaskCoopHandler(ctx *gin.Context) *PassSecTaskCoop {
+	return &PassSecTaskCoop{
+		ctx:  ctx,
+		req:  http_model.NewPassSecTaskCoopRequest(),
+		resp: http_model.NewPassSecTaskCoopResponse(),
+	}
+}

+ 61 - 61
handler/RefuseSecTaskCoop.go

@@ -1,61 +1,61 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-)
-
-func WrapRefuseSecTaskCoopHandler(ctx *gin.Context) {
-	handler := newRefuseSecTaskCoopHandler(ctx)
-	BaseRun(handler)
-}
-
-type RefuseSecTaskCoop struct {
-	ctx  *gin.Context
-	req  *http_model.RefuseSecTaskCoopRequest
-	resp *http_model.CommonResponse
-}
-
-func (c RefuseSecTaskCoop) getContext() *gin.Context {
-	return c.ctx
-}
-
-func (c RefuseSecTaskCoop) getResponse() interface{} {
-	return c.resp
-}
-
-func (c RefuseSecTaskCoop) getRequest() interface{} {
-	return c.req
-}
-
-func (c RefuseSecTaskCoop) run() {
-	data := http_model.RefuseSecTaskCoopRequest{}
-	data = *c.req
-	//auth := middleware.GetSessionAuth(c.ctx)
-	//enterpriseID := auth.EnterpriseID
-	res, err := service.SelectionTask.RefuseCoop(c.ctx, data)
-	if err != nil {
-		logrus.Errorf("[RefuseSecTaskCoop] call RefuseSecTaskCoop err:%+v\n", err)
-		util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, "")
-		logrus.Info("RefuseSecTaskCoop fail,req:%+v", c.req)
-		return
-	}
-	c.resp.Message = "成功拒绝选品任务"
-	c.resp.Data = res
-}
-
-func (c RefuseSecTaskCoop) checkParam() error {
-	return nil
-}
-
-func newRefuseSecTaskCoopHandler(ctx *gin.Context) *RefuseSecTaskCoop {
-	return &RefuseSecTaskCoop{
-		ctx:  ctx,
-		req:  http_model.NewRefuseSecTaskCoopRequest(),
-		resp: http_model.NewRefuseSecTaskCoopResponse(),
-	}
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+)
+
+func WrapRefuseSecTaskCoopHandler(ctx *gin.Context) {
+	handler := newRefuseSecTaskCoopHandler(ctx)
+	BaseRun(handler)
+}
+
+type RefuseSecTaskCoop struct {
+	ctx  *gin.Context
+	req  *http_model.RefuseSecTaskCoopRequest
+	resp *http_model.CommonResponse
+}
+
+func (c RefuseSecTaskCoop) getContext() *gin.Context {
+	return c.ctx
+}
+
+func (c RefuseSecTaskCoop) getResponse() interface{} {
+	return c.resp
+}
+
+func (c RefuseSecTaskCoop) getRequest() interface{} {
+	return c.req
+}
+
+func (c RefuseSecTaskCoop) run() {
+	data := http_model.RefuseSecTaskCoopRequest{}
+	data = *c.req
+	//auth := middleware.GetSessionAuth(c.ctx)
+	//enterpriseID := auth.EnterpriseID
+	res, err := service.SelectionTask.RefuseCoop(c.ctx, data)
+	if err != nil {
+		logrus.Errorf("[RefuseSecTaskCoop] call RefuseSecTaskCoop err:%+v\n", err)
+		util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, "")
+		logrus.Info("RefuseSecTaskCoop fail,req:%+v", c.req)
+		return
+	}
+	c.resp.Message = "成功拒绝选品任务"
+	c.resp.Data = res
+}
+
+func (c RefuseSecTaskCoop) checkParam() error {
+	return nil
+}
+
+func newRefuseSecTaskCoopHandler(ctx *gin.Context) *RefuseSecTaskCoop {
+	return &RefuseSecTaskCoop{
+		ctx:  ctx,
+		req:  http_model.NewRefuseSecTaskCoopRequest(),
+		resp: http_model.NewRefuseSecTaskCoopResponse(),
+	}
+}

+ 61 - 61
handler/SettleSecTask.go

@@ -1,61 +1,61 @@
-package handler
-
-import (
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-)
-
-func WrapSettleSecTaskHandler(ctx *gin.Context) {
-	handler := newSettleSecTaskHandler(ctx)
-	BaseRun(handler)
-}
-
-type SettleSecTask struct {
-	ctx  *gin.Context
-	req  *http_model.SettleSecTaskRequest
-	resp *http_model.CommonResponse
-}
-
-func (c SettleSecTask) getContext() *gin.Context {
-	return c.ctx
-}
-
-func (c SettleSecTask) getResponse() interface{} {
-	return c.resp
-}
-
-func (c SettleSecTask) getRequest() interface{} {
-	return c.req
-}
-
-func (c SettleSecTask) run() {
-	//enterpriseID := middleware.GetSessionAuth(c.ctx).EnterpriseID
-	data := http_model.SettleSecTaskRequest{}
-	data = *c.req
-	res, err := service.SelectionTask.Settle(c.ctx, data.EnterpriseId, data)
-	if err != nil {
-		logrus.Errorf("[SettleSecTask] call SettleSecTask err:%+v\n", err)
-		util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, "")
-		logrus.Info("SettleSecTask fail,req:%+v", c.req)
-		return
-	}
-	c.resp.Message = "成功添加发货信息"
-	c.resp.Data = res
-}
-
-func (c SettleSecTask) checkParam() error {
-	return nil
-}
-
-func newSettleSecTaskHandler(ctx *gin.Context) *SettleSecTask {
-	return &SettleSecTask{
-		ctx:  ctx,
-		req:  http_model.NewSettleSecTaskRequest(),
-		resp: http_model.NewSettleSecTaskResponse(),
-	}
-}
+package handler
+
+import (
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+)
+
+func WrapSettleSecTaskHandler(ctx *gin.Context) {
+	handler := newSettleSecTaskHandler(ctx)
+	BaseRun(handler)
+}
+
+type SettleSecTask struct {
+	ctx  *gin.Context
+	req  *http_model.SettleSecTaskRequest
+	resp *http_model.CommonResponse
+}
+
+func (c SettleSecTask) getContext() *gin.Context {
+	return c.ctx
+}
+
+func (c SettleSecTask) getResponse() interface{} {
+	return c.resp
+}
+
+func (c SettleSecTask) getRequest() interface{} {
+	return c.req
+}
+
+func (c SettleSecTask) run() {
+	//enterpriseID := middleware.GetSessionAuth(c.ctx).EnterpriseID
+	data := http_model.SettleSecTaskRequest{}
+	data = *c.req
+	res, err := service.SelectionTask.Settle(c.ctx, data.EnterpriseId, data)
+	if err != nil {
+		logrus.Errorf("[SettleSecTask] call SettleSecTask err:%+v\n", err)
+		util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, "")
+		logrus.Info("SettleSecTask fail,req:%+v", c.req)
+		return
+	}
+	c.resp.Message = "成功添加发货信息"
+	c.resp.Data = res
+}
+
+func (c SettleSecTask) checkParam() error {
+	return nil
+}
+
+func newSettleSecTaskHandler(ctx *gin.Context) *SettleSecTask {
+	return &SettleSecTask{
+		ctx:  ctx,
+		req:  http_model.NewSettleSecTaskRequest(),
+		resp: http_model.NewSettleSecTaskResponse(),
+	}
+}

+ 74 - 74
handler/SpecialTaskDataList.go

@@ -1,74 +1,74 @@
-package handler
-
-import (
-	"errors"
-	"fmt"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/pack"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-
-	"github.com/cstockton/go-conv"
-
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-)
-
-func WrapSpecialTaskDataListHandler(ctx *gin.Context) {
-	handler := newSpecialTaskDataListHandler(ctx)
-	BaseRun(handler)
-}
-
-func newSpecialTaskDataListHandler(ctx *gin.Context) *SpecialTaskDataListHandler {
-	return &SpecialTaskDataListHandler{
-		req:  http_model.NewSpecialTaskDataListRequest(),
-		resp: http_model.NewSpecialTaskDataListResponse(),
-		ctx:  ctx,
-	}
-}
-
-type SpecialTaskDataListHandler struct {
-	req  *http_model.SpecialTaskDataListRequest
-	resp *http_model.CommonResponse
-	ctx  *gin.Context
-}
-
-func (h *SpecialTaskDataListHandler) getRequest() interface{} {
-	return h.req
-}
-
-func (h *SpecialTaskDataListHandler) getContext() *gin.Context {
-	return h.ctx
-}
-
-func (h *SpecialTaskDataListHandler) getResponse() interface{} {
-	return h.resp
-}
-
-func (h *SpecialTaskDataListHandler) run() {
-	conditions := pack.HttpSpecialTaskDataListRequestToCondition(h.req)
-	data, err := service.SpecialTask.GetSpecialTaskDataList(h.ctx, h.req.ProjectId, h.req.PageSize, h.req.PageNum, conditions)
-	if err != nil {
-		logrus.WithContext(h.ctx).Errorf("[TaskLogisticsListHandler] error GetProjectTaskList, err:%+v", err)
-		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, consts.DefaultToast)
-		return
-	}
-	h.resp.Data = data
-}
-
-func (h *SpecialTaskDataListHandler) checkParam() error {
-	var errs []error
-	if h.req.PageNum < 0 || h.req.PageSize <= 0 {
-		errs = append(errs, errors.New("page param error"))
-	}
-	h.req.PageNum--
-	h.req.DataStatus = util.IsNull(h.req.DataStatus)
-	if _, err := conv.Int64(h.req.DataStatus); err != nil {
-		errs = append(errs, err)
-	}
-	if len(errs) != 0 {
-		return fmt.Errorf("check param errs:%+v", errs)
-	}
-	return nil
-}
+package handler
+
+import (
+	"errors"
+	"fmt"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/pack"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+
+	"github.com/cstockton/go-conv"
+
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+)
+
+func WrapSpecialTaskDataListHandler(ctx *gin.Context) {
+	handler := newSpecialTaskDataListHandler(ctx)
+	BaseRun(handler)
+}
+
+func newSpecialTaskDataListHandler(ctx *gin.Context) *SpecialTaskDataListHandler {
+	return &SpecialTaskDataListHandler{
+		req:  http_model.NewSpecialTaskDataListRequest(),
+		resp: http_model.NewSpecialTaskDataListResponse(),
+		ctx:  ctx,
+	}
+}
+
+type SpecialTaskDataListHandler struct {
+	req  *http_model.SpecialTaskDataListRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *SpecialTaskDataListHandler) getRequest() interface{} {
+	return h.req
+}
+
+func (h *SpecialTaskDataListHandler) getContext() *gin.Context {
+	return h.ctx
+}
+
+func (h *SpecialTaskDataListHandler) getResponse() interface{} {
+	return h.resp
+}
+
+func (h *SpecialTaskDataListHandler) run() {
+	conditions := pack.HttpSpecialTaskDataListRequestToCondition(h.req)
+	data, err := service.SpecialTask.GetSpecialTaskDataList(h.ctx, h.req.ProjectId, h.req.PageSize, h.req.PageNum, conditions)
+	if err != nil {
+		logrus.WithContext(h.ctx).Errorf("[TaskLogisticsListHandler] error GetProjectTaskList, err:%+v", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, consts.DefaultToast)
+		return
+	}
+	h.resp.Data = data
+}
+
+func (h *SpecialTaskDataListHandler) checkParam() error {
+	var errs []error
+	if h.req.PageNum < 0 || h.req.PageSize <= 0 {
+		errs = append(errs, errors.New("page param error"))
+	}
+	h.req.PageNum--
+	h.req.DataStatus = util.IsNull(h.req.DataStatus)
+	if _, err := conv.Int64(h.req.DataStatus); err != nil {
+		errs = append(errs, err)
+	}
+	if len(errs) != 0 {
+		return fmt.Errorf("check param errs:%+v", errs)
+	}
+	return nil
+}

+ 64 - 64
handler/SpecialTaskFinishDataList.go

@@ -1,64 +1,64 @@
-package handler
-
-import (
-	"errors"
-	"fmt"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/pack"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-)
-
-func WrapSpecialTaskFinishDataListHandler(ctx *gin.Context) {
-	handler := newSpecialTaskFinishDataListHandler(ctx)
-	BaseRun(handler)
-}
-
-func newSpecialTaskFinishDataListHandler(ctx *gin.Context) *SpecialTaskFinishDataListHandler {
-	return &SpecialTaskFinishDataListHandler{
-		req:  http_model.NewSpecialTaskFinishDataListRequest(),
-		resp: http_model.NewSpecialTaskFinishDataListResponse(),
-		ctx:  ctx,
-	}
-}
-
-type SpecialTaskFinishDataListHandler struct {
-	req  *http_model.SpecialTaskFinishDataListRequest
-	resp *http_model.CommonResponse
-	ctx  *gin.Context
-}
-
-func (h *SpecialTaskFinishDataListHandler) getRequest() interface{} {
-	return h.req
-}
-func (h *SpecialTaskFinishDataListHandler) getContext() *gin.Context {
-	return h.ctx
-}
-func (h *SpecialTaskFinishDataListHandler) getResponse() interface{} {
-	return h.resp
-}
-func (h *SpecialTaskFinishDataListHandler) run() {
-	conditions := pack.HttpSpecialTaskFinishDataListRequestToCondition(h.req)
-	data, err := service.SpecialTask.GetSpecialTaskFinishDataList(h.ctx, h.req.ProjectId, h.req.PageSize, h.req.PageNum, conditions)
-	if err != nil {
-		logrus.WithContext(h.ctx).Errorf("[TaskLogisticsListHandler] error GetProjectTaskList, err:%+v", err)
-		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, consts.DefaultToast)
-		return
-	}
-	h.resp.Data = data
-}
-func (h *SpecialTaskFinishDataListHandler) checkParam() error {
-	var errs []error
-	if h.req.PageNum < 0 || h.req.PageSize <= 0 {
-		errs = append(errs, errors.New("page param error"))
-	}
-	h.req.PageNum--
-	if len(errs) != 0 {
-		return fmt.Errorf("check param errs:%+v", errs)
-	}
-	return nil
-}
+package handler
+
+import (
+	"errors"
+	"fmt"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/pack"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+)
+
+func WrapSpecialTaskFinishDataListHandler(ctx *gin.Context) {
+	handler := newSpecialTaskFinishDataListHandler(ctx)
+	BaseRun(handler)
+}
+
+func newSpecialTaskFinishDataListHandler(ctx *gin.Context) *SpecialTaskFinishDataListHandler {
+	return &SpecialTaskFinishDataListHandler{
+		req:  http_model.NewSpecialTaskFinishDataListRequest(),
+		resp: http_model.NewSpecialTaskFinishDataListResponse(),
+		ctx:  ctx,
+	}
+}
+
+type SpecialTaskFinishDataListHandler struct {
+	req  *http_model.SpecialTaskFinishDataListRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *SpecialTaskFinishDataListHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *SpecialTaskFinishDataListHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *SpecialTaskFinishDataListHandler) getResponse() interface{} {
+	return h.resp
+}
+func (h *SpecialTaskFinishDataListHandler) run() {
+	conditions := pack.HttpSpecialTaskFinishDataListRequestToCondition(h.req)
+	data, err := service.SpecialTask.GetSpecialTaskFinishDataList(h.ctx, h.req.ProjectId, h.req.PageSize, h.req.PageNum, conditions)
+	if err != nil {
+		logrus.WithContext(h.ctx).Errorf("[TaskLogisticsListHandler] error GetProjectTaskList, err:%+v", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, consts.DefaultToast)
+		return
+	}
+	h.resp.Data = data
+}
+func (h *SpecialTaskFinishDataListHandler) checkParam() error {
+	var errs []error
+	if h.req.PageNum < 0 || h.req.PageSize <= 0 {
+		errs = append(errs, errors.New("page param error"))
+	}
+	h.req.PageNum--
+	if len(errs) != 0 {
+		return fmt.Errorf("check param errs:%+v", errs)
+	}
+	return nil
+}

+ 77 - 77
handler/SpecialTaskInviteList.go

@@ -1,77 +1,77 @@
-package handler
-
-import (
-	"errors"
-	"fmt"
-	"github.com/cstockton/go-conv"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/pack"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-)
-
-func WrapSpecialTaskInviteListHandler(ctx *gin.Context) {
-	handler := newSpecialTaskInviteListHandler(ctx)
-	BaseRun(handler)
-}
-
-func newSpecialTaskInviteListHandler(ctx *gin.Context) *SpecialTaskInviteListHandler {
-	return &SpecialTaskInviteListHandler{
-		req:  http_model.NewSpecialTaskInviteListRequest(),
-		resp: http_model.NewSpecialTaskInviteListResponse(),
-		ctx:  ctx,
-	}
-}
-
-type SpecialTaskInviteListHandler struct {
-	req  *http_model.SpecialTaskInviteListRequest
-	resp *http_model.CommonResponse
-	ctx  *gin.Context
-}
-
-func (h *SpecialTaskInviteListHandler) getRequest() interface{} {
-	return h.req
-}
-
-func (h *SpecialTaskInviteListHandler) getContext() *gin.Context {
-	return h.ctx
-}
-
-func (h *SpecialTaskInviteListHandler) getResponse() interface{} {
-	return h.resp
-}
-
-func (h *SpecialTaskInviteListHandler) run() {
-	conditions := pack.HttpSpecialTaskInviteListRequestToCondition(h.req)
-	data, err := service.SpecialTask.GetSpecialTaskInviteList(h.ctx, h.req.ProjectId, h.req.PageSize, h.req.PageNum, conditions)
-	if err != nil {
-		logrus.WithContext(h.ctx).Errorf("[TaskLogisticsListHandler] error GetProjectTaskList, err:%+v", err)
-		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, consts.DefaultToast)
-		return
-	}
-	h.resp.Data = data
-}
-
-func (h *SpecialTaskInviteListHandler) checkParam() error {
-	var errs []error
-	if h.req.PageNum < 0 || h.req.PageSize <= 0 {
-		errs = append(errs, errors.New("page param error"))
-	}
-	h.req.PageNum--
-	h.req.ProjectId = util.IsNull(h.req.ProjectId)
-	if _, err := conv.Int64(h.req.ProjectId); err != nil {
-		errs = append(errs, err)
-	}
-	h.req.TaskStatus = util.IsNull(h.req.TaskStatus)
-	if _, err := conv.Int64(h.req.TaskStatus); err != nil {
-		errs = append(errs, err)
-	}
-	if len(errs) != 0 {
-		return fmt.Errorf("check param errs:%+v", errs)
-	}
-	return nil
-}
+package handler
+
+import (
+	"errors"
+	"fmt"
+	"github.com/cstockton/go-conv"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/pack"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+)
+
+func WrapSpecialTaskInviteListHandler(ctx *gin.Context) {
+	handler := newSpecialTaskInviteListHandler(ctx)
+	BaseRun(handler)
+}
+
+func newSpecialTaskInviteListHandler(ctx *gin.Context) *SpecialTaskInviteListHandler {
+	return &SpecialTaskInviteListHandler{
+		req:  http_model.NewSpecialTaskInviteListRequest(),
+		resp: http_model.NewSpecialTaskInviteListResponse(),
+		ctx:  ctx,
+	}
+}
+
+type SpecialTaskInviteListHandler struct {
+	req  *http_model.SpecialTaskInviteListRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *SpecialTaskInviteListHandler) getRequest() interface{} {
+	return h.req
+}
+
+func (h *SpecialTaskInviteListHandler) getContext() *gin.Context {
+	return h.ctx
+}
+
+func (h *SpecialTaskInviteListHandler) getResponse() interface{} {
+	return h.resp
+}
+
+func (h *SpecialTaskInviteListHandler) run() {
+	conditions := pack.HttpSpecialTaskInviteListRequestToCondition(h.req)
+	data, err := service.SpecialTask.GetSpecialTaskInviteList(h.ctx, h.req.ProjectId, h.req.PageSize, h.req.PageNum, conditions)
+	if err != nil {
+		logrus.WithContext(h.ctx).Errorf("[TaskLogisticsListHandler] error GetProjectTaskList, err:%+v", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, consts.DefaultToast)
+		return
+	}
+	h.resp.Data = data
+}
+
+func (h *SpecialTaskInviteListHandler) checkParam() error {
+	var errs []error
+	if h.req.PageNum < 0 || h.req.PageSize <= 0 {
+		errs = append(errs, errors.New("page param error"))
+	}
+	h.req.PageNum--
+	h.req.ProjectId = util.IsNull(h.req.ProjectId)
+	if _, err := conv.Int64(h.req.ProjectId); err != nil {
+		errs = append(errs, err)
+	}
+	h.req.TaskStatus = util.IsNull(h.req.TaskStatus)
+	if _, err := conv.Int64(h.req.TaskStatus); err != nil {
+		errs = append(errs, err)
+	}
+	if len(errs) != 0 {
+		return fmt.Errorf("check param errs:%+v", errs)
+	}
+	return nil
+}

+ 69 - 69
handler/SpecialTaskLinkList.go

@@ -1,69 +1,69 @@
-package handler
-
-import (
-	"errors"
-	"fmt"
-	"github.com/cstockton/go-conv"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/pack"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-)
-
-func WrapSpecialTaskLinkListHandler(ctx *gin.Context) {
-	handler := newSpecialTaskLinkListHandler(ctx)
-	BaseRun(handler)
-}
-
-func newSpecialTaskLinkListHandler(ctx *gin.Context) *SpecialTaskLinkListHandler {
-	return &SpecialTaskLinkListHandler{
-		req:  http_model.NewSpecialTaskLinkListRequest(),
-		resp: http_model.NewSpecialTaskLinkListResponse(),
-		ctx:  ctx,
-	}
-}
-
-type SpecialTaskLinkListHandler struct {
-	req  *http_model.SpecialTaskLinkListRequest
-	resp *http_model.CommonResponse
-	ctx  *gin.Context
-}
-
-func (h *SpecialTaskLinkListHandler) getRequest() interface{} {
-	return h.req
-}
-func (h *SpecialTaskLinkListHandler) getContext() *gin.Context {
-	return h.ctx
-}
-func (h *SpecialTaskLinkListHandler) getResponse() interface{} {
-	return h.resp
-}
-func (h *SpecialTaskLinkListHandler) run() {
-	conditions := pack.HttpSpecialTaskLinkListRequestToCondition(h.req)
-	data, err := service.SpecialTask.GetSpecialTaskLinkList(h.ctx, h.req.ProjectId, h.req.PageSize, h.req.PageNum, conditions)
-	if err != nil {
-		logrus.WithContext(h.ctx).Errorf("[TaskLogisticsListHandler] error GetProjectTaskList, err:%+v", err)
-		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, consts.DefaultToast)
-		return
-	}
-	h.resp.Data = data
-}
-func (h *SpecialTaskLinkListHandler) checkParam() error {
-	var errs []error
-	if h.req.PageNum < 0 || h.req.PageSize <= 0 {
-		errs = append(errs, errors.New("page param error"))
-	}
-	h.req.PageNum--
-	h.req.LinkStatus = util.IsNull(h.req.LinkStatus)
-	if _, err := conv.Int64(h.req.LinkStatus); err != nil {
-		errs = append(errs, err)
-	}
-	if len(errs) != 0 {
-		return fmt.Errorf("check param errs:%+v", errs)
-	}
-	return nil
-}
+package handler
+
+import (
+	"errors"
+	"fmt"
+	"github.com/cstockton/go-conv"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/pack"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+)
+
+func WrapSpecialTaskLinkListHandler(ctx *gin.Context) {
+	handler := newSpecialTaskLinkListHandler(ctx)
+	BaseRun(handler)
+}
+
+func newSpecialTaskLinkListHandler(ctx *gin.Context) *SpecialTaskLinkListHandler {
+	return &SpecialTaskLinkListHandler{
+		req:  http_model.NewSpecialTaskLinkListRequest(),
+		resp: http_model.NewSpecialTaskLinkListResponse(),
+		ctx:  ctx,
+	}
+}
+
+type SpecialTaskLinkListHandler struct {
+	req  *http_model.SpecialTaskLinkListRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *SpecialTaskLinkListHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *SpecialTaskLinkListHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *SpecialTaskLinkListHandler) getResponse() interface{} {
+	return h.resp
+}
+func (h *SpecialTaskLinkListHandler) run() {
+	conditions := pack.HttpSpecialTaskLinkListRequestToCondition(h.req)
+	data, err := service.SpecialTask.GetSpecialTaskLinkList(h.ctx, h.req.ProjectId, h.req.PageSize, h.req.PageNum, conditions)
+	if err != nil {
+		logrus.WithContext(h.ctx).Errorf("[TaskLogisticsListHandler] error GetProjectTaskList, err:%+v", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, consts.DefaultToast)
+		return
+	}
+	h.resp.Data = data
+}
+func (h *SpecialTaskLinkListHandler) checkParam() error {
+	var errs []error
+	if h.req.PageNum < 0 || h.req.PageSize <= 0 {
+		errs = append(errs, errors.New("page param error"))
+	}
+	h.req.PageNum--
+	h.req.LinkStatus = util.IsNull(h.req.LinkStatus)
+	if _, err := conv.Int64(h.req.LinkStatus); err != nil {
+		errs = append(errs, err)
+	}
+	if len(errs) != 0 {
+		return fmt.Errorf("check param errs:%+v", errs)
+	}
+	return nil
+}

+ 73 - 73
handler/SpecialTaskScriptList.go

@@ -1,73 +1,73 @@
-package handler
-
-import (
-	"errors"
-	"fmt"
-	"github.com/cstockton/go-conv"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/pack"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-)
-
-func WrapSpecialTaskScriptListHandler(ctx *gin.Context) {
-	handler := newSpecialTaskScriptListHandler(ctx)
-	BaseRun(handler)
-}
-
-func newSpecialTaskScriptListHandler(ctx *gin.Context) *SpecialTaskScriptListHandler {
-	return &SpecialTaskScriptListHandler{
-		req:  http_model.NewSpecialTaskScriptListRequest(),
-		resp: http_model.NewSpecialTaskScriptListResponse(),
-		ctx:  ctx,
-	}
-}
-
-type SpecialTaskScriptListHandler struct {
-	req  *http_model.SpecialTaskScriptListRequest
-	resp *http_model.CommonResponse
-	ctx  *gin.Context
-}
-
-func (h *SpecialTaskScriptListHandler) getRequest() interface{} {
-	return h.req
-}
-func (h *SpecialTaskScriptListHandler) getContext() *gin.Context {
-	return h.ctx
-}
-func (h *SpecialTaskScriptListHandler) getResponse() interface{} {
-	return h.resp
-}
-func (h *SpecialTaskScriptListHandler) run() {
-	conditions := pack.HttpSpecialTaskScriptListRequestToCondition(h.req)
-	data, err := service.SpecialTask.GetSpecialTaskScriptList(h.ctx, h.req.ProjectId, h.req.PageSize, h.req.PageNum, conditions)
-	if err != nil {
-		logrus.WithContext(h.ctx).Errorf("[TaskLogisticsListHandler] error GetProjectTaskList, err:%+v", err)
-		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, consts.DefaultToast)
-		return
-	}
-	h.resp.Data = data
-}
-func (h *SpecialTaskScriptListHandler) checkParam() error {
-	var errs []error
-	if h.req.PageNum < 0 || h.req.PageSize <= 0 {
-		errs = append(errs, errors.New("page param error"))
-	}
-	h.req.PageNum--
-	h.req.ProjectId = util.IsNull(h.req.ProjectId)
-	if _, err := conv.Int64(h.req.ProjectId); err != nil {
-		errs = append(errs, err)
-	}
-	h.req.ScriptStatus = util.IsNull(h.req.ScriptStatus)
-	if _, err := conv.Int64(h.req.ScriptStatus); err != nil {
-		errs = append(errs, err)
-	}
-	if len(errs) != 0 {
-		return fmt.Errorf("check param errs:%+v", errs)
-	}
-	return nil
-}
+package handler
+
+import (
+	"errors"
+	"fmt"
+	"github.com/cstockton/go-conv"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/pack"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+)
+
+func WrapSpecialTaskScriptListHandler(ctx *gin.Context) {
+	handler := newSpecialTaskScriptListHandler(ctx)
+	BaseRun(handler)
+}
+
+func newSpecialTaskScriptListHandler(ctx *gin.Context) *SpecialTaskScriptListHandler {
+	return &SpecialTaskScriptListHandler{
+		req:  http_model.NewSpecialTaskScriptListRequest(),
+		resp: http_model.NewSpecialTaskScriptListResponse(),
+		ctx:  ctx,
+	}
+}
+
+type SpecialTaskScriptListHandler struct {
+	req  *http_model.SpecialTaskScriptListRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *SpecialTaskScriptListHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *SpecialTaskScriptListHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *SpecialTaskScriptListHandler) getResponse() interface{} {
+	return h.resp
+}
+func (h *SpecialTaskScriptListHandler) run() {
+	conditions := pack.HttpSpecialTaskScriptListRequestToCondition(h.req)
+	data, err := service.SpecialTask.GetSpecialTaskScriptList(h.ctx, h.req.ProjectId, h.req.PageSize, h.req.PageNum, conditions)
+	if err != nil {
+		logrus.WithContext(h.ctx).Errorf("[TaskLogisticsListHandler] error GetProjectTaskList, err:%+v", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, consts.DefaultToast)
+		return
+	}
+	h.resp.Data = data
+}
+func (h *SpecialTaskScriptListHandler) checkParam() error {
+	var errs []error
+	if h.req.PageNum < 0 || h.req.PageSize <= 0 {
+		errs = append(errs, errors.New("page param error"))
+	}
+	h.req.PageNum--
+	h.req.ProjectId = util.IsNull(h.req.ProjectId)
+	if _, err := conv.Int64(h.req.ProjectId); err != nil {
+		errs = append(errs, err)
+	}
+	h.req.ScriptStatus = util.IsNull(h.req.ScriptStatus)
+	if _, err := conv.Int64(h.req.ScriptStatus); err != nil {
+		errs = append(errs, err)
+	}
+	if len(errs) != 0 {
+		return fmt.Errorf("check param errs:%+v", errs)
+	}
+	return nil
+}

+ 69 - 69
handler/SpecialTaskSketchList.go

@@ -1,69 +1,69 @@
-package handler
-
-import (
-	"errors"
-	"fmt"
-	"github.com/cstockton/go-conv"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/pack"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-)
-
-func WrapSpecialTaskSketchListHandler(ctx *gin.Context) {
-	handler := newSpecialTaskSketchListHandler(ctx)
-	BaseRun(handler)
-}
-
-func newSpecialTaskSketchListHandler(ctx *gin.Context) *SpecialTaskSketchListHandler {
-	return &SpecialTaskSketchListHandler{
-		req:  http_model.NewSpecialTaskSketchListRequest(),
-		resp: http_model.NewSpecialTaskSketchListResponse(),
-		ctx:  ctx,
-	}
-}
-
-type SpecialTaskSketchListHandler struct {
-	req  *http_model.SpecialTaskSketchListRequest
-	resp *http_model.CommonResponse
-	ctx  *gin.Context
-}
-
-func (h *SpecialTaskSketchListHandler) getRequest() interface{} {
-	return h.req
-}
-func (h *SpecialTaskSketchListHandler) getContext() *gin.Context {
-	return h.ctx
-}
-func (h *SpecialTaskSketchListHandler) getResponse() interface{} {
-	return h.resp
-}
-func (h *SpecialTaskSketchListHandler) run() {
-	conditions := pack.HttpSpecialTaskSketchListRequestToCondition(h.req)
-	data, err := service.SpecialTask.GetSpecialTaskSketchList(h.ctx, h.req.ProjectId, h.req.PageSize, h.req.PageNum, conditions)
-	if err != nil {
-		logrus.WithContext(h.ctx).Errorf("[TaskLogisticsListHandler] error GetProjectTaskList, err:%+v", err)
-		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, consts.DefaultToast)
-		return
-	}
-	h.resp.Data = data
-}
-func (h *SpecialTaskSketchListHandler) checkParam() error {
-	var errs []error
-	if h.req.PageNum < 0 || h.req.PageSize <= 0 {
-		errs = append(errs, errors.New("page param error"))
-	}
-	h.req.PageNum--
-	h.req.SketchStatus = util.IsNull(h.req.SketchStatus)
-	if _, err := conv.Int64(h.req.SketchStatus); err != nil {
-		errs = append(errs, err)
-	}
-	if len(errs) != 0 {
-		return fmt.Errorf("check param errs:%+v", errs)
-	}
-	return nil
-}
+package handler
+
+import (
+	"errors"
+	"fmt"
+	"github.com/cstockton/go-conv"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/pack"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+)
+
+func WrapSpecialTaskSketchListHandler(ctx *gin.Context) {
+	handler := newSpecialTaskSketchListHandler(ctx)
+	BaseRun(handler)
+}
+
+func newSpecialTaskSketchListHandler(ctx *gin.Context) *SpecialTaskSketchListHandler {
+	return &SpecialTaskSketchListHandler{
+		req:  http_model.NewSpecialTaskSketchListRequest(),
+		resp: http_model.NewSpecialTaskSketchListResponse(),
+		ctx:  ctx,
+	}
+}
+
+type SpecialTaskSketchListHandler struct {
+	req  *http_model.SpecialTaskSketchListRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *SpecialTaskSketchListHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *SpecialTaskSketchListHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *SpecialTaskSketchListHandler) getResponse() interface{} {
+	return h.resp
+}
+func (h *SpecialTaskSketchListHandler) run() {
+	conditions := pack.HttpSpecialTaskSketchListRequestToCondition(h.req)
+	data, err := service.SpecialTask.GetSpecialTaskSketchList(h.ctx, h.req.ProjectId, h.req.PageSize, h.req.PageNum, conditions)
+	if err != nil {
+		logrus.WithContext(h.ctx).Errorf("[TaskLogisticsListHandler] error GetProjectTaskList, err:%+v", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, consts.DefaultToast)
+		return
+	}
+	h.resp.Data = data
+}
+func (h *SpecialTaskSketchListHandler) checkParam() error {
+	var errs []error
+	if h.req.PageNum < 0 || h.req.PageSize <= 0 {
+		errs = append(errs, errors.New("page param error"))
+	}
+	h.req.PageNum--
+	h.req.SketchStatus = util.IsNull(h.req.SketchStatus)
+	if _, err := conv.Int64(h.req.SketchStatus); err != nil {
+		errs = append(errs, err)
+	}
+	if len(errs) != 0 {
+		return fmt.Errorf("check param errs:%+v", errs)
+	}
+	return nil
+}

+ 61 - 61
handler/SubmitSelection.go

@@ -1,61 +1,61 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-)
-
-func WrapSubmitSelectionHandler(ctx *gin.Context) {
-	handler := newSubmitSelectionHandler(ctx)
-	BaseRun(handler)
-}
-
-type SubmitSelection struct {
-	ctx  *gin.Context
-	req  *http_model.SubmitSelectionRequest
-	resp *http_model.CommonResponse
-}
-
-func (c SubmitSelection) getContext() *gin.Context {
-	return c.ctx
-}
-
-func (c SubmitSelection) getResponse() interface{} {
-	return c.resp
-}
-
-func (c SubmitSelection) getRequest() interface{} {
-	return c.req
-}
-
-func (c SubmitSelection) run() {
-	data := http_model.SubmitSelectionRequest{}
-	data = *c.req
-	//auth := middleware.GetSessionAuth(c.ctx)
-	//enterpriseID := auth.EnterpriseID
-	res, err := service.Selection.Submit(c.ctx, data)
-	if err != nil {
-		logrus.Errorf("[SubmitSelection] call SubmitSelection err:%+v\n", err)
-		util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, "")
-		logrus.Info("SubmitSelection fail,req:%+v", c.req)
-		return
-	}
-	c.resp.Message = "项目已提交审核"
-	c.resp.Data = res
-}
-
-func (c SubmitSelection) checkParam() error {
-	return nil
-}
-
-func newSubmitSelectionHandler(ctx *gin.Context) *SubmitSelection {
-	return &SubmitSelection{
-		ctx:  ctx,
-		req:  http_model.NewSubmitSelectionRequest(),
-		resp: http_model.NewSubmitSelectionResponse(),
-	}
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+)
+
+func WrapSubmitSelectionHandler(ctx *gin.Context) {
+	handler := newSubmitSelectionHandler(ctx)
+	BaseRun(handler)
+}
+
+type SubmitSelection struct {
+	ctx  *gin.Context
+	req  *http_model.SubmitSelectionRequest
+	resp *http_model.CommonResponse
+}
+
+func (c SubmitSelection) getContext() *gin.Context {
+	return c.ctx
+}
+
+func (c SubmitSelection) getResponse() interface{} {
+	return c.resp
+}
+
+func (c SubmitSelection) getRequest() interface{} {
+	return c.req
+}
+
+func (c SubmitSelection) run() {
+	data := http_model.SubmitSelectionRequest{}
+	data = *c.req
+	//auth := middleware.GetSessionAuth(c.ctx)
+	//enterpriseID := auth.EnterpriseID
+	res, err := service.Selection.Submit(c.ctx, data)
+	if err != nil {
+		logrus.Errorf("[SubmitSelection] call SubmitSelection err:%+v\n", err)
+		util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, "")
+		logrus.Info("SubmitSelection fail,req:%+v", c.req)
+		return
+	}
+	c.resp.Message = "项目已提交审核"
+	c.resp.Data = res
+}
+
+func (c SubmitSelection) checkParam() error {
+	return nil
+}
+
+func newSubmitSelectionHandler(ctx *gin.Context) *SubmitSelection {
+	return &SubmitSelection{
+		ctx:  ctx,
+		req:  http_model.NewSubmitSelectionRequest(),
+		resp: http_model.NewSubmitSelectionResponse(),
+	}
+}

+ 60 - 60
handler/UpdateSecTaskLogistics.go

@@ -1,60 +1,60 @@
-package handler
-
-import (
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-)
-
-func WrapUpdateSecTaskLogisticsHandler(ctx *gin.Context) {
-	handler := newUpdateSecTaskLogisticsHandler(ctx)
-	BaseRun(handler)
-}
-
-type UpdateSecTaskLogistics struct {
-	ctx  *gin.Context
-	req  *http_model.UpdateSecTaskLogisticsRequest
-	resp *http_model.CommonResponse
-}
-
-func (c UpdateSecTaskLogistics) getContext() *gin.Context {
-	return c.ctx
-}
-
-func (c UpdateSecTaskLogistics) getResponse() interface{} {
-	return c.resp
-}
-
-func (c UpdateSecTaskLogistics) getRequest() interface{} {
-	return c.req
-}
-
-func (c UpdateSecTaskLogistics) run() {
-	data := http_model.UpdateSecTaskLogisticsRequest{}
-	data = *c.req
-	res, err := service.SecLogistics.Update(c.ctx, data)
-	if err != nil {
-		logrus.Errorf("[UpdateSecTaskLogistics] call UpdateSecTaskLogistics err:%+v\n", err)
-		util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, "")
-		logrus.Info("UpdateSecTaskLogistics fail,req:%+v", c.req)
-		return
-	}
-	c.resp.Message = "成功添加发货信息"
-	c.resp.Data = res
-}
-
-func (c UpdateSecTaskLogistics) checkParam() error {
-	return nil
-}
-
-func newUpdateSecTaskLogisticsHandler(ctx *gin.Context) *UpdateSecTaskLogistics {
-	return &UpdateSecTaskLogistics{
-		ctx:  ctx,
-		req:  http_model.NewUpdateSecTaskLogisticsRequest(),
-		resp: http_model.NewUpdateSecTaskLogisticsResponse(),
-	}
-}
+package handler
+
+import (
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+)
+
+func WrapUpdateSecTaskLogisticsHandler(ctx *gin.Context) {
+	handler := newUpdateSecTaskLogisticsHandler(ctx)
+	BaseRun(handler)
+}
+
+type UpdateSecTaskLogistics struct {
+	ctx  *gin.Context
+	req  *http_model.UpdateSecTaskLogisticsRequest
+	resp *http_model.CommonResponse
+}
+
+func (c UpdateSecTaskLogistics) getContext() *gin.Context {
+	return c.ctx
+}
+
+func (c UpdateSecTaskLogistics) getResponse() interface{} {
+	return c.resp
+}
+
+func (c UpdateSecTaskLogistics) getRequest() interface{} {
+	return c.req
+}
+
+func (c UpdateSecTaskLogistics) run() {
+	data := http_model.UpdateSecTaskLogisticsRequest{}
+	data = *c.req
+	res, err := service.SecLogistics.Update(c.ctx, data)
+	if err != nil {
+		logrus.Errorf("[UpdateSecTaskLogistics] call UpdateSecTaskLogistics err:%+v\n", err)
+		util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, "")
+		logrus.Info("UpdateSecTaskLogistics fail,req:%+v", c.req)
+		return
+	}
+	c.resp.Message = "成功添加发货信息"
+	c.resp.Data = res
+}
+
+func (c UpdateSecTaskLogistics) checkParam() error {
+	return nil
+}
+
+func newUpdateSecTaskLogisticsHandler(ctx *gin.Context) *UpdateSecTaskLogistics {
+	return &UpdateSecTaskLogistics{
+		ctx:  ctx,
+		req:  http_model.NewUpdateSecTaskLogisticsRequest(),
+		resp: http_model.NewUpdateSecTaskLogisticsResponse(),
+	}
+}

+ 58 - 58
handler/accept_data.go

@@ -1,58 +1,58 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	log "github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-)
-
-func WrapAcceptDataHandler(ctx *gin.Context) {
-	handler := newAcceptDataHandler(ctx)
-	BaseRun(handler)
-}
-
-func newAcceptDataHandler(ctx *gin.Context) *AcceptDataHandler {
-	return &AcceptDataHandler{
-		req:  http_model.NewAcceptDataRequest(),
-		resp: http_model.NewAcceptDataResponse(),
-		ctx:  ctx,
-	}
-}
-
-type AcceptDataHandler struct {
-	req  *http_model.AcceptDataRequest
-	resp *http_model.CommonResponse
-	ctx  *gin.Context
-}
-
-func (h *AcceptDataHandler) getRequest() interface{} {
-	return h.req
-}
-func (h *AcceptDataHandler) getContext() *gin.Context {
-	return h.ctx
-}
-func (h *AcceptDataHandler) getResponse() interface{} {
-	return h.resp
-}
-
-func (h *AcceptDataHandler) run() {
-	data := http_model.AcceptDataRequest{}
-	data = *h.req
-	res, err := service.Data.AcceptData(h.ctx, data)
-	if err != nil {
-		logrus.Errorf("[ReviseOpinionHandler] call Create err:%+v\n", err)
-		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
-		log.Info("CreateProject fail,req:%+v", h.req)
-		return
-	}
-	h.resp.Message = "成功通过脚本"
-	h.resp.Data = res
-}
-
-func (h *AcceptDataHandler) checkParam() error {
-	return nil
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	log "github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+)
+
+func WrapAcceptDataHandler(ctx *gin.Context) {
+	handler := newAcceptDataHandler(ctx)
+	BaseRun(handler)
+}
+
+func newAcceptDataHandler(ctx *gin.Context) *AcceptDataHandler {
+	return &AcceptDataHandler{
+		req:  http_model.NewAcceptDataRequest(),
+		resp: http_model.NewAcceptDataResponse(),
+		ctx:  ctx,
+	}
+}
+
+type AcceptDataHandler struct {
+	req  *http_model.AcceptDataRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *AcceptDataHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *AcceptDataHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *AcceptDataHandler) getResponse() interface{} {
+	return h.resp
+}
+
+func (h *AcceptDataHandler) run() {
+	data := http_model.AcceptDataRequest{}
+	data = *h.req
+	res, err := service.Data.AcceptData(h.ctx, data)
+	if err != nil {
+		logrus.Errorf("[ReviseOpinionHandler] call Create err:%+v\n", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+		log.Info("CreateProject fail,req:%+v", h.req)
+		return
+	}
+	h.resp.Message = "成功通过脚本"
+	h.resp.Data = res
+}
+
+func (h *AcceptDataHandler) checkParam() error {
+	return nil
+}

+ 59 - 59
handler/accept_link.go

@@ -1,59 +1,59 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	log "github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-)
-
-func WrapAcceptLinkHandler(ctx *gin.Context) {
-	handler := newAcceptLinkHandler(ctx)
-	BaseRun(handler)
-}
-
-func newAcceptLinkHandler(ctx *gin.Context) *AcceptLinkHandler {
-	return &AcceptLinkHandler{
-		req:  http_model.NewAcceptLinkRequest(),
-		resp: http_model.NewAcceptLinkResponse(),
-		ctx:  ctx,
-	}
-}
-
-type AcceptLinkHandler struct {
-	req  *http_model.AcceptLinkRequest
-	resp *http_model.CommonResponse
-	ctx  *gin.Context
-}
-
-func (h *AcceptLinkHandler) getRequest() interface{} {
-	return h.req
-}
-func (h *AcceptLinkHandler) getContext() *gin.Context {
-	return h.ctx
-}
-func (h *AcceptLinkHandler) getResponse() interface{} {
-	return h.resp
-}
-
-func (h *AcceptLinkHandler) run() {
-	data := http_model.AcceptLinkRequest{}
-	data = *h.req
-	res, err := service.Link.AcceptLink(h.ctx, data)
-	if err != nil {
-		logrus.Errorf("[ReviseOpinionHandler] call Create err:%+v\n", err)
-		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
-		log.Info("CreateProject fail,req:%+v", h.req)
-		return
-	}
-	h.resp.Message = "成功通过链接"
-	h.resp.Data = res
-	h.resp.Data = data
-}
-
-func (h *AcceptLinkHandler) checkParam() error {
-	return nil
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	log "github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+)
+
+func WrapAcceptLinkHandler(ctx *gin.Context) {
+	handler := newAcceptLinkHandler(ctx)
+	BaseRun(handler)
+}
+
+func newAcceptLinkHandler(ctx *gin.Context) *AcceptLinkHandler {
+	return &AcceptLinkHandler{
+		req:  http_model.NewAcceptLinkRequest(),
+		resp: http_model.NewAcceptLinkResponse(),
+		ctx:  ctx,
+	}
+}
+
+type AcceptLinkHandler struct {
+	req  *http_model.AcceptLinkRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *AcceptLinkHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *AcceptLinkHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *AcceptLinkHandler) getResponse() interface{} {
+	return h.resp
+}
+
+func (h *AcceptLinkHandler) run() {
+	data := http_model.AcceptLinkRequest{}
+	data = *h.req
+	res, err := service.Link.AcceptLink(h.ctx, data)
+	if err != nil {
+		logrus.Errorf("[ReviseOpinionHandler] call Create err:%+v\n", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+		log.Info("CreateProject fail,req:%+v", h.req)
+		return
+	}
+	h.resp.Message = "成功通过链接"
+	h.resp.Data = res
+	h.resp.Data = data
+}
+
+func (h *AcceptLinkHandler) checkParam() error {
+	return nil
+}

+ 89 - 89
handler/accept_script.go

@@ -1,89 +1,89 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	log "github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-)
-
-func WrapAcceptScriptHandler(ctx *gin.Context) {
-	handler := newAcceptScriptHandler(ctx)
-	BaseRun(handler)
-}
-
-func newAcceptScriptHandler(ctx *gin.Context) *AcceptScriptHandler {
-	return &AcceptScriptHandler{
-		req:  http_model.NewAcceptScriptRequest(),
-		resp: http_model.NewAcceptScriptResponse(),
-		ctx:  ctx,
-	}
-}
-
-type AcceptScriptHandler struct {
-	req  *http_model.AcceptScriptRequest
-	resp *http_model.CommonResponse
-	ctx  *gin.Context
-}
-
-func (h *AcceptScriptHandler) getRequest() interface{} {
-	return h.req
-}
-func (h *AcceptScriptHandler) getContext() *gin.Context {
-	return h.ctx
-}
-func (h *AcceptScriptHandler) getResponse() interface{} {
-	return h.resp
-}
-
-func (h *AcceptScriptHandler) run() {
-	data := http_model.AcceptScriptRequest{}
-	data = *h.req
-	res, err := service.Script.AcceptScript(h.ctx, data)
-	if err != nil {
-		logrus.Errorf("[ReviseOpinionHandler] call Create err:%+v\n", err)
-		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
-		log.Info("CreateProject fail,req:%+v", h.req)
-		return
-	}
-	h.resp.Message = "成功通过脚本"
-	h.resp.Data = res
-	h.resp.Data = data
-}
-
-/***
-func (h *AcceptScriptHandler) run() {
-	data := http_model.AcceptScriptRequest{}
-	data = *h.req
-	isRefuse := data.IsRefuse
-	if isRefuse== 0 {
-		fmt.Println("Create in")
-		res, err := service.Project.Create(h.ctx, data)
-		if err != nil {
-			logrus.Errorf("[AcceptScriptHandler] call Create err:%+v\n", err)
-			util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
-			log.Info("CreateProject fail,req:%+v", h.req)
-			return
-		}
-		h.resp.Message = "成功添加修改意见"
-		h.resp.Data = res
-	} else {
-		res, err := service.Logistics.Update(h.ctx, data)
-		if err != nil {
-			logrus.Errorf("[AcceptScriptHandler] call Create err:%+v\n", err)
-			util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
-			log.Info("CreateProject fail,req:%+v", h.req)
-			return
-		}
-		h.resp.Message = "成功修改物流信息"
-		h.resp.Data = res
-	}
-
-}
-***/
-func (h *AcceptScriptHandler) checkParam() error {
-	return nil
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	log "github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+)
+
+func WrapAcceptScriptHandler(ctx *gin.Context) {
+	handler := newAcceptScriptHandler(ctx)
+	BaseRun(handler)
+}
+
+func newAcceptScriptHandler(ctx *gin.Context) *AcceptScriptHandler {
+	return &AcceptScriptHandler{
+		req:  http_model.NewAcceptScriptRequest(),
+		resp: http_model.NewAcceptScriptResponse(),
+		ctx:  ctx,
+	}
+}
+
+type AcceptScriptHandler struct {
+	req  *http_model.AcceptScriptRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *AcceptScriptHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *AcceptScriptHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *AcceptScriptHandler) getResponse() interface{} {
+	return h.resp
+}
+
+func (h *AcceptScriptHandler) run() {
+	data := http_model.AcceptScriptRequest{}
+	data = *h.req
+	res, err := service.Script.AcceptScript(h.ctx, data)
+	if err != nil {
+		logrus.Errorf("[ReviseOpinionHandler] call Create err:%+v\n", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+		log.Info("CreateProject fail,req:%+v", h.req)
+		return
+	}
+	h.resp.Message = "成功通过脚本"
+	h.resp.Data = res
+	h.resp.Data = data
+}
+
+/***
+func (h *AcceptScriptHandler) run() {
+	data := http_model.AcceptScriptRequest{}
+	data = *h.req
+	isRefuse := data.IsRefuse
+	if isRefuse== 0 {
+		fmt.Println("Create in")
+		res, err := service.Project.Create(h.ctx, data)
+		if err != nil {
+			logrus.Errorf("[AcceptScriptHandler] call Create err:%+v\n", err)
+			util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+			log.Info("CreateProject fail,req:%+v", h.req)
+			return
+		}
+		h.resp.Message = "成功添加修改意见"
+		h.resp.Data = res
+	} else {
+		res, err := service.Logistics.Update(h.ctx, data)
+		if err != nil {
+			logrus.Errorf("[AcceptScriptHandler] call Create err:%+v\n", err)
+			util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+			log.Info("CreateProject fail,req:%+v", h.req)
+			return
+		}
+		h.resp.Message = "成功修改物流信息"
+		h.resp.Data = res
+	}
+
+}
+***/
+func (h *AcceptScriptHandler) checkParam() error {
+	return nil
+}

+ 89 - 89
handler/accept_sketch.go

@@ -1,89 +1,89 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	log "github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-)
-
-func WrapAcceptSketchHandler(ctx *gin.Context) {
-	handler := newAcceptSketchHandler(ctx)
-	BaseRun(handler)
-}
-
-func newAcceptSketchHandler(ctx *gin.Context) *AcceptSketchHandler {
-	return &AcceptSketchHandler{
-		req:  http_model.NewAcceptSketchRequest(),
-		resp: http_model.NewAcceptSketchResponse(),
-		ctx:  ctx,
-	}
-}
-
-type AcceptSketchHandler struct {
-	req  *http_model.AcceptSketchRequest
-	resp *http_model.CommonResponse
-	ctx  *gin.Context
-}
-
-func (h *AcceptSketchHandler) getRequest() interface{} {
-	return h.req
-}
-func (h *AcceptSketchHandler) getContext() *gin.Context {
-	return h.ctx
-}
-func (h *AcceptSketchHandler) getResponse() interface{} {
-	return h.resp
-}
-
-func (h *AcceptSketchHandler) run() {
-	data := http_model.AcceptSketchRequest{}
-	data = *h.req
-	res, err := service.Sketch.AcceptSketch(h.ctx, data)
-	if err != nil {
-		logrus.Errorf("[ReviseOpinionHandler] call Create err:%+v\n", err)
-		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
-		log.Info("CreateProject fail,req:%+v", h.req)
-		return
-	}
-	h.resp.Message = "成功通过初稿"
-	h.resp.Data = res
-	h.resp.Data = data
-}
-
-/***
-func (h *AcceptSketchHandler) run() {
-	data := http_model.AcceptSketchRequest{}
-	data = *h.req
-	isRefuse := data.IsRefuse
-	if isRefuse== 0 {
-		fmt.Println("Create in")
-		res, err := service.Project.Create(h.ctx, data)
-		if err != nil {
-			logrus.Errorf("[AcceptSketchHandler] call Create err:%+v\n", err)
-			util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
-			log.Info("CreateProject fail,req:%+v", h.req)
-			return
-		}
-		h.resp.Message = "成功添加修改意见"
-		h.resp.Data = res
-	} else {
-		res, err := service.Logistics.Update(h.ctx, data)
-		if err != nil {
-			logrus.Errorf("[AcceptSketchHandler] call Create err:%+v\n", err)
-			util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
-			log.Info("CreateProject fail,req:%+v", h.req)
-			return
-		}
-		h.resp.Message = "成功修改物流信息"
-		h.resp.Data = res
-	}
-
-}
-***/
-func (h *AcceptSketchHandler) checkParam() error {
-	return nil
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	log "github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+)
+
+func WrapAcceptSketchHandler(ctx *gin.Context) {
+	handler := newAcceptSketchHandler(ctx)
+	BaseRun(handler)
+}
+
+func newAcceptSketchHandler(ctx *gin.Context) *AcceptSketchHandler {
+	return &AcceptSketchHandler{
+		req:  http_model.NewAcceptSketchRequest(),
+		resp: http_model.NewAcceptSketchResponse(),
+		ctx:  ctx,
+	}
+}
+
+type AcceptSketchHandler struct {
+	req  *http_model.AcceptSketchRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *AcceptSketchHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *AcceptSketchHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *AcceptSketchHandler) getResponse() interface{} {
+	return h.resp
+}
+
+func (h *AcceptSketchHandler) run() {
+	data := http_model.AcceptSketchRequest{}
+	data = *h.req
+	res, err := service.Sketch.AcceptSketch(h.ctx, data)
+	if err != nil {
+		logrus.Errorf("[ReviseOpinionHandler] call Create err:%+v\n", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+		log.Info("CreateProject fail,req:%+v", h.req)
+		return
+	}
+	h.resp.Message = "成功通过初稿"
+	h.resp.Data = res
+	h.resp.Data = data
+}
+
+/***
+func (h *AcceptSketchHandler) run() {
+	data := http_model.AcceptSketchRequest{}
+	data = *h.req
+	isRefuse := data.IsRefuse
+	if isRefuse== 0 {
+		fmt.Println("Create in")
+		res, err := service.Project.Create(h.ctx, data)
+		if err != nil {
+			logrus.Errorf("[AcceptSketchHandler] call Create err:%+v\n", err)
+			util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+			log.Info("CreateProject fail,req:%+v", h.req)
+			return
+		}
+		h.resp.Message = "成功添加修改意见"
+		h.resp.Data = res
+	} else {
+		res, err := service.Logistics.Update(h.ctx, data)
+		if err != nil {
+			logrus.Errorf("[AcceptSketchHandler] call Create err:%+v\n", err)
+			util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+			log.Info("CreateProject fail,req:%+v", h.req)
+			return
+		}
+		h.resp.Message = "成功修改物流信息"
+		h.resp.Data = res
+	}
+
+}
+***/
+func (h *AcceptSketchHandler) checkParam() error {
+	return nil
+}

+ 57 - 57
handler/account_income.go

@@ -1,57 +1,57 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/db"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/util"
-)
-
-func WrapTalentInfoHandler(ctx *gin.Context) {
-	handler := newTalentInfo(ctx)
-	BaseRun(handler)
-}
-
-func newTalentInfo(ctx *gin.Context) *TalentInfo {
-	return &TalentInfo{
-		req:  http_model.NewTalentInfoRequest(),
-		resp: http_model.NewTalentInfoResponse(),
-		ctx:  ctx,
-	}
-}
-
-type TalentInfo struct {
-	req  *http_model.TalentInfoRequest
-	resp *http_model.CommonResponse
-	ctx  *gin.Context
-}
-
-func (a TalentInfo) getContext() *gin.Context {
-	return a.ctx
-}
-
-func (a TalentInfo) getResponse() interface{} {
-	return a.resp
-}
-
-func (a TalentInfo) getRequest() interface{} {
-	return a.req
-}
-
-func (a TalentInfo) run() {
-	data, err := db.AccountIncome(a.ctx, a.req.TalentId)
-	if err != nil {
-		// 数据库查询失败,返回5001
-		logrus.Errorf("[AccountIncomeHandler] call AccountIncome err:%+v\n", err)
-		util.HandlerPackErrorResp(a.resp, consts.ErrorInternal, "")
-		logrus.Info("AccountIncomeHandler fail,req:%+v", a.req)
-		return
-	}
-	a.resp.Data = data
-}
-
-func (a TalentInfo) checkParam() error {
-	return nil
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/db"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/util"
+)
+
+func WrapTalentInfoHandler(ctx *gin.Context) {
+	handler := newTalentInfo(ctx)
+	BaseRun(handler)
+}
+
+func newTalentInfo(ctx *gin.Context) *TalentInfo {
+	return &TalentInfo{
+		req:  http_model.NewTalentInfoRequest(),
+		resp: http_model.NewTalentInfoResponse(),
+		ctx:  ctx,
+	}
+}
+
+type TalentInfo struct {
+	req  *http_model.TalentInfoRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (a TalentInfo) getContext() *gin.Context {
+	return a.ctx
+}
+
+func (a TalentInfo) getResponse() interface{} {
+	return a.resp
+}
+
+func (a TalentInfo) getRequest() interface{} {
+	return a.req
+}
+
+func (a TalentInfo) run() {
+	data, err := db.AccountIncome(a.ctx, a.req.TalentId)
+	if err != nil {
+		// 数据库查询失败,返回5001
+		logrus.Errorf("[AccountIncomeHandler] call AccountIncome err:%+v\n", err)
+		util.HandlerPackErrorResp(a.resp, consts.ErrorInternal, "")
+		logrus.Info("AccountIncomeHandler fail,req:%+v", a.req)
+		return
+	}
+	a.resp.Data = data
+}
+
+func (a TalentInfo) checkParam() error {
+	return nil
+}

+ 62 - 62
handler/account_info.go

@@ -1,62 +1,62 @@
-package handler
-
-import (
-	"errors"
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/pack"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-)
-
-func WrapAccountInfoHandler(ctx *gin.Context) {
-	handler := newAccountInfoHandler(ctx)
-	BaseRun(handler)
-}
-
-type accountHandler struct {
-	ctx  *gin.Context
-	req  *http_model.AccountInfoRequest
-	resp *http_model.CommonResponse
-}
-
-func newAccountInfoHandler(ctx *gin.Context) *accountHandler {
-	return &accountHandler{
-		ctx:  ctx,
-		req:  http_model.NewAccountInfoRequset(),
-		resp: http_model.NewAccountInfoResponse(),
-	}
-}
-func (a accountHandler) getContext() *gin.Context {
-	return a.ctx
-}
-
-func (a accountHandler) getResponse() interface{} {
-	return a.resp
-}
-
-func (a accountHandler) getRequest() interface{} {
-	return a.req
-}
-
-func (a accountHandler) run() {
-	conditions := pack.HttpAccountInfoRequestToCondition(a.req)
-	data, err := service.User.AccountInfo(a.ctx, a.req.PageSize, a.req.PageNum, conditions)
-	if err != nil {
-		logrus.WithContext(a.ctx).Errorf("[WrapAccountInfoHandler] error AccountInfo, err:%+v", err)
-		util.HandlerPackErrorResp(a.resp, consts.ErrorInternal, consts.DefaultToast)
-		return
-	}
-	a.resp.Data = data
-}
-
-func (a accountHandler) checkParam() error {
-	var errs []error
-	if a.req.PageNum < 0 || a.req.PageSize <= 0 {
-		errs = append(errs, errors.New("page param error"))
-	}
-	a.req.PageNum--
-	return nil
-}
+package handler
+
+import (
+	"errors"
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/pack"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+)
+
+func WrapAccountInfoHandler(ctx *gin.Context) {
+	handler := newAccountInfoHandler(ctx)
+	BaseRun(handler)
+}
+
+type accountHandler struct {
+	ctx  *gin.Context
+	req  *http_model.AccountInfoRequest
+	resp *http_model.CommonResponse
+}
+
+func newAccountInfoHandler(ctx *gin.Context) *accountHandler {
+	return &accountHandler{
+		ctx:  ctx,
+		req:  http_model.NewAccountInfoRequset(),
+		resp: http_model.NewAccountInfoResponse(),
+	}
+}
+func (a accountHandler) getContext() *gin.Context {
+	return a.ctx
+}
+
+func (a accountHandler) getResponse() interface{} {
+	return a.resp
+}
+
+func (a accountHandler) getRequest() interface{} {
+	return a.req
+}
+
+func (a accountHandler) run() {
+	conditions := pack.HttpAccountInfoRequestToCondition(a.req)
+	data, err := service.User.AccountInfo(a.ctx, a.req.PageSize, a.req.PageNum, conditions)
+	if err != nil {
+		logrus.WithContext(a.ctx).Errorf("[WrapAccountInfoHandler] error AccountInfo, err:%+v", err)
+		util.HandlerPackErrorResp(a.resp, consts.ErrorInternal, consts.DefaultToast)
+		return
+	}
+	a.resp.Data = data
+}
+
+func (a accountHandler) checkParam() error {
+	var errs []error
+	if a.req.PageNum < 0 || a.req.PageSize <= 0 {
+		errs = append(errs, errors.New("page param error"))
+	}
+	a.req.PageNum--
+	return nil
+}

+ 49 - 49
handler/base.go

@@ -1,49 +1,49 @@
-package handler
-
-import (
-	"net/http"
-	"youngee_m_api/consts"
-	"youngee_m_api/util"
-
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-)
-
-type BaseHandler interface {
-	getContext() *gin.Context
-	getResponse() interface{}
-	getRequest() interface{}
-	run()
-	checkParam() error
-}
-
-func BaseRun(baseHandler BaseHandler) {
-	ctx := baseHandler.getContext()
-	method := ctx.Request.Method
-	req := baseHandler.getRequest()
-	var err error
-	if method == http.MethodPost || method == http.MethodPut {
-		err = ctx.ShouldBindJSON(req)
-	} else if method == http.MethodGet {
-		err = ctx.BindQuery(req)
-	}
-	if err != nil {
-		util.PackErrorResp(ctx, consts.ErrorParamCheck)
-		ctx.Abort()
-		logrus.Infof("[baseHandler] bind json error,err:%+v", err)
-		return
-	}
-	if err = baseHandler.checkParam(); err != nil {
-		util.PackErrorResp(ctx, consts.ErrorParamCheck)
-		ctx.Abort()
-		logrus.Infof("[baseHandler] checkParam error,err:%+v", err)
-		return
-	}
-	baseHandler.run()
-	if ctx.IsAborted() {
-		return
-	}
-	resp := baseHandler.getResponse()
-	ctx.JSON(http.StatusOK, resp)
-	logrus.Infof("[baseHandler] http success")
-}
+package handler
+
+import (
+	"net/http"
+	"youngee_m_api/consts"
+	"youngee_m_api/util"
+
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+)
+
+type BaseHandler interface {
+	getContext() *gin.Context
+	getResponse() interface{}
+	getRequest() interface{}
+	run()
+	checkParam() error
+}
+
+func BaseRun(baseHandler BaseHandler) {
+	ctx := baseHandler.getContext()
+	method := ctx.Request.Method
+	req := baseHandler.getRequest()
+	var err error
+	if method == http.MethodPost || method == http.MethodPut {
+		err = ctx.ShouldBindJSON(req)
+	} else if method == http.MethodGet {
+		err = ctx.BindQuery(req)
+	}
+	if err != nil {
+		util.PackErrorResp(ctx, consts.ErrorParamCheck)
+		ctx.Abort()
+		logrus.Infof("[baseHandler] bind json error,err:%+v", err)
+		return
+	}
+	if err = baseHandler.checkParam(); err != nil {
+		util.PackErrorResp(ctx, consts.ErrorParamCheck)
+		ctx.Abort()
+		logrus.Infof("[baseHandler] checkParam error,err:%+v", err)
+		return
+	}
+	baseHandler.run()
+	if ctx.IsAborted() {
+		return
+	}
+	resp := baseHandler.getResponse()
+	ctx.JSON(http.StatusOK, resp)
+	logrus.Infof("[baseHandler] http success")
+}

+ 57 - 57
handler/confirmInvoice.go

@@ -1,57 +1,57 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/db"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/util"
-)
-
-func WrapConfirmInvoiceHandler(ctx *gin.Context) {
-	handler := newConfirmInvoiceHandler(ctx)
-	BaseRun(handler)
-}
-
-type ConfirmInvoiceHandler struct {
-	ctx  *gin.Context
-	req  *http_model.ConfirmInvoiceRequest
-	resp *http_model.CommonResponse
-}
-
-func (c ConfirmInvoiceHandler) getContext() *gin.Context {
-	return c.ctx
-}
-
-func (c ConfirmInvoiceHandler) getResponse() interface{} {
-	return c.resp
-}
-
-func (c ConfirmInvoiceHandler) getRequest() interface{} {
-	return c.req
-}
-
-func (c ConfirmInvoiceHandler) run() {
-	err := db.ConfirmInvoice(c.ctx, c.req)
-	if err != nil {
-		// 数据库查询失败,返回5001
-		logrus.Errorf("[ConfirmInvoiceHandler] call ConfirmInvoice err:%+v\n", err)
-		util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, "")
-		logrus.Info("ConfirmInvoice fail,req:%+v", c.req)
-		return
-	}
-	c.resp.Message = "确认开票成功"
-}
-
-func (c ConfirmInvoiceHandler) checkParam() error {
-	return nil
-}
-
-func newConfirmInvoiceHandler(ctx *gin.Context) *ConfirmInvoiceHandler {
-	return &ConfirmInvoiceHandler{
-		ctx:  ctx,
-		req:  http_model.NewConfirmInvoiceRequest(),
-		resp: http_model.NewConfirmInvoiceResponse(),
-	}
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/db"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/util"
+)
+
+func WrapConfirmInvoiceHandler(ctx *gin.Context) {
+	handler := newConfirmInvoiceHandler(ctx)
+	BaseRun(handler)
+}
+
+type ConfirmInvoiceHandler struct {
+	ctx  *gin.Context
+	req  *http_model.ConfirmInvoiceRequest
+	resp *http_model.CommonResponse
+}
+
+func (c ConfirmInvoiceHandler) getContext() *gin.Context {
+	return c.ctx
+}
+
+func (c ConfirmInvoiceHandler) getResponse() interface{} {
+	return c.resp
+}
+
+func (c ConfirmInvoiceHandler) getRequest() interface{} {
+	return c.req
+}
+
+func (c ConfirmInvoiceHandler) run() {
+	err := db.ConfirmInvoice(c.ctx, c.req)
+	if err != nil {
+		// 数据库查询失败,返回5001
+		logrus.Errorf("[ConfirmInvoiceHandler] call ConfirmInvoice err:%+v\n", err)
+		util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, "")
+		logrus.Info("ConfirmInvoice fail,req:%+v", c.req)
+		return
+	}
+	c.resp.Message = "确认开票成功"
+}
+
+func (c ConfirmInvoiceHandler) checkParam() error {
+	return nil
+}
+
+func newConfirmInvoiceHandler(ctx *gin.Context) *ConfirmInvoiceHandler {
+	return &ConfirmInvoiceHandler{
+		ctx:  ctx,
+		req:  http_model.NewConfirmInvoiceRequest(),
+		resp: http_model.NewConfirmInvoiceResponse(),
+	}
+}

+ 58 - 58
handler/creatblock.go

@@ -1,58 +1,58 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/db"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/util"
-)
-
-func WrapBlockHandler(ctx *gin.Context) {
-	handler := NewBlockHandler(ctx)
-	BaseRun(handler)
-}
-
-func NewBlockHandler(ctx *gin.Context) *BlockHandler {
-	return &BlockHandler{
-		ctx:  ctx,
-		req:  http_model.NewBlockRequest(),
-		resp: http_model.NewBlockResponse(),
-	}
-}
-
-type BlockHandler struct {
-	ctx  *gin.Context
-	req  *http_model.BlockRequest
-	resp *http_model.CommonResponse
-}
-
-func (p BlockHandler) getContext() *gin.Context {
-	return p.ctx
-}
-
-func (p BlockHandler) getResponse() interface{} {
-	return p.resp
-}
-
-func (p BlockHandler) getRequest() interface{} {
-	return p.req
-}
-
-func (p BlockHandler) run() {
-	data := http_model.BlockRequest{}
-	data = *p.req
-	err := db.Block(p.ctx, data)
-	if err != nil {
-		logrus.Errorf("[BlockHandler] call Create err:%+v\n", err)
-		util.HandlerPackErrorResp(p.resp, consts.ErrorInternal, "")
-		logrus.Info("Block fail,req:%+v", p.req)
-		return
-	}
-	p.resp.Message = "处理成功"
-}
-
-func (p BlockHandler) checkParam() error {
-	return nil
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/db"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/util"
+)
+
+func WrapBlockHandler(ctx *gin.Context) {
+	handler := NewBlockHandler(ctx)
+	BaseRun(handler)
+}
+
+func NewBlockHandler(ctx *gin.Context) *BlockHandler {
+	return &BlockHandler{
+		ctx:  ctx,
+		req:  http_model.NewBlockRequest(),
+		resp: http_model.NewBlockResponse(),
+	}
+}
+
+type BlockHandler struct {
+	ctx  *gin.Context
+	req  *http_model.BlockRequest
+	resp *http_model.CommonResponse
+}
+
+func (p BlockHandler) getContext() *gin.Context {
+	return p.ctx
+}
+
+func (p BlockHandler) getResponse() interface{} {
+	return p.resp
+}
+
+func (p BlockHandler) getRequest() interface{} {
+	return p.req
+}
+
+func (p BlockHandler) run() {
+	data := http_model.BlockRequest{}
+	data = *p.req
+	err := db.Block(p.ctx, data)
+	if err != nil {
+		logrus.Errorf("[BlockHandler] call Create err:%+v\n", err)
+		util.HandlerPackErrorResp(p.resp, consts.ErrorInternal, "")
+		logrus.Info("Block fail,req:%+v", p.req)
+		return
+	}
+	p.resp.Message = "处理成功"
+}
+
+func (p BlockHandler) checkParam() error {
+	return nil
+}

+ 72 - 72
handler/createSpecialLogistics.go

@@ -1,72 +1,72 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-)
-
-func WrapCreateSpecialLogisticsHandler(ctx *gin.Context) {
-	handler := newCreateSpecialLogisticsHandler(ctx)
-	BaseRun(handler)
-}
-
-type CreateSpecialLogistics struct {
-	ctx  *gin.Context
-	req  *http_model.CreateSpecialLogisticsRequest
-	resp *http_model.CommonResponse
-}
-
-func (c CreateSpecialLogistics) getContext() *gin.Context {
-	return c.ctx
-}
-
-func (c CreateSpecialLogistics) getResponse() interface{} {
-	return c.resp
-}
-
-func (c CreateSpecialLogistics) getRequest() interface{} {
-	return c.req
-}
-
-func (c CreateSpecialLogistics) run() {
-	data := http_model.CreateSpecialLogisticsRequest{}
-	data = *c.req
-	isUpdate := data.IsUpdate
-	if isUpdate == 0 {
-		res, err := service.Logistics.CreateSpecialLogistics(c.ctx, data)
-		if err != nil {
-			logrus.Errorf("[CreateSpecialLogistics] call Create err:%+v\n", err)
-			util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, "")
-			logrus.Info("CreateSpecialLogistics fail,req:%+v", c.req)
-			return
-		}
-		c.resp.Message = "成功添加物流信息"
-		c.resp.Data = res
-	} else {
-		res, err := service.Logistics.UpdateSpecialLogistics(c.ctx, data)
-		if err != nil {
-			logrus.Errorf("[CreateSpecialLogistics] call Create err:%+v\n", err)
-			util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, "")
-			logrus.Info("CreateSpecialLogistics fail,req:%+v", c.req)
-			return
-		}
-		c.resp.Message = "成功修改物流信息"
-		c.resp.Data = res
-	}
-}
-
-func (c CreateSpecialLogistics) checkParam() error {
-	return nil
-}
-
-func newCreateSpecialLogisticsHandler(ctx *gin.Context) *CreateSpecialLogistics {
-	return &CreateSpecialLogistics{
-		ctx:  ctx,
-		req:  http_model.NewCreateSpecialLogisticsRequest(),
-		resp: http_model.NewCreateSpecialLogisticsResponse(),
-	}
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+)
+
+func WrapCreateSpecialLogisticsHandler(ctx *gin.Context) {
+	handler := newCreateSpecialLogisticsHandler(ctx)
+	BaseRun(handler)
+}
+
+type CreateSpecialLogistics struct {
+	ctx  *gin.Context
+	req  *http_model.CreateSpecialLogisticsRequest
+	resp *http_model.CommonResponse
+}
+
+func (c CreateSpecialLogistics) getContext() *gin.Context {
+	return c.ctx
+}
+
+func (c CreateSpecialLogistics) getResponse() interface{} {
+	return c.resp
+}
+
+func (c CreateSpecialLogistics) getRequest() interface{} {
+	return c.req
+}
+
+func (c CreateSpecialLogistics) run() {
+	data := http_model.CreateSpecialLogisticsRequest{}
+	data = *c.req
+	isUpdate := data.IsUpdate
+	if isUpdate == 0 {
+		res, err := service.Logistics.CreateSpecialLogistics(c.ctx, data)
+		if err != nil {
+			logrus.Errorf("[CreateSpecialLogistics] call Create err:%+v\n", err)
+			util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, "")
+			logrus.Info("CreateSpecialLogistics fail,req:%+v", c.req)
+			return
+		}
+		c.resp.Message = "成功添加物流信息"
+		c.resp.Data = res
+	} else {
+		res, err := service.Logistics.UpdateSpecialLogistics(c.ctx, data)
+		if err != nil {
+			logrus.Errorf("[CreateSpecialLogistics] call Create err:%+v\n", err)
+			util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, "")
+			logrus.Info("CreateSpecialLogistics fail,req:%+v", c.req)
+			return
+		}
+		c.resp.Message = "成功修改物流信息"
+		c.resp.Data = res
+	}
+}
+
+func (c CreateSpecialLogistics) checkParam() error {
+	return nil
+}
+
+func newCreateSpecialLogisticsHandler(ctx *gin.Context) *CreateSpecialLogistics {
+	return &CreateSpecialLogistics{
+		ctx:  ctx,
+		req:  http_model.NewCreateSpecialLogisticsRequest(),
+		resp: http_model.NewCreateSpecialLogisticsResponse(),
+	}
+}

+ 63 - 63
handler/create_user.go

@@ -1,63 +1,63 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/db"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/util"
-)
-
-func WrapCreateUserHandler(ctx *gin.Context) {
-	handler := newCreateUserHandler(ctx)
-	BaseRun(handler)
-}
-
-func newCreateUserHandler(ctx *gin.Context) *CreateUserHandler {
-	return &CreateUserHandler{
-		req:  http_model.NewCreateUserRequest(),
-		resp: http_model.NewCreateUserResponse(),
-		ctx:  ctx,
-	}
-}
-
-type CreateUserHandler struct {
-	req  *http_model.CreateUserRequest
-	resp *http_model.CommonResponse
-	ctx  *gin.Context
-}
-
-func (c CreateUserHandler) getContext() *gin.Context {
-	return c.ctx
-}
-
-func (c CreateUserHandler) getResponse() interface{} {
-	return c.resp
-}
-
-func (c CreateUserHandler) getRequest() interface{} {
-	return c.req
-}
-
-func (c CreateUserHandler) run() {
-	toast, err := db.CreateUser(c.ctx, c.req)
-	if err != nil {
-		// 数据库查询失败,返回5001
-		logrus.Errorf("[CreateUserHandler] call CreateUser err:%+v\n", err)
-		util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, "")
-		logrus.Info("CreateUserHandler fail,req:%+v", c.req)
-		return
-	}
-	if toast == "创建成功" {
-		c.resp.Message = "创建成功"
-	} else if toast == "手机号已存在,不能再次创建" {
-		c.resp.Status = 1
-	} else {
-		c.resp.Status = 2
-	}
-}
-
-func (c CreateUserHandler) checkParam() error {
-	return nil
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/db"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/util"
+)
+
+func WrapCreateUserHandler(ctx *gin.Context) {
+	handler := newCreateUserHandler(ctx)
+	BaseRun(handler)
+}
+
+func newCreateUserHandler(ctx *gin.Context) *CreateUserHandler {
+	return &CreateUserHandler{
+		req:  http_model.NewCreateUserRequest(),
+		resp: http_model.NewCreateUserResponse(),
+		ctx:  ctx,
+	}
+}
+
+type CreateUserHandler struct {
+	req  *http_model.CreateUserRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (c CreateUserHandler) getContext() *gin.Context {
+	return c.ctx
+}
+
+func (c CreateUserHandler) getResponse() interface{} {
+	return c.resp
+}
+
+func (c CreateUserHandler) getRequest() interface{} {
+	return c.req
+}
+
+func (c CreateUserHandler) run() {
+	toast, err := db.CreateUser(c.ctx, c.req)
+	if err != nil {
+		// 数据库查询失败,返回5001
+		logrus.Errorf("[CreateUserHandler] call CreateUser err:%+v\n", err)
+		util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, "")
+		logrus.Info("CreateUserHandler fail,req:%+v", c.req)
+		return
+	}
+	if toast == "创建成功" {
+		c.resp.Message = "创建成功"
+	} else if toast == "手机号已存在,不能再次创建" {
+		c.resp.Status = 1
+	} else {
+		c.resp.Status = 2
+	}
+}
+
+func (c CreateUserHandler) checkParam() error {
+	return nil
+}

+ 67 - 67
handler/creator_list.go

@@ -1,67 +1,67 @@
-package handler
-
-import (
-	"errors"
-	"fmt"
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/pack"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-)
-
-func WrapCreatorListHandler(ctx *gin.Context) {
-	handler := newCreatorListHandler(ctx)
-	BaseRun(handler)
-}
-
-func newCreatorListHandler(ctx *gin.Context) *CreatorList {
-	return &CreatorList{
-		req:  http_model.NewCreatorListRequest(),
-		resp: http_model.NewCreatorListResponse(),
-		ctx:  ctx,
-	}
-}
-
-type CreatorList struct {
-	req  *http_model.CreatorListRequest
-	resp *http_model.CommonResponse
-	ctx  *gin.Context
-}
-
-func (c CreatorList) getContext() *gin.Context {
-	return c.ctx
-}
-
-func (c CreatorList) getResponse() interface{} {
-	return c.resp
-}
-
-func (c CreatorList) getRequest() interface{} {
-	return c.req
-}
-
-func (c CreatorList) run() {
-	conditions := pack.HttpCreatorListRequestToCondition(c.req)
-	data, err := service.User.CreatorList(c.ctx, c.req.PageSize, c.req.PageNum, conditions)
-	if err != nil {
-		logrus.WithContext(c.ctx).Errorf("[EnterpriseUserHandler] error EnterpriseUserList, err:%+v", err)
-		util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, consts.DefaultToast)
-		return
-	}
-	c.resp.Data = data
-}
-
-func (c CreatorList) checkParam() error {
-	var errs []error
-	if c.req.PageNum < 0 || c.req.PageSize <= 0 {
-		errs = append(errs, errors.New("page param error"))
-	}
-	c.req.PageNum--
-	if len(errs) != 0 {
-		return fmt.Errorf("CreatorList check param errs:%+v", errs)
-	}
-	return nil
-}
+package handler
+
+import (
+	"errors"
+	"fmt"
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/pack"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+)
+
+func WrapCreatorListHandler(ctx *gin.Context) {
+	handler := newCreatorListHandler(ctx)
+	BaseRun(handler)
+}
+
+func newCreatorListHandler(ctx *gin.Context) *CreatorList {
+	return &CreatorList{
+		req:  http_model.NewCreatorListRequest(),
+		resp: http_model.NewCreatorListResponse(),
+		ctx:  ctx,
+	}
+}
+
+type CreatorList struct {
+	req  *http_model.CreatorListRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (c CreatorList) getContext() *gin.Context {
+	return c.ctx
+}
+
+func (c CreatorList) getResponse() interface{} {
+	return c.resp
+}
+
+func (c CreatorList) getRequest() interface{} {
+	return c.req
+}
+
+func (c CreatorList) run() {
+	conditions := pack.HttpCreatorListRequestToCondition(c.req)
+	data, err := service.User.CreatorList(c.ctx, c.req.PageSize, c.req.PageNum, conditions)
+	if err != nil {
+		logrus.WithContext(c.ctx).Errorf("[EnterpriseUserHandler] error EnterpriseUserList, err:%+v", err)
+		util.HandlerPackErrorResp(c.resp, consts.ErrorInternal, consts.DefaultToast)
+		return
+	}
+	c.resp.Data = data
+}
+
+func (c CreatorList) checkParam() error {
+	var errs []error
+	if c.req.PageNum < 0 || c.req.PageSize <= 0 {
+		errs = append(errs, errors.New("page param error"))
+	}
+	c.req.PageNum--
+	if len(errs) != 0 {
+		return fmt.Errorf("CreatorList check param errs:%+v", errs)
+	}
+	return nil
+}

+ 58 - 58
handler/data_number_info.go

@@ -1,58 +1,58 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	log "github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-)
-
-func WrapGetDataNumberInfoHandler(ctx *gin.Context) {
-	handler := newGetDataNumberInfoHandler(ctx)
-	BaseRun(handler)
-}
-
-func newGetDataNumberInfoHandler(ctx *gin.Context) *GetDataNumberInfoHandler {
-	return &GetDataNumberInfoHandler{
-		req:  http_model.NewGetDataNumberInfoRequest(),
-		resp: http_model.NewGetDataNumberInfoResponse(),
-		ctx:  ctx,
-	}
-}
-
-type GetDataNumberInfoHandler struct {
-	req  *http_model.GetDataNumberInfoRequest
-	resp *http_model.CommonResponse
-	ctx  *gin.Context
-}
-
-func (h *GetDataNumberInfoHandler) getRequest() interface{} {
-	return h.req
-}
-func (h *GetDataNumberInfoHandler) getContext() *gin.Context {
-	return h.ctx
-}
-func (h *GetDataNumberInfoHandler) getResponse() interface{} {
-	return h.resp
-}
-
-func (h *GetDataNumberInfoHandler) run() {
-	data := http_model.GetDataNumberInfoRequest{}
-	data = *h.req
-	res, err := service.Number.GetDataNumberInfo(h.ctx, data)
-	if err != nil {
-		logrus.Errorf("[GetDataNumberInfoHandler] call GetDataNumberInfo err:%+v\n", err)
-		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
-		log.Info("GetDataNumberInfo fail,req:%+v", h.req)
-		return
-	}
-	h.resp.Message = ""
-	h.resp.Data = res
-}
-
-func (h *GetDataNumberInfoHandler) checkParam() error {
-	return nil
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	log "github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+)
+
+func WrapGetDataNumberInfoHandler(ctx *gin.Context) {
+	handler := newGetDataNumberInfoHandler(ctx)
+	BaseRun(handler)
+}
+
+func newGetDataNumberInfoHandler(ctx *gin.Context) *GetDataNumberInfoHandler {
+	return &GetDataNumberInfoHandler{
+		req:  http_model.NewGetDataNumberInfoRequest(),
+		resp: http_model.NewGetDataNumberInfoResponse(),
+		ctx:  ctx,
+	}
+}
+
+type GetDataNumberInfoHandler struct {
+	req  *http_model.GetDataNumberInfoRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *GetDataNumberInfoHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *GetDataNumberInfoHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *GetDataNumberInfoHandler) getResponse() interface{} {
+	return h.resp
+}
+
+func (h *GetDataNumberInfoHandler) run() {
+	data := http_model.GetDataNumberInfoRequest{}
+	data = *h.req
+	res, err := service.Number.GetDataNumberInfo(h.ctx, data)
+	if err != nil {
+		logrus.Errorf("[GetDataNumberInfoHandler] call GetDataNumberInfo err:%+v\n", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+		log.Info("GetDataNumberInfo fail,req:%+v", h.req)
+		return
+	}
+	h.resp.Message = ""
+	h.resp.Data = res
+}
+
+func (h *GetDataNumberInfoHandler) checkParam() error {
+	return nil
+}

+ 89 - 89
handler/data_opinion.go

@@ -1,89 +1,89 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	log "github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-)
-
-func WrapDataOpinionHandler(ctx *gin.Context) {
-	handler := newDataOpinionHandler(ctx)
-	BaseRun(handler)
-}
-
-func newDataOpinionHandler(ctx *gin.Context) *DataOpinionHandler {
-	return &DataOpinionHandler{
-		req:  http_model.NewDataOpinionRequest(),
-		resp: http_model.NewDataOpinionResponse(),
-		ctx:  ctx,
-	}
-}
-
-type DataOpinionHandler struct {
-	req  *http_model.DataOpinionRequest
-	resp *http_model.CommonResponse
-	ctx  *gin.Context
-}
-
-func (h *DataOpinionHandler) getRequest() interface{} {
-	return h.req
-}
-func (h *DataOpinionHandler) getContext() *gin.Context {
-	return h.ctx
-}
-func (h *DataOpinionHandler) getResponse() interface{} {
-	return h.resp
-}
-
-func (h *DataOpinionHandler) run() {
-	data := http_model.DataOpinionRequest{}
-	data = *h.req
-	res, err := service.Data.DataOpinion(h.ctx, data)
-	if err != nil {
-		logrus.Errorf("[DataOpinionHandler] call Create err:%+v\n", err)
-		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
-		log.Info("CreateProject fail,req:%+v", h.req)
-		return
-	}
-	h.resp.Message = "提交数据审核意见成功"
-	h.resp.Data = res
-	h.resp.Data = data
-}
-
-/***
-func (h *DataOpinionHandler) run() {
-	data := http_model.DataOpinionRequest{}
-	data = *h.req
-	isRefuse := data.IsRefuse
-	if isRefuse== 0 {
-		fmt.Println("Create in")
-		res, err := service.Project.Create(h.ctx, data)
-		if err != nil {
-			logrus.Errorf("[DataOpinionHandler] call Create err:%+v\n", err)
-			util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
-			log.Info("CreateProject fail,req:%+v", h.req)
-			return
-		}
-		h.resp.Message = "成功添加修改意见"
-		h.resp.Data = res
-	} else {
-		res, err := service.Logistics.Update(h.ctx, data)
-		if err != nil {
-			logrus.Errorf("[DataOpinionHandler] call Create err:%+v\n", err)
-			util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
-			log.Info("CreateProject fail,req:%+v", h.req)
-			return
-		}
-		h.resp.Message = "成功修改物流信息"
-		h.resp.Data = res
-	}
-
-}
-***/
-func (h *DataOpinionHandler) checkParam() error {
-	return nil
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	log "github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+)
+
+func WrapDataOpinionHandler(ctx *gin.Context) {
+	handler := newDataOpinionHandler(ctx)
+	BaseRun(handler)
+}
+
+func newDataOpinionHandler(ctx *gin.Context) *DataOpinionHandler {
+	return &DataOpinionHandler{
+		req:  http_model.NewDataOpinionRequest(),
+		resp: http_model.NewDataOpinionResponse(),
+		ctx:  ctx,
+	}
+}
+
+type DataOpinionHandler struct {
+	req  *http_model.DataOpinionRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *DataOpinionHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *DataOpinionHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *DataOpinionHandler) getResponse() interface{} {
+	return h.resp
+}
+
+func (h *DataOpinionHandler) run() {
+	data := http_model.DataOpinionRequest{}
+	data = *h.req
+	res, err := service.Data.DataOpinion(h.ctx, data)
+	if err != nil {
+		logrus.Errorf("[DataOpinionHandler] call Create err:%+v\n", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+		log.Info("CreateProject fail,req:%+v", h.req)
+		return
+	}
+	h.resp.Message = "提交数据审核意见成功"
+	h.resp.Data = res
+	h.resp.Data = data
+}
+
+/***
+func (h *DataOpinionHandler) run() {
+	data := http_model.DataOpinionRequest{}
+	data = *h.req
+	isRefuse := data.IsRefuse
+	if isRefuse== 0 {
+		fmt.Println("Create in")
+		res, err := service.Project.Create(h.ctx, data)
+		if err != nil {
+			logrus.Errorf("[DataOpinionHandler] call Create err:%+v\n", err)
+			util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+			log.Info("CreateProject fail,req:%+v", h.req)
+			return
+		}
+		h.resp.Message = "成功添加修改意见"
+		h.resp.Data = res
+	} else {
+		res, err := service.Logistics.Update(h.ctx, data)
+		if err != nil {
+			logrus.Errorf("[DataOpinionHandler] call Create err:%+v\n", err)
+			util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+			log.Info("CreateProject fail,req:%+v", h.req)
+			return
+		}
+		h.resp.Message = "成功修改物流信息"
+		h.resp.Data = res
+	}
+
+}
+***/
+func (h *DataOpinionHandler) checkParam() error {
+	return nil
+}

+ 58 - 58
handler/default_number_info.go

@@ -1,58 +1,58 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	log "github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-)
-
-func WrapGetDefaultNumberInfoHandler(ctx *gin.Context) {
-	handler := newGetDefaultNumberInfoHandler(ctx)
-	BaseRun(handler)
-}
-
-func newGetDefaultNumberInfoHandler(ctx *gin.Context) *GetDefaultNumberInfoHandler {
-	return &GetDefaultNumberInfoHandler{
-		req:  http_model.NewGetDefaultNumberInfoRequest(),
-		resp: http_model.NewGetDefaultNumberInfoResponse(),
-		ctx:  ctx,
-	}
-}
-
-type GetDefaultNumberInfoHandler struct {
-	req  *http_model.GetDefaultNumberInfoRequest
-	resp *http_model.CommonResponse
-	ctx  *gin.Context
-}
-
-func (h *GetDefaultNumberInfoHandler) getRequest() interface{} {
-	return h.req
-}
-func (h *GetDefaultNumberInfoHandler) getContext() *gin.Context {
-	return h.ctx
-}
-func (h *GetDefaultNumberInfoHandler) getResponse() interface{} {
-	return h.resp
-}
-
-func (h *GetDefaultNumberInfoHandler) run() {
-	data := http_model.GetDefaultNumberInfoRequest{}
-	data = *h.req
-	res, err := service.Number.GetDefaultNumberInfo(h.ctx, data)
-	if err != nil {
-		logrus.Errorf("[GetDefaultNumberInfoHandler] call GetDefaultNumberInfo err:%+v\n", err)
-		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
-		log.Info("GetDefaultNumberInfo fail,req:%+v", h.req)
-		return
-	}
-	h.resp.Message = ""
-	h.resp.Data = res
-}
-
-func (h *GetDefaultNumberInfoHandler) checkParam() error {
-	return nil
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	log "github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+)
+
+func WrapGetDefaultNumberInfoHandler(ctx *gin.Context) {
+	handler := newGetDefaultNumberInfoHandler(ctx)
+	BaseRun(handler)
+}
+
+func newGetDefaultNumberInfoHandler(ctx *gin.Context) *GetDefaultNumberInfoHandler {
+	return &GetDefaultNumberInfoHandler{
+		req:  http_model.NewGetDefaultNumberInfoRequest(),
+		resp: http_model.NewGetDefaultNumberInfoResponse(),
+		ctx:  ctx,
+	}
+}
+
+type GetDefaultNumberInfoHandler struct {
+	req  *http_model.GetDefaultNumberInfoRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *GetDefaultNumberInfoHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *GetDefaultNumberInfoHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *GetDefaultNumberInfoHandler) getResponse() interface{} {
+	return h.resp
+}
+
+func (h *GetDefaultNumberInfoHandler) run() {
+	data := http_model.GetDefaultNumberInfoRequest{}
+	data = *h.req
+	res, err := service.Number.GetDefaultNumberInfo(h.ctx, data)
+	if err != nil {
+		logrus.Errorf("[GetDefaultNumberInfoHandler] call GetDefaultNumberInfo err:%+v\n", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+		log.Info("GetDefaultNumberInfo fail,req:%+v", h.req)
+		return
+	}
+	h.resp.Message = ""
+	h.resp.Data = res
+}
+
+func (h *GetDefaultNumberInfoHandler) checkParam() error {
+	return nil
+}

+ 55 - 55
handler/deletePhotoUrl.go

@@ -1,55 +1,55 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/db"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/util"
-)
-
-func WrapDeletePhotoUrlHandler(ctx *gin.Context) {
-	handler := newDeletePhotoUrl(ctx)
-	BaseRun(handler)
-}
-
-type DeletePhotoUrl struct {
-	req  *http_model.DeletePhotoUrlRequest
-	resp *http_model.CommonResponse
-	ctx  *gin.Context
-}
-
-func (d DeletePhotoUrl) getContext() *gin.Context {
-	return d.ctx
-}
-
-func (d DeletePhotoUrl) getResponse() interface{} {
-	return d.resp
-}
-
-func (d DeletePhotoUrl) getRequest() interface{} {
-	return d.req
-}
-
-func (d DeletePhotoUrl) run() {
-	err := db.DeletePhotoUrl(d.ctx, d.req.PhotoUrl)
-	if err != nil {
-		logrus.WithContext(d.ctx).Errorf("[DeletePhotoUrl] error DeletePhotoUrl, err:%+v", err)
-		util.HandlerPackErrorResp(d.resp, consts.ErrorInternal, consts.DefaultToast)
-		return
-	}
-	d.resp.Message = "图片删除成功"
-}
-
-func (d DeletePhotoUrl) checkParam() error {
-	return nil
-}
-
-func newDeletePhotoUrl(ctx *gin.Context) *DeletePhotoUrl {
-	return &DeletePhotoUrl{
-		req:  http_model.NewDeletePhotoUrlRequest(),
-		resp: http_model.NewDeletePhotoUrlResponse(),
-		ctx:  ctx,
-	}
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/db"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/util"
+)
+
+func WrapDeletePhotoUrlHandler(ctx *gin.Context) {
+	handler := newDeletePhotoUrl(ctx)
+	BaseRun(handler)
+}
+
+type DeletePhotoUrl struct {
+	req  *http_model.DeletePhotoUrlRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (d DeletePhotoUrl) getContext() *gin.Context {
+	return d.ctx
+}
+
+func (d DeletePhotoUrl) getResponse() interface{} {
+	return d.resp
+}
+
+func (d DeletePhotoUrl) getRequest() interface{} {
+	return d.req
+}
+
+func (d DeletePhotoUrl) run() {
+	err := db.DeletePhotoUrl(d.ctx, d.req.PhotoUrl)
+	if err != nil {
+		logrus.WithContext(d.ctx).Errorf("[DeletePhotoUrl] error DeletePhotoUrl, err:%+v", err)
+		util.HandlerPackErrorResp(d.resp, consts.ErrorInternal, consts.DefaultToast)
+		return
+	}
+	d.resp.Message = "图片删除成功"
+}
+
+func (d DeletePhotoUrl) checkParam() error {
+	return nil
+}
+
+func newDeletePhotoUrl(ctx *gin.Context) *DeletePhotoUrl {
+	return &DeletePhotoUrl{
+		req:  http_model.NewDeletePhotoUrlRequest(),
+		resp: http_model.NewDeletePhotoUrlResponse(),
+		ctx:  ctx,
+	}
+}

+ 56 - 56
handler/delete_account.go

@@ -1,56 +1,56 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/db"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/util"
-)
-
-func WrapDeleteAccountHandler(ctx *gin.Context) {
-	handler := newDeleteAccountHandler(ctx)
-	BaseRun(handler)
-}
-
-type DeleteAccount struct {
-	ctx  *gin.Context
-	req  *http_model.DeleteAccountRequest
-	resp *http_model.CommonResponse
-}
-
-func (d DeleteAccount) getContext() *gin.Context {
-	return d.ctx
-}
-
-func (d DeleteAccount) getResponse() interface{} {
-	return d.resp
-}
-
-func (d DeleteAccount) getRequest() interface{} {
-	return d.req
-}
-
-func (d DeleteAccount) run() {
-	err := db.DeleteAccount(d.ctx, d.req.PlatformID, d.req.PlatformNickname, d.req.TalentId)
-	if err != nil {
-		logrus.Errorf("[DeleteAccountHandler] call Delete err:%+v\n", err)
-		util.HandlerPackErrorResp(d.resp, consts.ErrorInternal, "")
-		logrus.Info("DeleteAccount fail,req:%+v", d.req)
-		return
-	}
-	d.resp.Message = "解绑成功"
-}
-
-func (d DeleteAccount) checkParam() error {
-	return nil
-}
-
-func newDeleteAccountHandler(ctx *gin.Context) *DeleteAccount {
-	return &DeleteAccount{
-		ctx:  ctx,
-		req:  http_model.NewDeleteAccountRequest(),
-		resp: http_model.NewDeleteAccountResponse(),
-	}
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/db"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/util"
+)
+
+func WrapDeleteAccountHandler(ctx *gin.Context) {
+	handler := newDeleteAccountHandler(ctx)
+	BaseRun(handler)
+}
+
+type DeleteAccount struct {
+	ctx  *gin.Context
+	req  *http_model.DeleteAccountRequest
+	resp *http_model.CommonResponse
+}
+
+func (d DeleteAccount) getContext() *gin.Context {
+	return d.ctx
+}
+
+func (d DeleteAccount) getResponse() interface{} {
+	return d.resp
+}
+
+func (d DeleteAccount) getRequest() interface{} {
+	return d.req
+}
+
+func (d DeleteAccount) run() {
+	err := db.DeleteAccount(d.ctx, d.req.PlatformID, d.req.PlatformNickname, d.req.TalentId)
+	if err != nil {
+		logrus.Errorf("[DeleteAccountHandler] call Delete err:%+v\n", err)
+		util.HandlerPackErrorResp(d.resp, consts.ErrorInternal, "")
+		logrus.Info("DeleteAccount fail,req:%+v", d.req)
+		return
+	}
+	d.resp.Message = "解绑成功"
+}
+
+func (d DeleteAccount) checkParam() error {
+	return nil
+}
+
+func newDeleteAccountHandler(ctx *gin.Context) *DeleteAccount {
+	return &DeleteAccount{
+		ctx:  ctx,
+		req:  http_model.NewDeleteAccountRequest(),
+		resp: http_model.NewDeleteAccountResponse(),
+	}
+}

+ 57 - 57
handler/disabled_user.go

@@ -1,57 +1,57 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/db"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/util"
-)
-
-func WrapDisabledUserHandler(ctx *gin.Context) {
-	handler := newDisabledUserHandler(ctx)
-	BaseRun(handler)
-}
-
-func newDisabledUserHandler(ctx *gin.Context) *DisabledUserHandler {
-	return &DisabledUserHandler{
-		req:  http_model.NewDisabledUserRequest(),
-		resp: http_model.NewDisabledUserResponse(),
-		ctx:  ctx,
-	}
-}
-
-type DisabledUserHandler struct {
-	req  *http_model.DisabledUserRequest
-	resp *http_model.CommonResponse
-	ctx  *gin.Context
-}
-
-func (d DisabledUserHandler) getContext() *gin.Context {
-	return d.ctx
-}
-
-func (d DisabledUserHandler) getResponse() interface{} {
-	return d.resp
-}
-
-func (d DisabledUserHandler) getRequest() interface{} {
-	return d.req
-}
-
-func (d DisabledUserHandler) run() {
-	toast, err := db.DisabledUser(d.ctx, d.req.User)
-	if err != nil {
-		// 数据库查询失败,返回5001
-		logrus.Errorf("[DisabledUserHandler] call DisabledUser err:%+v\n", err)
-		util.HandlerPackErrorResp(d.resp, consts.ErrorInternal, "")
-		logrus.Info("DisabledUserHandler fail,req:%+v", d.req)
-		return
-	}
-	d.resp.Message = toast
-}
-
-func (d DisabledUserHandler) checkParam() error {
-	return nil
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/db"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/util"
+)
+
+func WrapDisabledUserHandler(ctx *gin.Context) {
+	handler := newDisabledUserHandler(ctx)
+	BaseRun(handler)
+}
+
+func newDisabledUserHandler(ctx *gin.Context) *DisabledUserHandler {
+	return &DisabledUserHandler{
+		req:  http_model.NewDisabledUserRequest(),
+		resp: http_model.NewDisabledUserResponse(),
+		ctx:  ctx,
+	}
+}
+
+type DisabledUserHandler struct {
+	req  *http_model.DisabledUserRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (d DisabledUserHandler) getContext() *gin.Context {
+	return d.ctx
+}
+
+func (d DisabledUserHandler) getResponse() interface{} {
+	return d.resp
+}
+
+func (d DisabledUserHandler) getRequest() interface{} {
+	return d.req
+}
+
+func (d DisabledUserHandler) run() {
+	toast, err := db.DisabledUser(d.ctx, d.req.User)
+	if err != nil {
+		// 数据库查询失败,返回5001
+		logrus.Errorf("[DisabledUserHandler] call DisabledUser err:%+v\n", err)
+		util.HandlerPackErrorResp(d.resp, consts.ErrorInternal, "")
+		logrus.Info("DisabledUserHandler fail,req:%+v", d.req)
+		return
+	}
+	d.resp.Message = toast
+}
+
+func (d DisabledUserHandler) checkParam() error {
+	return nil
+}

+ 67 - 67
handler/enterprise_user.go

@@ -1,67 +1,67 @@
-package handler
-
-import (
-	"errors"
-	"fmt"
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/pack"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-)
-
-func WrapEnterpriseUserHandler(ctx *gin.Context) {
-	handler := newEnterpriseUser(ctx)
-	BaseRun(handler)
-}
-
-func newEnterpriseUser(ctx *gin.Context) *EnterpriseUser {
-	return &EnterpriseUser{
-		req:  http_model.NewEnterpriseUserRequest(),
-		resp: http_model.NewEnterpriseUserResponse(),
-		ctx:  ctx,
-	}
-}
-
-type EnterpriseUser struct {
-	req  *http_model.EnterpriseUserRequest
-	resp *http_model.CommonResponse
-	ctx  *gin.Context
-}
-
-func (e EnterpriseUser) getContext() *gin.Context {
-	return e.ctx
-}
-
-func (e EnterpriseUser) getResponse() interface{} {
-	return e.resp
-}
-
-func (e EnterpriseUser) getRequest() interface{} {
-	return e.req
-}
-
-func (e EnterpriseUser) run() {
-	condition := pack.HttpEnterpriseUserRequestToCondition(e.req)
-	data, err := service.User.EnterpriseUserList(e.ctx, e.req.PageSize, e.req.PageNum, condition)
-	if err != nil {
-		logrus.WithContext(e.ctx).Errorf("[EnterpriseUserHandler] error EnterpriseUserList, err:%+v", err)
-		util.HandlerPackErrorResp(e.resp, consts.ErrorInternal, consts.DefaultToast)
-		return
-	}
-	e.resp.Data = data
-}
-
-func (e EnterpriseUser) checkParam() error {
-	var errs []error
-	if e.req.PageNum < 0 || e.req.PageSize <= 0 {
-		errs = append(errs, errors.New("page param error"))
-	}
-	e.req.PageNum--
-	if len(errs) != 0 {
-		return fmt.Errorf("EnterpriseUser check param errs:%+v", errs)
-	}
-	return nil
-}
+package handler
+
+import (
+	"errors"
+	"fmt"
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/pack"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+)
+
+func WrapEnterpriseUserHandler(ctx *gin.Context) {
+	handler := newEnterpriseUser(ctx)
+	BaseRun(handler)
+}
+
+func newEnterpriseUser(ctx *gin.Context) *EnterpriseUser {
+	return &EnterpriseUser{
+		req:  http_model.NewEnterpriseUserRequest(),
+		resp: http_model.NewEnterpriseUserResponse(),
+		ctx:  ctx,
+	}
+}
+
+type EnterpriseUser struct {
+	req  *http_model.EnterpriseUserRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (e EnterpriseUser) getContext() *gin.Context {
+	return e.ctx
+}
+
+func (e EnterpriseUser) getResponse() interface{} {
+	return e.resp
+}
+
+func (e EnterpriseUser) getRequest() interface{} {
+	return e.req
+}
+
+func (e EnterpriseUser) run() {
+	condition := pack.HttpEnterpriseUserRequestToCondition(e.req)
+	data, err := service.User.EnterpriseUserList(e.ctx, e.req.PageSize, e.req.PageNum, condition)
+	if err != nil {
+		logrus.WithContext(e.ctx).Errorf("[EnterpriseUserHandler] error EnterpriseUserList, err:%+v", err)
+		util.HandlerPackErrorResp(e.resp, consts.ErrorInternal, consts.DefaultToast)
+		return
+	}
+	e.resp.Data = data
+}
+
+func (e EnterpriseUser) checkParam() error {
+	var errs []error
+	if e.req.PageNum < 0 || e.req.PageSize <= 0 {
+		errs = append(errs, errors.New("page param error"))
+	}
+	e.req.PageNum--
+	if len(errs) != 0 {
+		return fmt.Errorf("EnterpriseUser check param errs:%+v", errs)
+	}
+	return nil
+}

+ 58 - 58
handler/findAllProduct.go

@@ -1,58 +1,58 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-)
-
-func WrapFindAllProductHandler(ctx *gin.Context) {
-	handler := newFindAllProductHandler(ctx)
-	BaseRun(handler)
-}
-
-type AllProductHandler struct {
-	ctx  *gin.Context
-	req  *http_model.FindAllProductsRequest
-	resp *http_model.CommonResponse
-}
-
-func (a AllProductHandler) getContext() *gin.Context {
-	return a.ctx
-}
-
-func (a AllProductHandler) getResponse() interface{} {
-	return a.resp
-}
-
-func (a AllProductHandler) getRequest() interface{} {
-	return a.req
-}
-
-func (a AllProductHandler) run() {
-	res, err := service.Product.FindAll(a.ctx, a.req.EnterpriseID)
-	if err != nil {
-		// 数据库查询失败,返回5001
-		logrus.Errorf("[FindAllProductHandler] call FindAll err:%+v\n", err)
-		util.HandlerPackErrorResp(a.resp, consts.ErrorInternal, "")
-		logrus.Info("FindAllProduct fail,req:%+v", a.req)
-		return
-	}
-	// h.resp.Message = "查询成功"
-	a.resp.Data = res
-}
-
-func (a AllProductHandler) checkParam() error {
-	return nil
-}
-
-func newFindAllProductHandler(ctx *gin.Context) *AllProductHandler {
-	return &AllProductHandler{
-		ctx:  ctx,
-		req:  http_model.NewFindAllProductsRequest(),
-		resp: http_model.NewFindAllProductsResponse(),
-	}
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+)
+
+func WrapFindAllProductHandler(ctx *gin.Context) {
+	handler := newFindAllProductHandler(ctx)
+	BaseRun(handler)
+}
+
+type AllProductHandler struct {
+	ctx  *gin.Context
+	req  *http_model.FindAllProductsRequest
+	resp *http_model.CommonResponse
+}
+
+func (a AllProductHandler) getContext() *gin.Context {
+	return a.ctx
+}
+
+func (a AllProductHandler) getResponse() interface{} {
+	return a.resp
+}
+
+func (a AllProductHandler) getRequest() interface{} {
+	return a.req
+}
+
+func (a AllProductHandler) run() {
+	res, err := service.Product.FindAll(a.ctx, a.req.EnterpriseID)
+	if err != nil {
+		// 数据库查询失败,返回5001
+		logrus.Errorf("[FindAllProductHandler] call FindAll err:%+v\n", err)
+		util.HandlerPackErrorResp(a.resp, consts.ErrorInternal, "")
+		logrus.Info("FindAllProduct fail,req:%+v", a.req)
+		return
+	}
+	// h.resp.Message = "查询成功"
+	a.resp.Data = res
+}
+
+func (a AllProductHandler) checkParam() error {
+	return nil
+}
+
+func newFindAllProductHandler(ctx *gin.Context) *AllProductHandler {
+	return &AllProductHandler{
+		ctx:  ctx,
+		req:  http_model.NewFindAllProductsRequest(),
+		resp: http_model.NewFindAllProductsResponse(),
+	}
+}

+ 58 - 58
handler/finish_number_info.go

@@ -1,58 +1,58 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	log "github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-)
-
-func WrapGetFinishNumberInfoHandler(ctx *gin.Context) {
-	handler := newGetFinishNumberInfoHandler(ctx)
-	BaseRun(handler)
-}
-
-func newGetFinishNumberInfoHandler(ctx *gin.Context) *GetFinishNumberInfoHandler {
-	return &GetFinishNumberInfoHandler{
-		req:  http_model.NewGetFinishNumberInfoRequest(),
-		resp: http_model.NewGetFinishNumberInfoResponse(),
-		ctx:  ctx,
-	}
-}
-
-type GetFinishNumberInfoHandler struct {
-	req  *http_model.GetFinishNumberInfoRequest
-	resp *http_model.CommonResponse
-	ctx  *gin.Context
-}
-
-func (h *GetFinishNumberInfoHandler) getRequest() interface{} {
-	return h.req
-}
-func (h *GetFinishNumberInfoHandler) getContext() *gin.Context {
-	return h.ctx
-}
-func (h *GetFinishNumberInfoHandler) getResponse() interface{} {
-	return h.resp
-}
-
-func (h *GetFinishNumberInfoHandler) run() {
-	data := http_model.GetFinishNumberInfoRequest{}
-	data = *h.req
-	res, err := service.Number.GetFinishNumberInfo(h.ctx, data)
-	if err != nil {
-		logrus.Errorf("[GetFinishNumberInfoHandler] call GetFinishNumberInfo err:%+v\n", err)
-		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
-		log.Info("GetFinishNumberInfo fail,req:%+v", h.req)
-		return
-	}
-	h.resp.Message = ""
-	h.resp.Data = res
-}
-
-func (h *GetFinishNumberInfoHandler) checkParam() error {
-	return nil
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	log "github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+)
+
+func WrapGetFinishNumberInfoHandler(ctx *gin.Context) {
+	handler := newGetFinishNumberInfoHandler(ctx)
+	BaseRun(handler)
+}
+
+func newGetFinishNumberInfoHandler(ctx *gin.Context) *GetFinishNumberInfoHandler {
+	return &GetFinishNumberInfoHandler{
+		req:  http_model.NewGetFinishNumberInfoRequest(),
+		resp: http_model.NewGetFinishNumberInfoResponse(),
+		ctx:  ctx,
+	}
+}
+
+type GetFinishNumberInfoHandler struct {
+	req  *http_model.GetFinishNumberInfoRequest
+	resp *http_model.CommonResponse
+	ctx  *gin.Context
+}
+
+func (h *GetFinishNumberInfoHandler) getRequest() interface{} {
+	return h.req
+}
+func (h *GetFinishNumberInfoHandler) getContext() *gin.Context {
+	return h.ctx
+}
+func (h *GetFinishNumberInfoHandler) getResponse() interface{} {
+	return h.resp
+}
+
+func (h *GetFinishNumberInfoHandler) run() {
+	data := http_model.GetFinishNumberInfoRequest{}
+	data = *h.req
+	res, err := service.Number.GetFinishNumberInfo(h.ctx, data)
+	if err != nil {
+		logrus.Errorf("[GetFinishNumberInfoHandler] call GetFinishNumberInfo err:%+v\n", err)
+		util.HandlerPackErrorResp(h.resp, consts.ErrorInternal, "")
+		log.Info("GetFinishNumberInfo fail,req:%+v", h.req)
+		return
+	}
+	h.resp.Message = ""
+	h.resp.Data = res
+}
+
+func (h *GetFinishNumberInfoHandler) checkParam() error {
+	return nil
+}

+ 56 - 56
handler/getBankInfo.go

@@ -1,56 +1,56 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/db"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/util"
-)
-
-func WrapGetBankInfoHandler(ctx *gin.Context) {
-	handler := newGetBankInfoHandler(ctx)
-	BaseRun(handler)
-}
-
-type GetBankInfo struct {
-	ctx  *gin.Context
-	req  *http_model.GetBankInfoRequest
-	resp *http_model.CommonResponse
-}
-
-func (g GetBankInfo) getContext() *gin.Context {
-	return g.ctx
-}
-
-func (g GetBankInfo) getResponse() interface{} {
-	return g.resp
-}
-
-func (g GetBankInfo) getRequest() interface{} {
-	return g.req
-}
-
-func (g GetBankInfo) run() {
-	data, err := db.GetBankInfo(g.ctx, g.req)
-	if err != nil {
-		logrus.WithContext(g.ctx).Errorf("[GetBankInfoHandler] error GetBankInfo, err:%+v", err)
-		util.HandlerPackErrorResp(g.resp, consts.ErrorInternal, consts.DefaultToast)
-		return
-	}
-	g.resp.Data = data
-
-}
-
-func (g GetBankInfo) checkParam() error {
-	return nil
-}
-
-func newGetBankInfoHandler(ctx *gin.Context) *GetBankInfo {
-	return &GetBankInfo{
-		ctx:  ctx,
-		req:  http_model.NewGetBankInfoRequest(),
-		resp: http_model.NewGetBankInfoResponse(),
-	}
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/db"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/util"
+)
+
+func WrapGetBankInfoHandler(ctx *gin.Context) {
+	handler := newGetBankInfoHandler(ctx)
+	BaseRun(handler)
+}
+
+type GetBankInfo struct {
+	ctx  *gin.Context
+	req  *http_model.GetBankInfoRequest
+	resp *http_model.CommonResponse
+}
+
+func (g GetBankInfo) getContext() *gin.Context {
+	return g.ctx
+}
+
+func (g GetBankInfo) getResponse() interface{} {
+	return g.resp
+}
+
+func (g GetBankInfo) getRequest() interface{} {
+	return g.req
+}
+
+func (g GetBankInfo) run() {
+	data, err := db.GetBankInfo(g.ctx, g.req)
+	if err != nil {
+		logrus.WithContext(g.ctx).Errorf("[GetBankInfoHandler] error GetBankInfo, err:%+v", err)
+		util.HandlerPackErrorResp(g.resp, consts.ErrorInternal, consts.DefaultToast)
+		return
+	}
+	g.resp.Data = data
+
+}
+
+func (g GetBankInfo) checkParam() error {
+	return nil
+}
+
+func newGetBankInfoHandler(ctx *gin.Context) *GetBankInfo {
+	return &GetBankInfo{
+		ctx:  ctx,
+		req:  http_model.NewGetBankInfoRequest(),
+		resp: http_model.NewGetBankInfoResponse(),
+	}
+}

+ 61 - 61
handler/getCodeUrl.go

@@ -1,61 +1,61 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-)
-
-func WrapGetCodeUrlHandler(ctx *gin.Context) {
-	handler := newGetCodeUrlHandler(ctx)
-	BaseRun(handler)
-}
-
-type getCodeUrlHandler struct {
-	ctx  *gin.Context
-	req  *http_model.GetCodeUrlRequest
-	resp *http_model.CommonResponse
-}
-
-func (g getCodeUrlHandler) getContext() *gin.Context {
-	return g.ctx
-}
-
-func (g getCodeUrlHandler) getResponse() interface{} {
-	return g.resp
-}
-
-func (g getCodeUrlHandler) getRequest() interface{} {
-	return g.req
-}
-
-func (g getCodeUrlHandler) run() {
-	tradeId := util.GetRandomString(32)
-	if g.req.Type == 1 {
-		data, err := service.NativeApiServicePrepay(tradeId, g.req.Amount)
-		if err != nil {
-			logrus.WithContext(g.ctx).Errorf("[ConfirmWithdrawalHandler] error ConfirmWithdrawal, err:%+v", err)
-			util.HandlerPackErrorResp(g.resp, consts.ErrorInternal, consts.DefaultToast)
-			return
-		}
-		codeUrlData := new(http_model.CodeUrl)
-		codeUrlData.CodeUrl = data
-		codeUrlData.TradeId = tradeId
-		g.resp.Data = codeUrlData
-	}
-}
-
-func (g getCodeUrlHandler) checkParam() error {
-	return nil
-}
-
-func newGetCodeUrlHandler(ctx *gin.Context) *getCodeUrlHandler {
-	return &getCodeUrlHandler{
-		ctx:  ctx,
-		req:  http_model.NewGetCodeUrlRequest(),
-		resp: http_model.NewGetCodeUrlResponse(),
-	}
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+)
+
+func WrapGetCodeUrlHandler(ctx *gin.Context) {
+	handler := newGetCodeUrlHandler(ctx)
+	BaseRun(handler)
+}
+
+type getCodeUrlHandler struct {
+	ctx  *gin.Context
+	req  *http_model.GetCodeUrlRequest
+	resp *http_model.CommonResponse
+}
+
+func (g getCodeUrlHandler) getContext() *gin.Context {
+	return g.ctx
+}
+
+func (g getCodeUrlHandler) getResponse() interface{} {
+	return g.resp
+}
+
+func (g getCodeUrlHandler) getRequest() interface{} {
+	return g.req
+}
+
+func (g getCodeUrlHandler) run() {
+	tradeId := util.GetRandomString(32)
+	if g.req.Type == 1 {
+		data, err := service.NativeApiServicePrepay(tradeId, g.req.Amount)
+		if err != nil {
+			logrus.WithContext(g.ctx).Errorf("[ConfirmWithdrawalHandler] error ConfirmWithdrawal, err:%+v", err)
+			util.HandlerPackErrorResp(g.resp, consts.ErrorInternal, consts.DefaultToast)
+			return
+		}
+		codeUrlData := new(http_model.CodeUrl)
+		codeUrlData.CodeUrl = data
+		codeUrlData.TradeId = tradeId
+		g.resp.Data = codeUrlData
+	}
+}
+
+func (g getCodeUrlHandler) checkParam() error {
+	return nil
+}
+
+func newGetCodeUrlHandler(ctx *gin.Context) *getCodeUrlHandler {
+	return &getCodeUrlHandler{
+		ctx:  ctx,
+		req:  http_model.NewGetCodeUrlRequest(),
+		resp: http_model.NewGetCodeUrlResponse(),
+	}
+}

+ 56 - 56
handler/getEnterpriseBalance.go

@@ -1,56 +1,56 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/db"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/util"
-)
-
-func WrapGetEnterpriseBalanceHandler(ctx *gin.Context) {
-	handler := newGetEnterpriseBalanceHandler(ctx)
-	BaseRun(handler)
-}
-
-type GetEnterpriseBalanceHandler struct {
-	ctx  *gin.Context
-	req  *http_model.GetEnterPriseBalanceRequest
-	resp *http_model.CommonResponse
-}
-
-func (g GetEnterpriseBalanceHandler) getContext() *gin.Context {
-	return g.ctx
-}
-
-func (g GetEnterpriseBalanceHandler) getResponse() interface{} {
-	return g.resp
-}
-
-func (g GetEnterpriseBalanceHandler) getRequest() interface{} {
-	return g.req
-}
-
-func (g GetEnterpriseBalanceHandler) run() {
-	data, err := db.GetEnterpriseBalance(g.ctx, g.req.EnterPriseId)
-	if err != nil {
-		logrus.Errorf("[GetEnterpriseBalanceHandler] call Show err:%+v\n", err)
-		util.HandlerPackErrorResp(g.resp, consts.ErrorInternal, "")
-		logrus.Info("GetEnterpriseBalanceHandler fail,req:%+v", g.req)
-		return
-	}
-	g.resp.Data = data
-}
-
-func (g GetEnterpriseBalanceHandler) checkParam() error {
-	return nil
-}
-
-func newGetEnterpriseBalanceHandler(ctx *gin.Context) *GetEnterpriseBalanceHandler {
-	return &GetEnterpriseBalanceHandler{
-		ctx:  ctx,
-		req:  http_model.NewEnterpriseBalanceRequest(),
-		resp: http_model.NewGetEnterpriseBalanceResponse(),
-	}
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/db"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/util"
+)
+
+func WrapGetEnterpriseBalanceHandler(ctx *gin.Context) {
+	handler := newGetEnterpriseBalanceHandler(ctx)
+	BaseRun(handler)
+}
+
+type GetEnterpriseBalanceHandler struct {
+	ctx  *gin.Context
+	req  *http_model.GetEnterPriseBalanceRequest
+	resp *http_model.CommonResponse
+}
+
+func (g GetEnterpriseBalanceHandler) getContext() *gin.Context {
+	return g.ctx
+}
+
+func (g GetEnterpriseBalanceHandler) getResponse() interface{} {
+	return g.resp
+}
+
+func (g GetEnterpriseBalanceHandler) getRequest() interface{} {
+	return g.req
+}
+
+func (g GetEnterpriseBalanceHandler) run() {
+	data, err := db.GetEnterpriseBalance(g.ctx, g.req.EnterPriseId)
+	if err != nil {
+		logrus.Errorf("[GetEnterpriseBalanceHandler] call Show err:%+v\n", err)
+		util.HandlerPackErrorResp(g.resp, consts.ErrorInternal, "")
+		logrus.Info("GetEnterpriseBalanceHandler fail,req:%+v", g.req)
+		return
+	}
+	g.resp.Data = data
+}
+
+func (g GetEnterpriseBalanceHandler) checkParam() error {
+	return nil
+}
+
+func newGetEnterpriseBalanceHandler(ctx *gin.Context) *GetEnterpriseBalanceHandler {
+	return &GetEnterpriseBalanceHandler{
+		ctx:  ctx,
+		req:  http_model.NewEnterpriseBalanceRequest(),
+		resp: http_model.NewGetEnterpriseBalanceResponse(),
+	}
+}

+ 55 - 55
handler/getEnterpriseIds.go

@@ -1,55 +1,55 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/db"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/util"
-)
-
-func WrapGetEnterpriseIdsHandler(ctx *gin.Context) {
-	handler := newGetEnterpriseIdsHandler(ctx)
-	BaseRun(handler)
-}
-
-type GetEnterpriseIdsHandler struct {
-	ctx  *gin.Context
-	req  *http_model.GetEnterPriseIdsRequest
-	resp *http_model.CommonResponse
-}
-
-func (g GetEnterpriseIdsHandler) getContext() *gin.Context {
-	return g.ctx
-}
-
-func (g GetEnterpriseIdsHandler) getResponse() interface{} {
-	return g.resp
-}
-
-func (g GetEnterpriseIdsHandler) getRequest() interface{} {
-	return g.req
-}
-
-func (g GetEnterpriseIdsHandler) run() {
-	data, err := db.GetEnterpriseIds(g.ctx)
-	if err != nil {
-		logrus.WithContext(g.ctx).Errorf("[GetEnterpriseIdsHandler] error GetEnterpriseIds, err:%+v", err)
-		util.HandlerPackErrorResp(g.resp, consts.ErrorInternal, consts.DefaultToast)
-		return
-	}
-	g.resp.Data = data
-}
-
-func (g GetEnterpriseIdsHandler) checkParam() error {
-	return nil
-}
-
-func newGetEnterpriseIdsHandler(ctx *gin.Context) *GetEnterpriseIdsHandler {
-	return &GetEnterpriseIdsHandler{
-		ctx:  ctx,
-		req:  http_model.NewGetEnterpriseIdsRequest(),
-		resp: http_model.NewGetEnterpriseIdsResponse(),
-	}
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/db"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/util"
+)
+
+func WrapGetEnterpriseIdsHandler(ctx *gin.Context) {
+	handler := newGetEnterpriseIdsHandler(ctx)
+	BaseRun(handler)
+}
+
+type GetEnterpriseIdsHandler struct {
+	ctx  *gin.Context
+	req  *http_model.GetEnterPriseIdsRequest
+	resp *http_model.CommonResponse
+}
+
+func (g GetEnterpriseIdsHandler) getContext() *gin.Context {
+	return g.ctx
+}
+
+func (g GetEnterpriseIdsHandler) getResponse() interface{} {
+	return g.resp
+}
+
+func (g GetEnterpriseIdsHandler) getRequest() interface{} {
+	return g.req
+}
+
+func (g GetEnterpriseIdsHandler) run() {
+	data, err := db.GetEnterpriseIds(g.ctx)
+	if err != nil {
+		logrus.WithContext(g.ctx).Errorf("[GetEnterpriseIdsHandler] error GetEnterpriseIds, err:%+v", err)
+		util.HandlerPackErrorResp(g.resp, consts.ErrorInternal, consts.DefaultToast)
+		return
+	}
+	g.resp.Data = data
+}
+
+func (g GetEnterpriseIdsHandler) checkParam() error {
+	return nil
+}
+
+func newGetEnterpriseIdsHandler(ctx *gin.Context) *GetEnterpriseIdsHandler {
+	return &GetEnterpriseIdsHandler{
+		ctx:  ctx,
+		req:  http_model.NewGetEnterpriseIdsRequest(),
+		resp: http_model.NewGetEnterpriseIdsResponse(),
+	}
+}

+ 55 - 55
handler/getInvoiceNums.go

@@ -1,55 +1,55 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/db"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/util"
-)
-
-func WrapGetInvoiceNumsHandler(ctx *gin.Context) {
-	handler := newGetInvoiceNumsHandler(ctx)
-	BaseRun(handler)
-}
-
-type GetInvoiceNumsHandler struct {
-	ctx  *gin.Context
-	req  *http_model.GetInvoiceNumsRequest
-	resp *http_model.CommonResponse
-}
-
-func (g GetInvoiceNumsHandler) getContext() *gin.Context {
-	return g.ctx
-}
-
-func (g GetInvoiceNumsHandler) getResponse() interface{} {
-	return g.resp
-}
-
-func (g GetInvoiceNumsHandler) getRequest() interface{} {
-	return g.req
-}
-
-func (g GetInvoiceNumsHandler) run() {
-	data, err := db.GetInvoiceNums(g.ctx)
-	if err != nil {
-		logrus.WithContext(g.ctx).Errorf("[GetInvoiceNumsHandler] error GetInvoiceNums, err:%+v", err)
-		util.HandlerPackErrorResp(g.resp, consts.ErrorInternal, consts.DefaultToast)
-		return
-	}
-	g.resp.Data = data
-}
-
-func (g GetInvoiceNumsHandler) checkParam() error {
-	return nil
-}
-
-func newGetInvoiceNumsHandler(ctx *gin.Context) *GetInvoiceNumsHandler {
-	return &GetInvoiceNumsHandler{
-		ctx:  ctx,
-		req:  http_model.NewGetInvoiceNumsRequest(),
-		resp: http_model.NewGetInvoiceNumsResponse(),
-	}
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/db"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/util"
+)
+
+func WrapGetInvoiceNumsHandler(ctx *gin.Context) {
+	handler := newGetInvoiceNumsHandler(ctx)
+	BaseRun(handler)
+}
+
+type GetInvoiceNumsHandler struct {
+	ctx  *gin.Context
+	req  *http_model.GetInvoiceNumsRequest
+	resp *http_model.CommonResponse
+}
+
+func (g GetInvoiceNumsHandler) getContext() *gin.Context {
+	return g.ctx
+}
+
+func (g GetInvoiceNumsHandler) getResponse() interface{} {
+	return g.resp
+}
+
+func (g GetInvoiceNumsHandler) getRequest() interface{} {
+	return g.req
+}
+
+func (g GetInvoiceNumsHandler) run() {
+	data, err := db.GetInvoiceNums(g.ctx)
+	if err != nil {
+		logrus.WithContext(g.ctx).Errorf("[GetInvoiceNumsHandler] error GetInvoiceNums, err:%+v", err)
+		util.HandlerPackErrorResp(g.resp, consts.ErrorInternal, consts.DefaultToast)
+		return
+	}
+	g.resp.Data = data
+}
+
+func (g GetInvoiceNumsHandler) checkParam() error {
+	return nil
+}
+
+func newGetInvoiceNumsHandler(ctx *gin.Context) *GetInvoiceNumsHandler {
+	return &GetInvoiceNumsHandler{
+		ctx:  ctx,
+		req:  http_model.NewGetInvoiceNumsRequest(),
+		resp: http_model.NewGetInvoiceNumsResponse(),
+	}
+}

+ 65 - 65
handler/getProduceRecords.go

@@ -1,65 +1,65 @@
-package handler
-
-import (
-	"errors"
-	"fmt"
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/db"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/util"
-)
-
-func WrapGetProjectRecordsHandler(ctx *gin.Context) {
-	handler := newGetProductRecordsHandler(ctx)
-	BaseRun(handler)
-}
-
-type GetProductRecordsHandler struct {
-	ctx  *gin.Context
-	req  *http_model.GetProjectRecordsRequest
-	resp *http_model.CommonResponse
-}
-
-func (g GetProductRecordsHandler) getContext() *gin.Context {
-	return g.ctx
-}
-
-func (g GetProductRecordsHandler) getResponse() interface{} {
-	return g.resp
-}
-
-func (g GetProductRecordsHandler) getRequest() interface{} {
-	return g.req
-}
-
-func (g GetProductRecordsHandler) run() {
-	data, err := db.GetProjectRecords(g.ctx, g.req.UserID, g.req.PageSize, g.req.PageNum)
-	if err != nil {
-		logrus.WithContext(g.ctx).Errorf("[GetProductRecordsHandler] error GetProjectRecords, err:%+v", err)
-		util.HandlerPackErrorResp(g.resp, consts.ErrorInternal, consts.DefaultToast)
-		return
-	}
-	g.resp.Data = data
-}
-
-func (g GetProductRecordsHandler) checkParam() error {
-	var errs []error
-	if g.req.PageNum < 0 || g.req.PageSize <= 0 {
-		errs = append(errs, errors.New("page param error"))
-	}
-	g.req.PageNum--
-	if len(errs) != 0 {
-		return fmt.Errorf("check param errs:%+v", errs)
-	}
-	return nil
-}
-
-func newGetProductRecordsHandler(ctx *gin.Context) *GetProductRecordsHandler {
-	return &GetProductRecordsHandler{
-		ctx:  ctx,
-		req:  http_model.NewGetProjectRecordsRequest(),
-		resp: http_model.NewGetProjectRecordsResponse(),
-	}
-}
+package handler
+
+import (
+	"errors"
+	"fmt"
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/db"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/util"
+)
+
+func WrapGetProjectRecordsHandler(ctx *gin.Context) {
+	handler := newGetProductRecordsHandler(ctx)
+	BaseRun(handler)
+}
+
+type GetProductRecordsHandler struct {
+	ctx  *gin.Context
+	req  *http_model.GetProjectRecordsRequest
+	resp *http_model.CommonResponse
+}
+
+func (g GetProductRecordsHandler) getContext() *gin.Context {
+	return g.ctx
+}
+
+func (g GetProductRecordsHandler) getResponse() interface{} {
+	return g.resp
+}
+
+func (g GetProductRecordsHandler) getRequest() interface{} {
+	return g.req
+}
+
+func (g GetProductRecordsHandler) run() {
+	data, err := db.GetProjectRecords(g.ctx, g.req.UserID, g.req.PageSize, g.req.PageNum)
+	if err != nil {
+		logrus.WithContext(g.ctx).Errorf("[GetProductRecordsHandler] error GetProjectRecords, err:%+v", err)
+		util.HandlerPackErrorResp(g.resp, consts.ErrorInternal, consts.DefaultToast)
+		return
+	}
+	g.resp.Data = data
+}
+
+func (g GetProductRecordsHandler) checkParam() error {
+	var errs []error
+	if g.req.PageNum < 0 || g.req.PageSize <= 0 {
+		errs = append(errs, errors.New("page param error"))
+	}
+	g.req.PageNum--
+	if len(errs) != 0 {
+		return fmt.Errorf("check param errs:%+v", errs)
+	}
+	return nil
+}
+
+func newGetProductRecordsHandler(ctx *gin.Context) *GetProductRecordsHandler {
+	return &GetProductRecordsHandler{
+		ctx:  ctx,
+		req:  http_model.NewGetProjectRecordsRequest(),
+		resp: http_model.NewGetProjectRecordsResponse(),
+	}
+}

+ 55 - 55
handler/getRechargeNums.go

@@ -1,55 +1,55 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/db"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/util"
-)
-
-func WrapGetRechargeNumsHandler(ctx *gin.Context) {
-	handler := newGetRechargeNumsHandler(ctx)
-	BaseRun(handler)
-}
-
-type GetRechargeNumsHandler struct {
-	ctx  *gin.Context
-	req  *http_model.GetRechargeNumsRequest
-	resp *http_model.CommonResponse
-}
-
-func (g GetRechargeNumsHandler) getContext() *gin.Context {
-	return g.ctx
-}
-
-func (g GetRechargeNumsHandler) getResponse() interface{} {
-	return g.resp
-}
-
-func (g GetRechargeNumsHandler) getRequest() interface{} {
-	return g.req
-}
-
-func (g GetRechargeNumsHandler) run() {
-	data, err := db.GetRechargeNums(g.ctx)
-	if err != nil {
-		logrus.WithContext(g.ctx).Errorf("[GetRechargeNumsHandler] error GetRechargeNums, err:%+v", err)
-		util.HandlerPackErrorResp(g.resp, consts.ErrorInternal, consts.DefaultToast)
-		return
-	}
-	g.resp.Data = data
-}
-
-func (g GetRechargeNumsHandler) checkParam() error {
-	return nil
-}
-
-func newGetRechargeNumsHandler(ctx *gin.Context) *GetRechargeNumsHandler {
-	return &GetRechargeNumsHandler{
-		ctx:  ctx,
-		req:  http_model.NewGetRechargeNumsRequest(),
-		resp: http_model.NewGetRechargeNumsResponse(),
-	}
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/db"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/util"
+)
+
+func WrapGetRechargeNumsHandler(ctx *gin.Context) {
+	handler := newGetRechargeNumsHandler(ctx)
+	BaseRun(handler)
+}
+
+type GetRechargeNumsHandler struct {
+	ctx  *gin.Context
+	req  *http_model.GetRechargeNumsRequest
+	resp *http_model.CommonResponse
+}
+
+func (g GetRechargeNumsHandler) getContext() *gin.Context {
+	return g.ctx
+}
+
+func (g GetRechargeNumsHandler) getResponse() interface{} {
+	return g.resp
+}
+
+func (g GetRechargeNumsHandler) getRequest() interface{} {
+	return g.req
+}
+
+func (g GetRechargeNumsHandler) run() {
+	data, err := db.GetRechargeNums(g.ctx)
+	if err != nil {
+		logrus.WithContext(g.ctx).Errorf("[GetRechargeNumsHandler] error GetRechargeNums, err:%+v", err)
+		util.HandlerPackErrorResp(g.resp, consts.ErrorInternal, consts.DefaultToast)
+		return
+	}
+	g.resp.Data = data
+}
+
+func (g GetRechargeNumsHandler) checkParam() error {
+	return nil
+}
+
+func newGetRechargeNumsHandler(ctx *gin.Context) *GetRechargeNumsHandler {
+	return &GetRechargeNumsHandler{
+		ctx:  ctx,
+		req:  http_model.NewGetRechargeNumsRequest(),
+		resp: http_model.NewGetRechargeNumsResponse(),
+	}
+}

+ 68 - 68
handler/getSelectionInfo.go

@@ -1,68 +1,68 @@
-package handler
-
-import (
-	"errors"
-	"fmt"
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/db"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/util"
-)
-
-func WrapGetSelectionInfoHandler(ctx *gin.Context) {
-	handler := newGetSelectionInfoHandler(ctx)
-	BaseRun(handler)
-}
-
-type GetSelectionInfoHandler struct {
-	ctx  *gin.Context
-	req  *http_model.GetSelectionInfoRequest
-	resp *http_model.CommonResponse
-}
-
-func (g GetSelectionInfoHandler) getContext() *gin.Context {
-	return g.ctx
-}
-
-func (g GetSelectionInfoHandler) getResponse() interface{} {
-	return g.resp
-}
-
-func (g GetSelectionInfoHandler) getRequest() interface{} {
-	return g.req
-}
-
-func (g GetSelectionInfoHandler) run() {
-	//condition := pack.HttpRechargeRecordsRequestToCondition(g.req)
-	data, err := db.GetSelectionInfo(g.ctx, g.req)
-	if err != nil {
-		// 数据库查询失败,返回5001
-		logrus.Errorf("[GetSelectionInfoHandler] call GetSelectionInfo err:%+v\n", err)
-		util.HandlerPackErrorResp(g.resp, consts.ErrorInternal, "")
-		logrus.Info("GetSelectionInfo fail,req:%+v", g.req)
-		return
-	}
-	g.resp.Data = data
-}
-
-func (g GetSelectionInfoHandler) checkParam() error {
-	var errs []error
-	if g.req.PageNum < 0 || g.req.PageSize <= 0 {
-		errs = append(errs, errors.New("page param error"))
-	}
-	g.req.PageNum--
-	if len(errs) != 0 {
-		return fmt.Errorf("check param errs:%+v", errs)
-	}
-	return nil
-}
-
-func newGetSelectionInfoHandler(ctx *gin.Context) *GetSelectionInfoHandler {
-	return &GetSelectionInfoHandler{
-		ctx:  ctx,
-		req:  http_model.NewGetSelectionInfoRequest(),
-		resp: http_model.NewGetSelectionInfoResponse(),
-	}
-}
+package handler
+
+import (
+	"errors"
+	"fmt"
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/db"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/util"
+)
+
+func WrapGetSelectionInfoHandler(ctx *gin.Context) {
+	handler := newGetSelectionInfoHandler(ctx)
+	BaseRun(handler)
+}
+
+type GetSelectionInfoHandler struct {
+	ctx  *gin.Context
+	req  *http_model.GetSelectionInfoRequest
+	resp *http_model.CommonResponse
+}
+
+func (g GetSelectionInfoHandler) getContext() *gin.Context {
+	return g.ctx
+}
+
+func (g GetSelectionInfoHandler) getResponse() interface{} {
+	return g.resp
+}
+
+func (g GetSelectionInfoHandler) getRequest() interface{} {
+	return g.req
+}
+
+func (g GetSelectionInfoHandler) run() {
+	//condition := pack.HttpRechargeRecordsRequestToCondition(g.req)
+	data, err := db.GetSelectionInfo(g.ctx, g.req)
+	if err != nil {
+		// 数据库查询失败,返回5001
+		logrus.Errorf("[GetSelectionInfoHandler] call GetSelectionInfo err:%+v\n", err)
+		util.HandlerPackErrorResp(g.resp, consts.ErrorInternal, "")
+		logrus.Info("GetSelectionInfo fail,req:%+v", g.req)
+		return
+	}
+	g.resp.Data = data
+}
+
+func (g GetSelectionInfoHandler) checkParam() error {
+	var errs []error
+	if g.req.PageNum < 0 || g.req.PageSize <= 0 {
+		errs = append(errs, errors.New("page param error"))
+	}
+	g.req.PageNum--
+	if len(errs) != 0 {
+		return fmt.Errorf("check param errs:%+v", errs)
+	}
+	return nil
+}
+
+func newGetSelectionInfoHandler(ctx *gin.Context) *GetSelectionInfoHandler {
+	return &GetSelectionInfoHandler{
+		ctx:  ctx,
+		req:  http_model.NewGetSelectionInfoRequest(),
+		resp: http_model.NewGetSelectionInfoResponse(),
+	}
+}

+ 72 - 72
handler/getSpecialLogisticList.go

@@ -1,72 +1,72 @@
-package handler
-
-import (
-	"errors"
-	"fmt"
-	"github.com/cstockton/go-conv"
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/pack"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-)
-
-func WrapGetSpecialLogisticListHandler(ctx *gin.Context) {
-	handler := GetSpecialLogisticListHandler(ctx)
-	BaseRun(handler)
-}
-
-type GetSpecialLogisticList struct {
-	ctx  *gin.Context
-	req  *http_model.GetSpecialLogisticListRequest
-	resp *http_model.CommonResponse
-}
-
-func (g GetSpecialLogisticList) getContext() *gin.Context {
-	return g.ctx
-}
-
-func (g GetSpecialLogisticList) getResponse() interface{} {
-	return g.resp
-}
-
-func (g GetSpecialLogisticList) getRequest() interface{} {
-	return g.req
-}
-
-func (g GetSpecialLogisticList) run() {
-	conditions := pack.HttpSpecialProjectTaskRequestToCondition(g.req)
-	data, err := service.Project.GetSpecialProjectTaskList(g.ctx, g.req.ProjectId, g.req.PageSize, g.req.PageNum, conditions)
-	if err != nil {
-		logrus.WithContext(g.ctx).Errorf("[GetSpecialLogisticList] error GetProjectTaskList, err:%+v", err)
-		util.HandlerPackErrorResp(g.resp, consts.ErrorInternal, consts.DefaultToast)
-		return
-	}
-	g.resp.Data = data
-}
-
-func (g GetSpecialLogisticList) checkParam() error {
-	var errs []error
-	if g.req.PageNum < 0 || g.req.PageSize <= 0 {
-		errs = append(errs, errors.New("page param error"))
-	}
-	g.req.PageNum--
-	g.req.ProjectId = util.IsNull(g.req.ProjectId)
-	if _, err := conv.Int64(g.req.ProjectId); err != nil {
-		errs = append(errs, err)
-	}
-	if len(errs) != 0 {
-		return fmt.Errorf("check param errs:%+v", errs)
-	}
-	return nil
-}
-
-func GetSpecialLogisticListHandler(ctx *gin.Context) *GetSpecialLogisticList {
-	return &GetSpecialLogisticList{
-		ctx:  ctx,
-		req:  http_model.NewGetSpecialLogisticListRequest(),
-		resp: http_model.NewGetSpecialLogisticListResponse(),
-	}
-}
+package handler
+
+import (
+	"errors"
+	"fmt"
+	"github.com/cstockton/go-conv"
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/pack"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+)
+
+func WrapGetSpecialLogisticListHandler(ctx *gin.Context) {
+	handler := GetSpecialLogisticListHandler(ctx)
+	BaseRun(handler)
+}
+
+type GetSpecialLogisticList struct {
+	ctx  *gin.Context
+	req  *http_model.GetSpecialLogisticListRequest
+	resp *http_model.CommonResponse
+}
+
+func (g GetSpecialLogisticList) getContext() *gin.Context {
+	return g.ctx
+}
+
+func (g GetSpecialLogisticList) getResponse() interface{} {
+	return g.resp
+}
+
+func (g GetSpecialLogisticList) getRequest() interface{} {
+	return g.req
+}
+
+func (g GetSpecialLogisticList) run() {
+	conditions := pack.HttpSpecialProjectTaskRequestToCondition(g.req)
+	data, err := service.Project.GetSpecialProjectTaskList(g.ctx, g.req.ProjectId, g.req.PageSize, g.req.PageNum, conditions)
+	if err != nil {
+		logrus.WithContext(g.ctx).Errorf("[GetSpecialLogisticList] error GetProjectTaskList, err:%+v", err)
+		util.HandlerPackErrorResp(g.resp, consts.ErrorInternal, consts.DefaultToast)
+		return
+	}
+	g.resp.Data = data
+}
+
+func (g GetSpecialLogisticList) checkParam() error {
+	var errs []error
+	if g.req.PageNum < 0 || g.req.PageSize <= 0 {
+		errs = append(errs, errors.New("page param error"))
+	}
+	g.req.PageNum--
+	g.req.ProjectId = util.IsNull(g.req.ProjectId)
+	if _, err := conv.Int64(g.req.ProjectId); err != nil {
+		errs = append(errs, err)
+	}
+	if len(errs) != 0 {
+		return fmt.Errorf("check param errs:%+v", errs)
+	}
+	return nil
+}
+
+func GetSpecialLogisticListHandler(ctx *gin.Context) *GetSpecialLogisticList {
+	return &GetSpecialLogisticList{
+		ctx:  ctx,
+		req:  http_model.NewGetSpecialLogisticListRequest(),
+		resp: http_model.NewGetSpecialLogisticListResponse(),
+	}
+}

+ 59 - 59
handler/getSpecialLogisticNumber.go

@@ -1,59 +1,59 @@
-package handler
-
-import (
-	"github.com/gin-gonic/gin"
-	"github.com/sirupsen/logrus"
-	"youngee_m_api/consts"
-	"youngee_m_api/model/http_model"
-	"youngee_m_api/service"
-	"youngee_m_api/util"
-)
-
-func WrapGetSpecialLogisticNumberHandler(ctx *gin.Context) {
-	handler := GetSpecialLogisticNumberHandler(ctx)
-	BaseRun(handler)
-}
-
-type GetSpecialLogisticNumber struct {
-	ctx  *gin.Context
-	req  *http_model.GetSpecialLogisticNumberRequest
-	resp *http_model.CommonResponse
-}
-
-func (g GetSpecialLogisticNumber) getContext() *gin.Context {
-	return g.ctx
-}
-
-func (g GetSpecialLogisticNumber) getResponse() interface{} {
-	return g.resp
-}
-
-func (g GetSpecialLogisticNumber) getRequest() interface{} {
-	return g.req
-}
-
-func (g GetSpecialLogisticNumber) run() {
-	data := http_model.GetSpecialLogisticNumberRequest{}
-	data = *g.req
-	res, err := service.Number.GetSpecialLogisticNumber(g.ctx, data)
-	if err != nil {
-		logrus.Errorf("[GetSpecialInviteNumberHandler] call GetSpecialInviteNumber err:%+v\n", err)
-		util.HandlerPackErrorResp(g.resp, consts.ErrorInternal, "")
-		logrus.Info("GetSpecialInviteNumber fail,req:%+v", g.req)
-		return
-	}
-	g.resp.Message = ""
-	g.resp.Data = res
-}
-
-func (g GetSpecialLogisticNumber) checkParam() error {
-	return nil
-}
-
-func GetSpecialLogisticNumberHandler(ctx *gin.Context) *GetSpecialLogisticNumber {
-	return &GetSpecialLogisticNumber{
-		ctx:  ctx,
-		req:  http_model.NewGetSpecialLogisticNumberRequest(),
-		resp: http_model.NewGetSpecialLogisticNumberResponse(),
-	}
-}
+package handler
+
+import (
+	"github.com/gin-gonic/gin"
+	"github.com/sirupsen/logrus"
+	"youngee_m_api/consts"
+	"youngee_m_api/model/http_model"
+	"youngee_m_api/service"
+	"youngee_m_api/util"
+)
+
+func WrapGetSpecialLogisticNumberHandler(ctx *gin.Context) {
+	handler := GetSpecialLogisticNumberHandler(ctx)
+	BaseRun(handler)
+}
+
+type GetSpecialLogisticNumber struct {
+	ctx  *gin.Context
+	req  *http_model.GetSpecialLogisticNumberRequest
+	resp *http_model.CommonResponse
+}
+
+func (g GetSpecialLogisticNumber) getContext() *gin.Context {
+	return g.ctx
+}
+
+func (g GetSpecialLogisticNumber) getResponse() interface{} {
+	return g.resp
+}
+
+func (g GetSpecialLogisticNumber) getRequest() interface{} {
+	return g.req
+}
+
+func (g GetSpecialLogisticNumber) run() {
+	data := http_model.GetSpecialLogisticNumberRequest{}
+	data = *g.req
+	res, err := service.Number.GetSpecialLogisticNumber(g.ctx, data)
+	if err != nil {
+		logrus.Errorf("[GetSpecialInviteNumberHandler] call GetSpecialInviteNumber err:%+v\n", err)
+		util.HandlerPackErrorResp(g.resp, consts.ErrorInternal, "")
+		logrus.Info("GetSpecialInviteNumber fail,req:%+v", g.req)
+		return
+	}
+	g.resp.Message = ""
+	g.resp.Data = res
+}
+
+func (g GetSpecialLogisticNumber) checkParam() error {
+	return nil
+}
+
+func GetSpecialLogisticNumberHandler(ctx *gin.Context) *GetSpecialLogisticNumber {
+	return &GetSpecialLogisticNumber{
+		ctx:  ctx,
+		req:  http_model.NewGetSpecialLogisticNumberRequest(),
+		resp: http_model.NewGetSpecialLogisticNumberResponse(),
+	}
+}

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio