business.go 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357
  1. package base
  2. import (
  3. "context"
  4. "dashoo.cn/opms_libary/multipart"
  5. "dashoo.cn/opms_libary/myerrors"
  6. "github.com/gogf/gf/frame/g"
  7. "github.com/gogf/gf/util/gconv"
  8. "github.com/gogf/gf/util/gvalid"
  9. "dashoo.cn/common_definition/comm_def"
  10. projModel "dashoo.cn/micro/app/model/proj"
  11. projSrv "dashoo.cn/micro/app/service/proj"
  12. )
  13. type BusinessHandler struct{}
  14. // Swagger:Business 项目 项目列表
  15. func (p *BusinessHandler) GetList(ctx context.Context, req *projModel.ProjBusinessSearchReq, rsp *comm_def.CommonMsg) error {
  16. businessService, err := projSrv.NewBusinessService(ctx)
  17. if err != nil {
  18. return err
  19. }
  20. total, list, err := businessService.GetList(req)
  21. if err != nil {
  22. return err
  23. }
  24. rsp.Data = g.Map{"list": list, "total": total}
  25. return nil
  26. }
  27. // Swagger:Business 项目 战略项目组查询项目
  28. func (p *BusinessHandler) GetListByStrategic(ctx context.Context, req *projModel.ProjBusinessSearchReq, rsp *comm_def.CommonMsg) error {
  29. businessService, err := projSrv.NewBusinessService(ctx)
  30. if err != nil {
  31. return err
  32. }
  33. total, list, err := businessService.GetListByStrategic(req)
  34. if err != nil {
  35. return err
  36. }
  37. rsp.Data = g.Map{"list": list, "total": total}
  38. return nil
  39. }
  40. // Swagger:Business 项目 项目详情
  41. func (p *BusinessHandler) GetEntityById(ctx context.Context, req *comm_def.IdReq, rsp *comm_def.CommonMsg) error {
  42. // 参数校验
  43. if req.Id == 0 {
  44. return myerrors.ValidError("id参数有误!")
  45. }
  46. businessService, err := projSrv.NewBusinessService(ctx)
  47. if err != nil {
  48. return err
  49. }
  50. rsp.Data, err = businessService.GetBusinessInfoById(req.Id)
  51. if err != nil {
  52. return myerrors.QueryError(err, "项目")
  53. }
  54. return nil
  55. }
  56. // Swagger:Business 项目 获取项目产品
  57. func (p *BusinessHandler) GetBusinessProduct(ctx context.Context, req *comm_def.IdReq, rsp *comm_def.CommonMsg) error {
  58. // 参数校验
  59. if req.Id == 0 {
  60. return myerrors.ValidError("项目参数有误!")
  61. }
  62. businessService, err := projSrv.NewBusinessService(ctx)
  63. if err != nil {
  64. return err
  65. }
  66. productList, err := businessService.GetBusinessProduct(req.Id)
  67. if err != nil {
  68. return err
  69. }
  70. rsp.Data = productList
  71. return nil
  72. }
  73. // Swagger:Business 项目 获取项目动态
  74. func (p *BusinessHandler) GetBusinessDynamics(ctx context.Context, req *projModel.BusinessReq, rsp *comm_def.CommonMsg) error {
  75. if req.BusId == 0 {
  76. return myerrors.ValidError("项目参数有误!")
  77. }
  78. businessService, err := projSrv.NewBusinessService(ctx)
  79. if err != nil {
  80. return err
  81. }
  82. total, list, err := businessService.GetBusinessDynamics(req)
  83. if err != nil {
  84. return err
  85. }
  86. rsp.Data = g.Map{"list": list, "total": total}
  87. return nil
  88. }
  89. // Swagger:Business 项目 获取项目动态列表
  90. func (p *BusinessHandler) GetBusinessDynamicsList(ctx context.Context, req *projModel.BusinessDynamicsReq, rsp *comm_def.CommonMsg) error {
  91. if req.BusId == 0 {
  92. return myerrors.ValidError("项目参数有误!")
  93. }
  94. businessService, err := projSrv.NewBusinessService(ctx)
  95. if err != nil {
  96. return err
  97. }
  98. total, list, err := businessService.GetBusinessDynamicsList(req)
  99. if err != nil {
  100. return err
  101. }
  102. rsp.Data = g.Map{"list": list, "total": total}
  103. return nil
  104. }
  105. // Swagger:Business 项目 创建项目
  106. func (p *BusinessHandler) Create(ctx context.Context, req *projModel.AddProjBusinessReq, rsp *comm_def.CommonMsg) error {
  107. // 参数校验
  108. if err := gvalid.CheckStruct(ctx, req, nil); err != nil {
  109. return err
  110. }
  111. businessService, err := projSrv.NewBusinessService(ctx)
  112. if err != nil {
  113. return err
  114. }
  115. err = businessService.Create(req)
  116. if err != nil {
  117. return myerrors.CreateError(err, "项目")
  118. }
  119. return nil
  120. }
  121. // Swagger:Business 项目 更新项目
  122. func (p *BusinessHandler) UpdateById(ctx context.Context, req *projModel.UpdateProjBusinessReq, rsp *comm_def.CommonMsg) error {
  123. // 参数校验
  124. if err := gvalid.CheckStruct(ctx, req, nil); err != nil {
  125. return err
  126. }
  127. businessService, err := projSrv.NewBusinessService(ctx)
  128. if err != nil {
  129. return err
  130. }
  131. err = businessService.UpdateById(req)
  132. if err != nil {
  133. return myerrors.UpdateError(err, "项目")
  134. }
  135. return nil
  136. }
  137. // Swagger:Business 项目 删除项目
  138. func (p *BusinessHandler) DeleteByIds(ctx context.Context, req *comm_def.IdsReq, rsp *comm_def.CommonMsg) error {
  139. // 参数校验
  140. if len(req.Ids) == 0 {
  141. return myerrors.ValidError("id参数有误!")
  142. }
  143. businessService, err := projSrv.NewBusinessService(ctx)
  144. if err != nil {
  145. return err
  146. }
  147. err = businessService.DeleteByIds(req.Ids)
  148. if err != nil {
  149. return myerrors.DeleteError(err, "项目")
  150. }
  151. return nil
  152. }
  153. // BusinessUpgrade 项目升级
  154. // Swagger:Business 项目 项目升级
  155. func (p *BusinessHandler) BusinessUpgrade(ctx context.Context, req *projModel.BusinessUpgradeReq, rsp *comm_def.CommonMsg) error {
  156. // 参数校验
  157. if err := gvalid.CheckStruct(ctx, req, nil); err != nil {
  158. return err
  159. }
  160. if req.NboType != projSrv.StatusC && req.NboBudget <= 0 {
  161. return myerrors.TipsError("项目预算不能小于0")
  162. }
  163. if (req.NboType == projSrv.StatusA || req.NboType == projSrv.StatusB) && req.QuotationFile == "" {
  164. return myerrors.TipsError("请上传报价单文件")
  165. }
  166. if req.NboType == projSrv.StatusA && req.IsAdoptDashoo == "10" && req.DashooParamFile == "" {
  167. return myerrors.TipsError("请上传大数技术参数文件")
  168. }
  169. businessService, err := projSrv.NewBusinessService(ctx)
  170. if err != nil {
  171. return err
  172. }
  173. err = businessService.BusinessUpgrade(req, nil)
  174. if err != nil {
  175. return err
  176. }
  177. return nil
  178. }
  179. // BusinessUpgradeAorB 项目升级A类或B类
  180. // Swagger:Business 项目 项目升级
  181. func (p *BusinessHandler) BusinessUpgradeAorB(ctx context.Context, formData *multipart.Form, rsp *comm_def.CommonMsg) error {
  182. req := new(projModel.BusinessUpgradeReq)
  183. if err := gconv.Struct(formData.Value, req); err != nil {
  184. return err
  185. }
  186. if req.NboType != projSrv.StatusC && req.NboBudget <= 0 {
  187. return myerrors.TipsError("项目预算不能小于0")
  188. }
  189. if req.NboType == projSrv.StatusA || req.NboType == projSrv.StatusB {
  190. if len(formData.File) == 0 {
  191. return myerrors.TipsError("请上传报价单文件")
  192. }
  193. if _, ok := formData.File["quotationFile"]; !ok {
  194. return myerrors.TipsError("请上传报价单文件")
  195. }
  196. }
  197. if req.NboType == projSrv.StatusA && req.IsAdoptDashoo == "10" && len(formData.File) > 0 {
  198. if _, ok := formData.File["dashooParamFile"]; !ok {
  199. return myerrors.TipsError("请上传大数技术参数文件")
  200. }
  201. }
  202. // 参数校验
  203. if err := gvalid.CheckStruct(ctx, req, nil); err != nil {
  204. return err
  205. }
  206. businessService, err := projSrv.NewBusinessService(ctx)
  207. if err != nil {
  208. return err
  209. }
  210. err = businessService.BusinessUpgrade(req, formData.File)
  211. if err != nil {
  212. return err
  213. }
  214. rsp.Code = 200
  215. rsp.Msg = "操作成功"
  216. return nil
  217. }
  218. // BusinessDowngrade 项目降级
  219. // Swagger:Business 项目 项目降级
  220. func (p *BusinessHandler) BusinessDowngrade(ctx context.Context, req *projModel.BusinessDowngradeReq, rsp *comm_def.CommonMsg) error {
  221. // 参数校验
  222. if err := gvalid.CheckStruct(ctx, req, nil); err != nil {
  223. return err
  224. }
  225. businessService, err := projSrv.NewBusinessService(ctx)
  226. if err != nil {
  227. return err
  228. }
  229. err = businessService.BusinessDowngrade(req)
  230. if err != nil {
  231. return err
  232. }
  233. return nil
  234. }
  235. // BusinessTransfer 项目转移
  236. // Swagger:Business 项目 项目转移
  237. func (p *BusinessHandler) BusinessTransfer(ctx context.Context, req *projModel.BusinessTransferReq, rsp *comm_def.CommonMsg) error {
  238. // 参数校验
  239. if err := gvalid.CheckStruct(ctx, req, nil); err != nil {
  240. return err
  241. }
  242. businessService, err := projSrv.NewBusinessService(ctx)
  243. if err != nil {
  244. return err
  245. }
  246. err = businessService.BusinessTransfer(req)
  247. if err != nil {
  248. return err
  249. }
  250. return nil
  251. }
  252. // SysAdminBusinessTransfer 管理员项目转移销售(未涉及审批的)
  253. // Swagger:Business 项目 管理员项目转移销售(未涉及审批的)
  254. func (p *BusinessHandler) SysAdminBusinessTransfer(ctx context.Context, req *projModel.SysAdminBusinessTransferReq, rsp *comm_def.CommonMsg) error {
  255. // 参数校验
  256. if err := gvalid.CheckStruct(ctx, req, nil); err != nil {
  257. return err
  258. }
  259. businessService, err := projSrv.NewBusinessService(ctx)
  260. if err != nil {
  261. return err
  262. }
  263. err = businessService.SysAdminBusinessTransfer(req)
  264. if err != nil {
  265. return err
  266. }
  267. return nil
  268. }
  269. // StrategicBusinessTransfer 转移战略项目归属
  270. // Swagger:Business 项目 项目转移
  271. func (p *BusinessHandler) StrategicBusinessTransfer(ctx context.Context, req *projModel.BusinessTransferReq, rsp *comm_def.CommonMsg) error {
  272. // 参数校验
  273. if err := gvalid.CheckStruct(ctx, req, nil); err != nil {
  274. return err
  275. }
  276. businessService, err := projSrv.NewBusinessService(ctx)
  277. if err != nil {
  278. return err
  279. }
  280. err = businessService.StrategicBusinessTransfer(req)
  281. if err != nil {
  282. return err
  283. }
  284. return nil
  285. }
  286. // ConvertToReserve 转为储备项目
  287. // Swagger:Business 项目 转为储备项目
  288. func (p *BusinessHandler) ConvertToReserve(ctx context.Context, req *projModel.BusinessToReserveReq, rsp *comm_def.CommonMsg) error {
  289. // 参数校验
  290. if err := gvalid.CheckStruct(ctx, req, nil); err != nil {
  291. return err
  292. }
  293. businessService, err := projSrv.NewBusinessService(ctx)
  294. if err != nil {
  295. return err
  296. }
  297. err = businessService.ConvertToReserve(req)
  298. if err != nil {
  299. return err
  300. }
  301. return nil
  302. }
  303. // SetPrimacyContact 设置首要联系人
  304. // Swagger:Business 项目 设置首要联系人
  305. func (p *BusinessHandler) SetPrimacyContact(ctx context.Context, req *projModel.BusinessPrimacyContactReq, rsp *comm_def.CommonMsg) error {
  306. // 参数校验
  307. if err := gvalid.CheckStruct(ctx, req, nil); err != nil {
  308. return err
  309. }
  310. businessService, err := projSrv.NewBusinessService(ctx)
  311. if err != nil {
  312. return err
  313. }
  314. err = businessService.SetPrimacyContact(req)
  315. if err != nil {
  316. return err
  317. }
  318. return nil
  319. }
  320. // UpdateBusinessStatus 更新项目状态
  321. // Swagger:Business 项目 更新项目状态
  322. func (p *BusinessHandler) UpdateBusinessStatus(ctx context.Context, req *projModel.UpdateBusinessStatusReq, rsp *comm_def.CommonMsg) error {
  323. // 参数校验
  324. if err := gvalid.CheckStruct(ctx, req, nil); err != nil {
  325. return err
  326. }
  327. businessService, err := projSrv.NewBusinessService(ctx)
  328. if err != nil {
  329. return err
  330. }
  331. err = businessService.UpdateBusinessStatus(req)
  332. if err != nil {
  333. return err
  334. }
  335. return nil
  336. }