eta_trial.go 51 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "github.com/mozillazg/go-pinyin"
  6. "github.com/rdlucklib/rdluck_tools/paging"
  7. "hongze/hz_crm_api/models"
  8. "hongze/hz_crm_api/models/company"
  9. "hongze/hz_crm_api/models/eta_trial"
  10. "hongze/hz_crm_api/models/system"
  11. "hongze/hz_crm_api/services"
  12. "hongze/hz_crm_api/utils"
  13. "sort"
  14. "strconv"
  15. "strings"
  16. "time"
  17. )
  18. type ETATrialController struct {
  19. BaseAuthController
  20. }
  21. // @Title 获取所有ETA试用客户列表
  22. // @Description 获取所有ETA试用客户列表 接口
  23. // @Param PageSize query int true "每页数据条数"
  24. // @Param CurrentIndex query int true "当前页页码,从1开始"
  25. // @Param KeyWord query string true "搜索关键词"
  26. // @Param IsOnlyMe query bool false "是否只看我的"
  27. // @Param SortParam query string false "排序字段参数,用来排序的字段, 枚举值:'Expiration':账号到期时长 、 'ModifyTime':账号更新时间 、 'LastLoginTime':最近一次登陆时间 、`ActiveTime:累计活跃时长` 、`IndexNum:累计添加指标` 、`ChartNum:累计添加图表`、`LoginNum:累计登录次数`"
  28. // @Param SortType query string true "如何排序,是正序还是倒序,枚举值:`asc 正序`,`desc 倒叙`"
  29. // @Success 200 {object} models.ETATrialListRespList
  30. // @router /list [get]
  31. func (this *ETATrialController) List() {
  32. br := new(models.BaseResponse).Init()
  33. defer func() {
  34. this.Data["json"] = br
  35. this.ServeJSON()
  36. }()
  37. sysUser := this.SysUser
  38. if sysUser == nil {
  39. br.Msg = "请登录"
  40. br.ErrMsg = "请登录,SysUser Is Empty"
  41. br.Ret = 408
  42. return
  43. }
  44. isOnlyMe, _ := this.GetBool("IsOnlyMe")
  45. pageSize, _ := this.GetInt("PageSize")
  46. currentIndex, _ := this.GetInt("CurrentIndex")
  47. keyWord := this.GetString("KeyWord")
  48. keyWord = strings.Trim(keyWord, " ")
  49. keyWord = strings.Replace(keyWord, "'", "", -1)
  50. //排序参数
  51. sortParam := this.GetString("SortParam")
  52. sortType := this.GetString("SortType")
  53. var total int
  54. page := paging.GetPaging(currentIndex, pageSize, total)
  55. var startSize int
  56. if pageSize <= 0 {
  57. pageSize = utils.PageSize20
  58. }
  59. if currentIndex <= 0 {
  60. currentIndex = 1
  61. }
  62. startSize = paging.StartIndex(currentIndex, pageSize)
  63. var condition string
  64. var pars []interface{}
  65. if isOnlyMe {
  66. condition += ` AND seller_id = ? `
  67. pars = append(pars, sysUser.AdminId)
  68. }
  69. if keyWord != "" {
  70. condition += ` AND (user_name LIKE '%` + keyWord + `%' OR company_name LIKE '%` + keyWord + `%' ) `
  71. }
  72. total, err := eta_trial.GetETATrialListCount(condition, pars)
  73. if err != nil {
  74. br.Msg = "获取失败"
  75. br.ErrMsg = "获取数据总数失败,Err:" + err.Error()
  76. return
  77. }
  78. sortStr := ``
  79. if sortParam != "" && sortType != "" {
  80. if sortParam == "Expiration" {
  81. if sortType == "asc" {
  82. sortStr = "ORDER BY modify_time ASC "
  83. } else {
  84. sortStr = "ORDER BY modify_time DESC "
  85. }
  86. } else if sortParam == "ModifyTime" {
  87. if sortType == "asc" {
  88. sortStr = "ORDER BY modify_time ASC "
  89. } else {
  90. sortStr = "ORDER BY modify_time DESC "
  91. }
  92. } else if sortParam == "LastLoginTime" {
  93. if sortType == "asc" {
  94. sortStr = "ORDER BY last_login_time ASC "
  95. } else {
  96. sortStr = "ORDER BY last_login_time DESC "
  97. }
  98. } else if sortParam == "ActiveTime" {
  99. if sortType == "asc" {
  100. sortStr = "ORDER BY active_time ASC"
  101. } else {
  102. sortStr = "ORDER BY active_time DESC"
  103. }
  104. } else if sortParam == "IndexNum" {
  105. if sortType == "asc" {
  106. sortStr = "ORDER BY index_num ASC"
  107. } else {
  108. sortStr = "ORDER BY index_num DESC"
  109. }
  110. } else if sortParam == "ChartNum" {
  111. if sortType == "asc" {
  112. sortStr = "ORDER BY chart_num ASC"
  113. } else {
  114. sortStr = "ORDER BY chart_num DESC"
  115. }
  116. } else if sortParam == "LoginNum" {
  117. if sortType == "asc" {
  118. sortStr = "ORDER BY login_num ASC"
  119. } else {
  120. sortStr = "ORDER BY login_num DESC"
  121. }
  122. }
  123. } else {
  124. sortStr = "ORDER BY create_time DESC "
  125. }
  126. list, err := eta_trial.GetETATrialList(condition, sortStr, pars, startSize, pageSize)
  127. if err != nil {
  128. br.Msg = "获取权限列表失败"
  129. br.ErrMsg = "获取权限列表失败,Err:" + err.Error()
  130. return
  131. }
  132. mobileSlice := make([]string, 0)
  133. for _, item := range list {
  134. activeTime, _ := strconv.Atoi(item.ActiveTime)
  135. item.ActiveTime = utils.GetDurationFormatBySecond(activeTime)
  136. //到期时间
  137. modifyTime, err := time.Parse(utils.FormatDateTime, item.ModifyTime)
  138. if err != nil {
  139. br.Msg = "时间转化失败"
  140. br.ErrMsg = "时间转化失败,Err:" + err.Error()
  141. return
  142. }
  143. var expired int
  144. expiredTime := modifyTime.AddDate(0, 0, 14).Format(utils.FormatDate)
  145. expired, err = utils.GetDaysBetween2Date(utils.FormatDate, expiredTime, time.Now().Format(utils.FormatDate))
  146. if err != nil {
  147. br.Msg = "时间计算失败"
  148. br.ErrMsg = "时间计算失败,CalculationDate Err:" + err.Error()
  149. return
  150. }
  151. item.Expiration = expired
  152. mobileSlice = append(mobileSlice, "'"+item.Mobile+"'")
  153. }
  154. if len(mobileSlice) > 0 {
  155. mobiles := strings.Join(mobileSlice, ",")
  156. recordList, err := eta_trial.GetEtaTrialRecordParts(mobiles)
  157. if err != nil {
  158. br.Msg = "获取记录失败"
  159. br.ErrMsg = "获取记录失败,GetEtaTrialRecordParts Err:" + err.Error()
  160. return
  161. }
  162. recordMap := make(map[string]string)
  163. for _, v := range recordList {
  164. if _, ok := recordMap[v.Mobile]; !ok {
  165. recordMap[v.Mobile] = v.Part
  166. }
  167. }
  168. for _, item := range list {
  169. item.InterestModule = recordMap[item.Mobile]
  170. }
  171. }
  172. //待审批数量
  173. condition = ` AND approval_status = '待审批' `
  174. pars = []interface{}{}
  175. totalApproval, err := eta_trial.GetETATrialApprovalListCount(condition, pars)
  176. if err != nil {
  177. br.Msg = "获取失败"
  178. br.ErrMsg = "获取数据总数失败,Err:" + err.Error()
  179. return
  180. }
  181. page = paging.GetPaging(currentIndex, pageSize, total)
  182. resp := new(eta_trial.ETATrialListRespList)
  183. resp.List = list
  184. resp.Paging = page
  185. resp.ApprovalNum = totalApproval
  186. br.Ret = 200
  187. br.Success = true
  188. br.Msg = "获取成功"
  189. br.Data = resp
  190. return
  191. }
  192. // @Title 新增用户
  193. // @Description 新增用户 接口
  194. // @Success 200 {object} models.ETATrialAddReq
  195. // @router /add [post]
  196. func (this *ETATrialController) Add() {
  197. br := new(models.BaseResponse).Init()
  198. defer func() {
  199. this.Data["json"] = br
  200. this.ServeJSON()
  201. }()
  202. sysUser := this.SysUser
  203. if sysUser == nil {
  204. br.Msg = "请登录"
  205. br.ErrMsg = "请登录,SysUser Is Empty"
  206. br.Ret = 408
  207. return
  208. }
  209. var req eta_trial.ETATrialAddReq
  210. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  211. if err != nil {
  212. br.Msg = "参数解析异常!"
  213. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  214. return
  215. }
  216. resp := new(eta_trial.ETATrialListResp)
  217. //提交审批
  218. approvalIds := make([]int, 0)
  219. for _, v := range req.List {
  220. if v.CompanyName == "" {
  221. br.Msg = "请填写公司名称"
  222. return
  223. }
  224. if v.UserName == "" {
  225. br.Msg = "请填写客户名称"
  226. return
  227. }
  228. if v.Position == "" {
  229. br.Msg = "职务不可为空"
  230. return
  231. }
  232. if v.Mobile == "" {
  233. br.Msg = "手机号不可为空"
  234. return
  235. }
  236. //检查是否为禁用客户
  237. item, e := eta_trial.GetETATrialByMobile(v.Mobile)
  238. if e != nil && e.Error() != utils.ErrNoRow() {
  239. err = e
  240. }
  241. if item != nil {
  242. if item.Enabled == 0 {
  243. //放入被禁用客户列表中
  244. respItem := eta_trial.ETATrialAddRespItem{
  245. UserName: v.UserName,
  246. CompanyName: v.CompanyName,
  247. Position: v.Position,
  248. Mobile: v.Mobile,
  249. Seller: item.Seller,
  250. }
  251. resp.BannedList = append(resp.BannedList, &respItem)
  252. continue
  253. } else {
  254. //客户已在正常使用中
  255. //放入已提交申请列表中
  256. respItem := eta_trial.ETATrialAddRespItem{
  257. UserName: v.UserName,
  258. CompanyName: v.CompanyName,
  259. Position: v.Position,
  260. Mobile: v.Mobile,
  261. Seller: item.Seller,
  262. }
  263. resp.RepeatList = append(resp.RepeatList, &respItem)
  264. continue
  265. }
  266. }
  267. seller, e := system.GetSysAdminById(sysUser.AdminId)
  268. if e != nil {
  269. err = e
  270. return
  271. }
  272. //检查是否历史已提交
  273. approval, e := eta_trial.GetETATrialApprovalByMobile(v.Mobile)
  274. if e != nil && e.Error() != utils.ErrNoRow() {
  275. err = e
  276. }
  277. if approval != nil && approval.ApprovalStatus == "待审批" {
  278. //处于待审批状态
  279. //放入已提交申请列表中
  280. respItem := eta_trial.ETATrialAddRespItem{
  281. UserName: v.UserName,
  282. CompanyName: v.CompanyName,
  283. Position: v.Position,
  284. Mobile: v.Mobile,
  285. Seller: approval.Seller,
  286. }
  287. resp.RepeatList = append(resp.RepeatList, &respItem)
  288. continue
  289. }
  290. //检查是否公司内部人员
  291. mobileCount, err := eta_trial.GetSysAdminCountByMobile(v.Mobile, 0)
  292. if err != nil {
  293. br.Msg = "判断手机号是否存在失败"
  294. br.ErrMsg = "判断手机号是否存在失败,Err:" + err.Error()
  295. return
  296. }
  297. if mobileCount > 0 {
  298. //放入内部人员列表中
  299. respItem := eta_trial.ETATrialAddRespItem{
  300. UserName: v.UserName,
  301. CompanyName: v.CompanyName,
  302. Position: v.Position,
  303. Mobile: v.Mobile,
  304. Seller: "",
  305. }
  306. resp.InternalList = append(resp.InternalList, &respItem)
  307. continue
  308. }
  309. var approvalId int64
  310. if approval != nil && (approval.ApprovalStatus == "驳回" || approval.ApprovalStatus == "已撤回") && v.Mobile == approval.Mobile {
  311. //若是被驳回后重新申请且手机号相同的,更新审批记录
  312. e = eta_trial.ResubmitTrialNoReasons(v.UserName, v.CompanyName, v.Position, approval.ApprovalId)
  313. if e != nil {
  314. err = e
  315. return
  316. }
  317. approvalId = int64(approval.ApprovalId)
  318. } else {
  319. //加入审批列表
  320. approvalItem := eta_trial.EtaTrialApproval{
  321. UserName: v.UserName,
  322. CompanyName: v.CompanyName,
  323. Position: v.Position,
  324. Mobile: v.Mobile,
  325. SellerId: seller.AdminId,
  326. Seller: seller.RealName,
  327. CreateTime: time.Now(),
  328. ModifyTime: time.Now(),
  329. ApprovalContent: "申请账号",
  330. ApplyMethod: 1,
  331. ApprovalStatus: "待审批",
  332. }
  333. approvalId, e = eta_trial.AddETATrialApproval(&approvalItem)
  334. if e != nil {
  335. err = e
  336. return
  337. }
  338. }
  339. //放入成功列表中
  340. respItem := eta_trial.ETATrialAddRespItem{
  341. UserName: v.UserName,
  342. CompanyName: v.CompanyName,
  343. Position: v.Position,
  344. Mobile: v.Mobile,
  345. Seller: seller.RealName,
  346. }
  347. resp.SuccessList = append(resp.SuccessList, &respItem)
  348. //新增待办消息
  349. msgItem := new(company.CompanyApprovalMessage)
  350. msgItem.CreateUserId = sysUser.AdminId
  351. msgItem.ReceiveUserId = -1
  352. msgItem.MessageStatus = 1 // 已读, 不再亮红点, 但是消息要有
  353. msgItem.Remark = seller.RealName + "申请试用账号"
  354. msgItem.Content = seller.RealName + "申请试用账号"
  355. msgItem.CompanyName = v.CompanyName
  356. msgItem.CreateTime = time.Now()
  357. msgItem.ModifyTime = time.Now()
  358. msgItem.CompanyApprovalId = int(approvalId)
  359. msgItem.OperationStatus = 1
  360. msgItem.MessageType = 1 //1:申请消息,2:审批结果,3:文字消息
  361. msgItem.SourceType = 9 //消息来源
  362. msgItem.ApprovalStatus = 1 //审批状态,1:待审批,2:已审批,3:已驳回
  363. err = company.AddCompanyApprovalMessage(msgItem)
  364. approvalIds = append(approvalIds, int(approvalId))
  365. }
  366. // 2023-08-01默认审批通过, 不再进行人工审批, 也不发送待办消息
  367. if len(approvalIds) > 0 {
  368. go func() {
  369. for _, v := range approvalIds {
  370. _ = services.ApprovalApply(v)
  371. }
  372. }()
  373. }
  374. br.Ret = 200
  375. br.Success = true
  376. br.Msg = "提交成功"
  377. br.Data = resp
  378. return
  379. }
  380. // @Title 申请启用
  381. // @Description 申请启用 接口
  382. // @Success 200 {object} models.ETATrialAddReq
  383. // @router /apply/enable [post]
  384. func (this *ETATrialController) ApplyEnable() {
  385. br := new(models.BaseResponse).Init()
  386. defer func() {
  387. this.Data["json"] = br
  388. this.ServeJSON()
  389. }()
  390. sysUser := this.SysUser
  391. if sysUser == nil {
  392. br.Msg = "请登录"
  393. br.ErrMsg = "请登录,SysUser Is Empty"
  394. br.Ret = 408
  395. return
  396. }
  397. var req eta_trial.ETAAddEnableReq
  398. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  399. if err != nil {
  400. br.Msg = "参数解析异常!"
  401. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  402. return
  403. }
  404. seller, e := system.GetSysAdminById(sysUser.AdminId)
  405. if e != nil {
  406. err = e
  407. return
  408. }
  409. approval, err := eta_trial.GetETATrialApprovalByMobile(req.Mobile)
  410. if err != nil && err.Error() != utils.ErrNoRow() {
  411. br.Msg = "获取失败!"
  412. br.ErrMsg = "获取失败,Err:" + err.Error()
  413. return
  414. }
  415. var approvalId int64
  416. if approval != nil && (approval.ApprovalStatus == "驳回" || approval.ApprovalStatus == "已撤回") && req.Mobile == approval.Mobile {
  417. //若是被驳回或撤回后申请且手机号相同的,更新审批记录
  418. err = eta_trial.ResubmitTrial(approval.ApprovalId, req.ApplyReasons)
  419. if err != nil {
  420. br.Msg = "更新失败!"
  421. br.ErrMsg = "更新失败,Err:" + err.Error()
  422. return
  423. }
  424. approvalId = int64(approval.ApprovalId)
  425. } else if approval != nil && approval.ApprovalStatus == "待审批" && approval.ApprovalContent == "申请启用" {
  426. br.Msg = "该客户已在审批中!"
  427. br.ErrMsg = "该客户已在审批中!"
  428. return
  429. } else {
  430. //加入审批列表
  431. approvalItem := eta_trial.EtaTrialApproval{
  432. UserName: req.UserName,
  433. CompanyName: req.CompanyName,
  434. Position: req.Position,
  435. Mobile: req.Mobile,
  436. SellerId: seller.AdminId,
  437. Seller: seller.RealName,
  438. CreateTime: time.Now(),
  439. ModifyTime: time.Now(),
  440. ApprovalContent: "申请启用",
  441. ApplyMethod: 2,
  442. ApprovalStatus: "待审批",
  443. ApplyReasons: req.ApplyReasons,
  444. }
  445. approvalId, e = eta_trial.AddETATrialApproval(&approvalItem)
  446. if e != nil {
  447. err = e
  448. return
  449. }
  450. }
  451. //新增待办消息
  452. msgItem := new(company.CompanyApprovalMessage)
  453. msgItem.CreateUserId = sysUser.AdminId
  454. msgItem.ReceiveUserId = -1
  455. msgItem.MessageStatus = 1 // 已读, 不再亮红点, 但是消息要有
  456. msgItem.Remark = seller.RealName + "申请账号启用"
  457. msgItem.Content = seller.RealName + "申请账号启用"
  458. msgItem.CompanyName = req.CompanyName
  459. msgItem.CreateTime = time.Now()
  460. msgItem.ModifyTime = time.Now()
  461. msgItem.CompanyApprovalId = int(approvalId)
  462. msgItem.OperationStatus = 1
  463. msgItem.MessageType = 1 //1:申请消息,2:审批结果,3:文字消息
  464. msgItem.SourceType = 9 //消息来源
  465. msgItem.ApprovalStatus = 1 //审批状态,1:待审批,2:已审批,3:已驳回
  466. err = company.AddCompanyApprovalMessage(msgItem)
  467. // 2023-08-01默认审批通过, 不再进行人工审批
  468. go func() {
  469. _ = services.ApprovalApply(int(approvalId))
  470. }()
  471. br.Ret = 200
  472. br.Success = true
  473. br.Msg = "提交成功"
  474. }
  475. // @Title 撤回
  476. // @Description 撤回申请 接口
  477. // @Success 200 {object} models.ETATrialAddReq
  478. // @router /apply/revoke [post]
  479. func (this *ETATrialController) ApplyRevoke() {
  480. br := new(models.BaseResponse).Init()
  481. defer func() {
  482. this.Data["json"] = br
  483. this.ServeJSON()
  484. }()
  485. sysUser := this.SysUser
  486. if sysUser == nil {
  487. br.Msg = "请登录"
  488. br.ErrMsg = "请登录,SysUser Is Empty"
  489. br.Ret = 408
  490. return
  491. }
  492. var req eta_trial.RevokeReq
  493. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  494. if err != nil {
  495. br.Msg = "参数解析异常!"
  496. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  497. return
  498. }
  499. mobile := req.Mobile
  500. mobile = strings.Trim(mobile, " ")
  501. mobile = strings.Replace(mobile, "'", "", -1)
  502. approval, err := eta_trial.GetETATrialApprovalByMobile(mobile)
  503. if err != nil {
  504. if err.Error() == utils.ErrNoRow() {
  505. br.Msg = "待审批信息不存在"
  506. br.ErrMsg = "待审批信息不存在,手机号:" + mobile
  507. return
  508. }
  509. br.Msg = "获取信息失败"
  510. br.ErrMsg = "获取信息失败,Err:" + err.Error()
  511. return
  512. }
  513. if approval == nil {
  514. br.Msg = "待审批信息不存在"
  515. br.ErrMsg = "待审批信息不存在,手机号:" + mobile
  516. return
  517. }
  518. if approval.ApprovalStatus != "待审批" {
  519. br.Msg = "客户状态为:" + approval.ApprovalStatus + ";不可进行撤回操作"
  520. br.ErrMsg = "客户状态为:" + approval.ApprovalStatus + ";不可进行撤回操作"
  521. return
  522. }
  523. //撤回审批单
  524. err = eta_trial.RevokeApproval(mobile)
  525. if err != nil {
  526. br.Msg = "撤回失败"
  527. br.ErrMsg = "撤回失败,Err:" + err.Error()
  528. return
  529. }
  530. // 更新审批消息状态为已读
  531. go func() {
  532. cond := ` AND company_approval_id = ? AND source_type = ? AND message_status = ?`
  533. pars := make([]interface{}, 0)
  534. pars = append(pars, approval.ApprovalId, 9, 0)
  535. if e := company.ModifyCompanyApprovalMessageStatusByCond(cond, pars); e != nil {
  536. br.Msg = "操作失败"
  537. br.ErrMsg = "更新销售ETA试用消息已读状态失败, Err: " + e.Error()
  538. return
  539. }
  540. }()
  541. br.Ret = 200
  542. br.Success = true
  543. br.Msg = "撤回成功"
  544. }
  545. // @Title 删除申请
  546. // @Description 删除申请 接口
  547. // @Success 200 {object} models.ETATrialAddReq
  548. // @router /apply/del [post]
  549. func (this *ETATrialController) ApplyDel() {
  550. br := new(models.BaseResponse).Init()
  551. defer func() {
  552. this.Data["json"] = br
  553. this.ServeJSON()
  554. }()
  555. sysUser := this.SysUser
  556. if sysUser == nil {
  557. br.Msg = "请登录"
  558. br.ErrMsg = "请登录,SysUser Is Empty"
  559. br.Ret = 408
  560. return
  561. }
  562. var req eta_trial.DelReq
  563. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  564. if err != nil {
  565. br.Msg = "参数解析异常!"
  566. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  567. return
  568. }
  569. if req.ApprovalId <= 0 {
  570. br.Msg = "参数有误"
  571. return
  572. }
  573. _, e := eta_trial.GetETATrialApprovalById(req.ApprovalId)
  574. if e != nil {
  575. if e.Error() == utils.ErrNoRow() {
  576. br.Msg = "申请已被删除, 请刷新页面"
  577. return
  578. }
  579. br.Msg = "操作失败"
  580. br.ErrMsg = "获取ETA审批失败, Err: " + e.Error()
  581. return
  582. }
  583. err = eta_trial.DelApproval(req.ApprovalId)
  584. if err != nil {
  585. br.Msg = "删除失败"
  586. br.ErrMsg = "删除失败,Err:" + err.Error()
  587. return
  588. }
  589. // 更新审批消息状态为已读
  590. go func() {
  591. cond := ` AND company_approval_id = ? AND source_type = ? AND message_status = ?`
  592. pars := make([]interface{}, 0)
  593. pars = append(pars, req.ApprovalId, 9, 0)
  594. if e := company.ModifyCompanyApprovalMessageStatusByCond(cond, pars); e != nil {
  595. br.Msg = "操作失败"
  596. br.ErrMsg = "更新销售ETA试用消息已读状态失败, Err: " + e.Error()
  597. return
  598. }
  599. }()
  600. br.Ret = 200
  601. br.Success = true
  602. br.Msg = "删除成功"
  603. }
  604. // @Title 驳回申请
  605. // @Description 驳回申请 接口
  606. // @Param ApprovalId query string true "审批id"
  607. // @Param RejectReason query string true "驳回理由"
  608. // @Success 200 {object} models.ETATrialAddReq
  609. // @router /apply/reject [post]
  610. func (this *ETATrialController) ApplyReject() {
  611. br := new(models.BaseResponse).Init()
  612. defer func() {
  613. this.Data["json"] = br
  614. this.ServeJSON()
  615. }()
  616. sysUser := this.SysUser
  617. if sysUser == nil {
  618. br.Msg = "请登录"
  619. br.ErrMsg = "请登录,SysUser Is Empty"
  620. br.Ret = 408
  621. return
  622. }
  623. var req eta_trial.RejectReq
  624. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  625. if err != nil {
  626. br.Msg = "参数解析异常!"
  627. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  628. return
  629. }
  630. approvalId := req.ApprovalId
  631. reason := req.RejectReason
  632. err = eta_trial.RejectApproval(approvalId, reason)
  633. if err != nil {
  634. br.Msg = "删除失败"
  635. br.ErrMsg = "删除失败,Err:" + err.Error()
  636. return
  637. }
  638. approval, err := eta_trial.GetETATrialApprovalById(approvalId)
  639. if err != nil {
  640. br.Msg = "获取失败"
  641. br.ErrMsg = "获取失败,Err:" + err.Error()
  642. return
  643. }
  644. msgItem := new(company.CompanyApprovalMessage)
  645. msgItem.CreateUserId = sysUser.AdminId
  646. msgItem.ReceiveUserId = approval.SellerId
  647. msgItem.MessageStatus = 0
  648. msgItem.Remark = approval.UserName + approval.ApprovalContent + "驳回"
  649. msgItem.Content = approval.UserName + approval.ApprovalContent + "驳回"
  650. msgItem.CompanyName = approval.CompanyName
  651. msgItem.CreateTime = time.Now()
  652. msgItem.ModifyTime = time.Now()
  653. msgItem.CompanyApprovalId = approvalId
  654. msgItem.OperationStatus = 1
  655. msgItem.MessageType = 2 //1:申请消息,2:审批结果,3:文字消息
  656. msgItem.SourceType = 9 //消息来源
  657. msgItem.ApprovalStatus = 3 //审批状态,1:待审批,2:已审批,3:已驳回
  658. err = company.AddCompanyApprovalMessage(msgItem)
  659. // 更新审批消息(发给所有管理员的)为已读
  660. go func() {
  661. cond := ` AND company_approval_id = ? AND source_type = ? AND message_status = ? AND receive_user_id = -1 `
  662. pars := make([]interface{}, 0)
  663. pars = append(pars, req.ApprovalId, 9, 0)
  664. if e := company.ModifyCompanyApprovalMessageStatusByCond(cond, pars); e != nil {
  665. br.Msg = "操作失败"
  666. br.ErrMsg = "更新销售ETA试用消息已读状态失败, Err: " + e.Error()
  667. return
  668. }
  669. }()
  670. br.Ret = 200
  671. br.Success = true
  672. br.Msg = "驳回成功"
  673. }
  674. // @Title 同意申请
  675. // @Description 同意申请 接口
  676. // @Param ApprovalId query string true "审批id"
  677. // @Success 200 {object} models.ETATrialAddReq
  678. // @router /apply/approval [post]
  679. func (this *ETATrialController) Approval() {
  680. br := new(models.BaseResponse).Init()
  681. defer func() {
  682. this.Data["json"] = br
  683. this.ServeJSON()
  684. }()
  685. sysUser := this.SysUser
  686. if sysUser == nil {
  687. br.Msg = "请登录"
  688. br.ErrMsg = "请登录,SysUser Is Empty"
  689. br.Ret = 408
  690. return
  691. }
  692. var req eta_trial.DelReq
  693. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  694. if err != nil {
  695. br.Msg = "参数解析异常!"
  696. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  697. return
  698. }
  699. approvalId := req.ApprovalId
  700. err = eta_trial.ApprovalTrial(approvalId)
  701. if err != nil {
  702. br.Msg = "删除失败"
  703. br.ErrMsg = "删除失败,Err:" + err.Error()
  704. return
  705. }
  706. approval, err := eta_trial.GetETATrialApprovalById(approvalId)
  707. if err != nil {
  708. br.Msg = "查询失败"
  709. br.ErrMsg = "查询失败,Err:" + err.Error()
  710. return
  711. }
  712. //如果是新客户申请就新增,旧客户更改账号状态即可
  713. if approval.ApplyMethod == 2 {
  714. err := eta_trial.UpdateETATrialEnable(approval.Mobile)
  715. if err != nil {
  716. br.Msg = "启用失败"
  717. br.ErrMsg = "启用失败,Err:" + err.Error()
  718. return
  719. }
  720. err = eta_trial.UpdateAdminEnable(approval.Mobile)
  721. if err != nil {
  722. br.Msg = "启用失败"
  723. br.ErrMsg = "启用失败,Err:" + err.Error()
  724. return
  725. }
  726. } else {
  727. //新增客户
  728. newItem := eta_trial.EtaTrial{
  729. UserName: approval.UserName,
  730. CompanyName: approval.CompanyName,
  731. Position: approval.Position,
  732. Mobile: approval.Mobile,
  733. Enabled: 1,
  734. SellerId: approval.SellerId,
  735. Seller: approval.Seller,
  736. CreateTime: time.Now(),
  737. ModifyTime: time.Now(),
  738. }
  739. strResult := ""
  740. a := pinyin.NewArgs()
  741. rows := pinyin.Pinyin(newItem.UserName, a)
  742. for i := 0; i < len(rows); i++ {
  743. strResult += rows[i][0]
  744. }
  745. //若非中文
  746. if strResult == "" {
  747. strResult = newItem.UserName
  748. }
  749. list, err := eta_trial.GetETATrialByAccount(strResult)
  750. if err != nil && err.Error() != utils.ErrNoRow() {
  751. br.Msg = "查询失败"
  752. br.ErrMsg = "查询失败,GetETATrialByAccount Err:" + err.Error()
  753. return
  754. }
  755. if list != nil && len(list) > 0 {
  756. newItem.Account = strResult + strconv.Itoa(len(list))
  757. } else {
  758. newItem.Account = strResult
  759. }
  760. //newItem.Password = utils.GetRandStringNoSpecialChar(8)
  761. // 初始密码固定
  762. newItem.Password = "123456a"
  763. _, err = eta_trial.AddETATrial(&newItem)
  764. if err != nil {
  765. br.Msg = "新增失败"
  766. br.ErrMsg = "新增失败,AddETATrial Err:" + err.Error()
  767. return
  768. }
  769. //新增至试用平台的Admin
  770. adminItem, err := eta_trial.GetSysUserByRoleAndDepartment("试用", "ETA试用客户")
  771. if err != nil {
  772. br.Msg = "获取用户信息失败"
  773. br.ErrMsg = "获取用户信息失败,Err:" + err.Error()
  774. return
  775. }
  776. admin := new(eta_trial.ETATrialAdmin)
  777. admin.AdminName = newItem.Account
  778. admin.RealName = newItem.UserName
  779. admin.Password = utils.MD5(newItem.Password)
  780. admin.LastUpdatedPasswordTime = time.Now().Format(utils.FormatDateTime)
  781. admin.Enabled = 1
  782. admin.LastLoginTime = time.Now().Format(utils.FormatDateTime)
  783. admin.CreatedTime = time.Now()
  784. admin.LastUpdatedTime = time.Now().Format(utils.FormatDateTime)
  785. admin.Mobile = newItem.Mobile
  786. admin.RoleType = 0
  787. admin.RoleId = adminItem.RoleId
  788. admin.RoleName = "试用"
  789. admin.RoleTypeCode = "管理员"
  790. admin.DepartmentId = adminItem.DepartmentId
  791. admin.DepartmentName = "ETA试用客户"
  792. admin.Role = "admin"
  793. admin.Position = approval.Position
  794. newId, err := eta_trial.AddAdmin(admin)
  795. if err != nil {
  796. br.Msg = "新增失败"
  797. br.ErrMsg = "新增失败,AddAdmin Err:" + err.Error()
  798. return
  799. }
  800. // 新增试用客户手工权限
  801. go func() {
  802. _ = services.CreateTrialUserManualAuth(newId, admin.RealName)
  803. }()
  804. }
  805. msgItem := new(company.CompanyApprovalMessage)
  806. msgItem.CreateUserId = sysUser.AdminId
  807. msgItem.ReceiveUserId = approval.SellerId
  808. msgItem.MessageStatus = 0
  809. msgItem.Remark = approval.UserName + approval.ApprovalContent + "通过"
  810. msgItem.Content = approval.UserName + approval.ApprovalContent + "通过"
  811. msgItem.CompanyName = approval.CompanyName
  812. msgItem.CreateTime = time.Now()
  813. msgItem.ModifyTime = time.Now()
  814. msgItem.CompanyApprovalId = approvalId
  815. msgItem.OperationStatus = 1
  816. msgItem.MessageType = 2 //1:申请消息,2:审批结果,3:文字消息
  817. msgItem.SourceType = 9 //消息来源
  818. msgItem.ApprovalStatus = 2 //审批状态,1:待审批,2:已审批,3:已驳回
  819. err = company.AddCompanyApprovalMessage(msgItem)
  820. // 更新审批消息(发给所有管理员的)为已读
  821. go func() {
  822. cond := ` AND company_approval_id = ? AND source_type = ? AND message_status = ? AND receive_user_id = -1 `
  823. pars := make([]interface{}, 0)
  824. pars = append(pars, req.ApprovalId, 9, 0)
  825. if e := company.ModifyCompanyApprovalMessageStatusByCond(cond, pars); e != nil {
  826. br.Msg = "操作失败"
  827. br.ErrMsg = "更新销售ETA试用消息已读状态失败, Err: " + e.Error()
  828. return
  829. }
  830. }()
  831. br.Ret = 200
  832. br.Success = true
  833. br.Msg = "审批成功"
  834. }
  835. // @Title 我的审批
  836. // @Description 我的审批 接口
  837. // @Param PageSize query int true "每页数据条数"
  838. // @Param CurrentIndex query int true "当前页页码,从1开始"
  839. // @Param KeyWord query string true "搜索关键词"
  840. // @Param SortType query string true "如何排序,是正序还是倒序,枚举值:`asc 正序`,`desc 倒叙`"
  841. // @router /apply/myList [get]
  842. func (this *ETATrialController) MyList() {
  843. br := new(models.BaseResponse).Init()
  844. defer func() {
  845. this.Data["json"] = br
  846. this.ServeJSON()
  847. }()
  848. sysUser := this.SysUser
  849. if sysUser == nil {
  850. br.Msg = "请登录"
  851. br.ErrMsg = "请登录,SysUser Is Empty"
  852. br.Ret = 408
  853. return
  854. }
  855. pageSize, _ := this.GetInt("PageSize")
  856. currentIndex, _ := this.GetInt("CurrentIndex")
  857. keyWord := this.GetString("KeyWord")
  858. keyWord = strings.Trim(keyWord, " ")
  859. keyWord = strings.Replace(keyWord, "'", "", -1)
  860. //排序参数
  861. sortType := this.GetString("SortType")
  862. var total int
  863. page := paging.GetPaging(currentIndex, pageSize, total)
  864. var startSize int
  865. if pageSize <= 0 {
  866. pageSize = utils.PageSize20
  867. }
  868. if currentIndex <= 0 {
  869. currentIndex = 1
  870. }
  871. startSize = paging.StartIndex(currentIndex, pageSize)
  872. var condition string
  873. var pars []interface{}
  874. if keyWord != "" {
  875. condition += ` AND (a.user_name LIKE '%` + keyWord + `%' OR a.company_name LIKE '%` + keyWord + `%' OR a.mobile LIKE '%` + keyWord + `%') `
  876. }
  877. sortStr := ""
  878. if sortType == "asc" {
  879. sortStr = "ORDER BY a.modify_time ASC "
  880. } else {
  881. sortStr = "ORDER BY a.modify_time DESC "
  882. }
  883. pars = append(pars, sysUser.AdminId)
  884. total, err := eta_trial.GetETATrialApprovalCountBySellerId(condition, sortStr, pars)
  885. if err != nil {
  886. br.Msg = "获取失败"
  887. br.ErrMsg = "获取数据总数失败,Err:" + err.Error()
  888. return
  889. }
  890. list, err := eta_trial.GetETATrialApprovalBySellerId(condition, sortStr, pars, startSize, pageSize)
  891. if err != nil {
  892. br.Msg = "查询失败"
  893. br.ErrMsg = "查询失败,Err:" + err.Error()
  894. return
  895. }
  896. page = paging.GetPaging(currentIndex, pageSize, total)
  897. resp := new(eta_trial.ETATrialApprovalListRespList)
  898. resp.List = list
  899. resp.Paging = page
  900. br.Ret = 200
  901. br.Success = true
  902. br.Msg = "获取成功"
  903. br.Data = resp
  904. return
  905. }
  906. // @Title 审批列表
  907. // @Description 审批列表 接口
  908. // @Param SortParam query int false "排序字段参数,用来排序的字段 "
  909. // @Param ListParam query int false "筛选字段参数,用来筛选的字段, 枚举值:1:全部 、 2:待审批 、 3:已审批 "
  910. // @Param PageSize query int true "每页数据条数"
  911. // @Param CurrentIndex query int true "当前页页码,从1开始"
  912. // @Param KeyWord query string true "搜索关键词"
  913. // @Param SortType query string true "如何排序,是正序还是倒序,枚举值:`asc 正序`,`desc 倒叙`"
  914. // @Success 200 {object} models.ETATrialAddReq
  915. // @router /apply/list [get]
  916. func (this *ETATrialController) ApplyList() {
  917. br := new(models.BaseResponse).Init()
  918. defer func() {
  919. this.Data["json"] = br
  920. this.ServeJSON()
  921. }()
  922. sysUser := this.SysUser
  923. if sysUser == nil {
  924. br.Msg = "请登录"
  925. br.ErrMsg = "请登录,SysUser Is Empty"
  926. br.Ret = 408
  927. return
  928. }
  929. pageSize, _ := this.GetInt("PageSize")
  930. currentIndex, _ := this.GetInt("CurrentIndex")
  931. keyWord := this.GetString("KeyWord")
  932. keyWord = strings.Trim(keyWord, " ")
  933. keyWord = strings.Replace(keyWord, "'", "", -1)
  934. //排序参数
  935. sortParam := this.GetString("SortParam")
  936. listParam, _ := this.GetInt("ListParam")
  937. sortType := this.GetString("SortType")
  938. var total int
  939. page := paging.GetPaging(currentIndex, pageSize, total)
  940. var startSize int
  941. if pageSize <= 0 {
  942. pageSize = utils.PageSize20
  943. }
  944. if currentIndex <= 0 {
  945. currentIndex = 1
  946. }
  947. startSize = paging.StartIndex(currentIndex, pageSize)
  948. var condition string
  949. var pars []interface{}
  950. if keyWord != "" {
  951. condition += ` AND (user_name LIKE '%` + keyWord + `%' OR company_name LIKE '%` + keyWord + `%' OR mobile LIKE '%` + keyWord + `%') `
  952. }
  953. sortStr := ""
  954. if listParam == 0 {
  955. condition += ` AND approval_status = '待审批' `
  956. } else if listParam == 2 {
  957. condition += ` AND approval_status = '待审批' `
  958. } else if listParam == 3 {
  959. condition += ` AND approval_status = '已审批' OR approval_status = '驳回' `
  960. }
  961. if sortType == "asc" {
  962. sortStr = "ORDER BY modify_time ASC "
  963. } else {
  964. sortStr = "ORDER BY modify_time DESC "
  965. }
  966. if sortParam == "Expiration" {
  967. if sortType == "asc" {
  968. sortStr = "ORDER BY modify_time ASC "
  969. } else {
  970. sortStr = "ORDER BY modify_time DESC "
  971. }
  972. } else if sortParam == "ModifyTime" {
  973. if sortType == "asc" {
  974. sortStr = "ORDER BY modify_time ASC "
  975. } else {
  976. sortStr = "ORDER BY modify_time DESC "
  977. }
  978. }
  979. total, err := eta_trial.GetETATrialApprovalListCount(condition, pars)
  980. if err != nil {
  981. br.Msg = "获取失败"
  982. br.ErrMsg = "获取数据总数失败,Err:" + err.Error()
  983. return
  984. }
  985. list, err := eta_trial.GetETATrialApprovalList(condition, sortStr, pars, startSize, pageSize)
  986. if err != nil {
  987. br.Msg = "查询失败"
  988. br.ErrMsg = "查询失败,Err:" + err.Error()
  989. return
  990. }
  991. page = paging.GetPaging(currentIndex, pageSize, total)
  992. resp := new(eta_trial.ETATrialApprovalListRespList)
  993. resp.List = list
  994. resp.Paging = page
  995. br.Ret = 200
  996. br.Success = true
  997. br.Msg = "获取成功"
  998. br.Data = resp
  999. return
  1000. }
  1001. // @Title 账号列表
  1002. // @Description 账号列表 接口
  1003. // @Param SortParam query string false "排序字段参数,用来排序的字段, 枚举值:'Expiration':账号到期时长 、 'ModifyTime':账号更新时间 "
  1004. // @Param PageSize query int true "每页数据条数"
  1005. // @Param CurrentIndex query int true "当前页页码,从1开始"
  1006. // @Param KeyWord query string true "搜索关键词"
  1007. // @Param SortType query string true "如何排序,是正序还是倒序,枚举值:`asc 正序`,`desc 倒叙`"
  1008. // @Success 200 {object} models.ETATrialAddReq
  1009. // @router /apply/accountlist [get]
  1010. func (this *ETATrialController) AccountList() {
  1011. br := new(models.BaseResponse).Init()
  1012. defer func() {
  1013. this.Data["json"] = br
  1014. this.ServeJSON()
  1015. }()
  1016. sysUser := this.SysUser
  1017. if sysUser == nil {
  1018. br.Msg = "请登录"
  1019. br.ErrMsg = "请登录,SysUser Is Empty"
  1020. br.Ret = 408
  1021. return
  1022. }
  1023. pageSize, _ := this.GetInt("PageSize")
  1024. currentIndex, _ := this.GetInt("CurrentIndex")
  1025. keyWord := this.GetString("KeyWord")
  1026. keyWord = strings.Trim(keyWord, " ")
  1027. keyWord = strings.Replace(keyWord, "'", "", -1)
  1028. //排序参数
  1029. sortType := this.GetString("SortType")
  1030. var total int
  1031. page := paging.GetPaging(currentIndex, pageSize, total)
  1032. var startSize int
  1033. if pageSize <= 0 {
  1034. pageSize = utils.PageSize20
  1035. }
  1036. if currentIndex <= 0 {
  1037. currentIndex = 1
  1038. }
  1039. startSize = paging.StartIndex(currentIndex, pageSize)
  1040. var condition string
  1041. var pars []interface{}
  1042. if keyWord != "" {
  1043. condition += ` AND (user_name LIKE '%` + keyWord + `%' OR company_name LIKE '%` + keyWord + `%' OR mobile LIKE '%` + keyWord + `%') `
  1044. }
  1045. condition += ` AND seller_id = ? `
  1046. pars = append(pars, sysUser.AdminId)
  1047. total, err := eta_trial.GetETATrialListCount(condition, pars)
  1048. if err != nil {
  1049. br.Msg = "获取失败"
  1050. br.ErrMsg = "获取数据总数失败,Err:" + err.Error()
  1051. return
  1052. }
  1053. sortStr := ""
  1054. if sortType == "asc" {
  1055. sortStr = "ORDER BY modify_time ASC "
  1056. } else {
  1057. sortStr = "ORDER BY modify_time DESC "
  1058. }
  1059. list, err := eta_trial.GetETATrialList(condition, sortStr, pars, startSize, pageSize)
  1060. if err != nil {
  1061. br.Msg = "获取权限列表失败"
  1062. br.ErrMsg = "获取权限列表失败,Err:" + err.Error()
  1063. return
  1064. }
  1065. for _, item := range list {
  1066. activeTime, _ := strconv.Atoi(item.ActiveTime)
  1067. item.ActiveTime = utils.GetDurationFormatBySecond(activeTime)
  1068. //到期时间
  1069. modifyTime, err := time.Parse(utils.FormatDateTime, item.ModifyTime)
  1070. if err != nil {
  1071. br.Msg = "时间转化失败"
  1072. br.ErrMsg = "时间转化失败,Err:" + err.Error()
  1073. return
  1074. }
  1075. var expired int
  1076. expiredTime := modifyTime.AddDate(0, 0, 14).Format(utils.FormatDate)
  1077. expired, err = utils.GetDaysBetween2Date(utils.FormatDate, expiredTime, time.Now().Format(utils.FormatDate))
  1078. if err != nil {
  1079. br.Msg = "时间计算失败"
  1080. br.ErrMsg = "时间计算失败,CalculationDate Err:" + err.Error()
  1081. return
  1082. }
  1083. item.Expiration = expired
  1084. }
  1085. page = paging.GetPaging(currentIndex, pageSize, total)
  1086. resp := new(eta_trial.ETATrialListRespList)
  1087. resp.List = list
  1088. resp.Paging = page
  1089. br.Ret = 200
  1090. br.Success = true
  1091. br.Msg = "获取成功"
  1092. br.Data = resp
  1093. return
  1094. }
  1095. // @Title 问卷配置
  1096. // @Description 问卷配置 接口
  1097. // @Success 200 string "获取成功"
  1098. // @router /questionnaire/list [get]
  1099. func (this *ETATrialController) QuestionnaireList() {
  1100. br := new(models.BaseResponse).Init()
  1101. defer func() {
  1102. this.Data["json"] = br
  1103. this.ServeJSON()
  1104. }()
  1105. sysUser := this.SysUser
  1106. if sysUser == nil {
  1107. br.Msg = "请登录"
  1108. br.ErrMsg = "请登录,SysUser Is Empty"
  1109. br.Ret = 408
  1110. return
  1111. }
  1112. cond := ""
  1113. lists, err := eta_trial.GetETATrialQuestionnaireList(cond)
  1114. if err != nil {
  1115. br.Msg = "获取问卷失败"
  1116. br.ErrMsg = "获取问卷失败,Err:" + err.Error()
  1117. return
  1118. }
  1119. var resp eta_trial.EtaTrialQuestionnaireResp
  1120. for _, v := range lists {
  1121. item := eta_trial.EtaTrialQuestionnaireRespItem{
  1122. QuestionnaireId: v.QuestionnaireId,
  1123. Question: v.Question,
  1124. Type: v.Type,
  1125. Sort: v.Sort,
  1126. Options: strings.Split(v.Options, "~#"),
  1127. IsMust: v.IsMust,
  1128. CreateTime: v.CreateTime.Format(utils.FormatDateTime),
  1129. }
  1130. resp.List = append(resp.List, item)
  1131. }
  1132. sort.Sort(resp)
  1133. br.Ret = 200
  1134. br.Success = true
  1135. br.Msg = "获取成功"
  1136. br.Data = resp
  1137. return
  1138. }
  1139. // @Title 问卷保存
  1140. // @Description 问卷保存 接口
  1141. // @Param request body eta_trial.EtaTrialQuestionnaireSaveReq true "type json string"
  1142. // @Success 200 {object} models.ETATrialAddReq
  1143. // @router /questionnaire/save [post]
  1144. func (this *ETATrialController) QuestionnairesSave() {
  1145. br := new(models.BaseResponse).Init()
  1146. defer func() {
  1147. this.Data["json"] = br
  1148. this.ServeJSON()
  1149. }()
  1150. sysUser := this.SysUser
  1151. if sysUser == nil {
  1152. br.Msg = "请登录"
  1153. br.ErrMsg = "请登录,SysUser Is Empty"
  1154. br.Ret = 408
  1155. return
  1156. }
  1157. var req eta_trial.EtaTrialQuestionnaireSaveReq
  1158. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  1159. if err != nil {
  1160. br.Msg = "参数解析异常!"
  1161. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  1162. return
  1163. }
  1164. questionnaireList := make([]*eta_trial.EtaTrialQuestionnaire, 0)
  1165. for _, v := range req.List {
  1166. if v.QuestionnaireId == 0 {
  1167. //新增
  1168. questionItem := &eta_trial.EtaTrialQuestionnaire{
  1169. Question: v.Question,
  1170. IsMust: v.IsMust,
  1171. Type: v.Type,
  1172. Sort: v.Sort,
  1173. Options: strings.Join(v.Options, "~#"),
  1174. CreateTime: time.Now(),
  1175. }
  1176. questionnaireList = append(questionnaireList, questionItem)
  1177. } else {
  1178. //更新
  1179. questionItem := &eta_trial.EtaTrialQuestionnaire{
  1180. QuestionnaireId: v.QuestionnaireId,
  1181. Question: v.Question,
  1182. Options: strings.Join(v.Options, "~#"),
  1183. Sort: v.Sort,
  1184. IsMust: v.IsMust,
  1185. CreateTime: time.Time{},
  1186. }
  1187. cols := make([]string, 0)
  1188. cols = append(cols, "question", "options", "Sort", "IsMust")
  1189. err = questionItem.Update(cols)
  1190. if err != nil {
  1191. br.Msg = "更新问题失败!"
  1192. br.ErrMsg = "更新问题失败,Err:" + err.Error()
  1193. return
  1194. }
  1195. }
  1196. }
  1197. //批量新增问题和选项
  1198. if len(questionnaireList) > 0 {
  1199. err = eta_trial.AddETATrialQuestionnaire(questionnaireList)
  1200. if err != nil {
  1201. br.Msg = "保存问题失败!"
  1202. br.ErrMsg = "保存问题失败,Err:" + err.Error()
  1203. return
  1204. }
  1205. }
  1206. br.Ret = 200
  1207. br.Success = true
  1208. br.Msg = "保存成功"
  1209. return
  1210. }
  1211. // @Title 问题删除
  1212. // @Description 问题删除 接口
  1213. // @Param request body eta_trial.EtaTrialQuestionnaireSaveReq true "type json string"
  1214. // @Success 200 {object} models.ETATrialAddReq
  1215. // @router /questionnaire/del [post]
  1216. func (this *ETATrialController) QuestionnairesDel() {
  1217. br := new(models.BaseResponse).Init()
  1218. defer func() {
  1219. this.Data["json"] = br
  1220. this.ServeJSON()
  1221. }()
  1222. sysUser := this.SysUser
  1223. if sysUser == nil {
  1224. br.Msg = "请登录"
  1225. br.ErrMsg = "请登录,SysUser Is Empty"
  1226. br.Ret = 408
  1227. return
  1228. }
  1229. var req eta_trial.EtaTrialQuestionnaireDelReq
  1230. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  1231. if err != nil {
  1232. br.Msg = "参数解析异常!"
  1233. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  1234. return
  1235. }
  1236. if req.QuestionnaireId <= 0 {
  1237. br.Msg = "问题id异常!"
  1238. br.ErrMsg = "问题id异常,Err:" + err.Error()
  1239. return
  1240. }
  1241. count, err := eta_trial.GetETATrialQuestionnaireById(req.QuestionnaireId)
  1242. if err != nil && count > 0 {
  1243. br.Msg = "查询问题异常!"
  1244. br.ErrMsg = "查询问题异常,Err:" + err.Error()
  1245. return
  1246. }
  1247. err = eta_trial.DelETATrialQuestionnaireById(req.QuestionnaireId)
  1248. if err != nil && count > 0 {
  1249. br.Msg = "删除问题异常!"
  1250. br.ErrMsg = "删除问题异常,Err:" + err.Error()
  1251. return
  1252. }
  1253. br.Ret = 200
  1254. br.Success = true
  1255. br.Msg = "删除成功"
  1256. return
  1257. }
  1258. // @Title 问卷统计结果
  1259. // @Description 问卷统计结果 接口
  1260. // @Param ListParam query int false "筛选字段参数,用来筛选的字段, 枚举值:1:全部 、 2:选择题 、 3:简答题 "
  1261. // @Success 200 {object} models.ETATrialAddReq
  1262. // @router /questionnaire/statistical [get]
  1263. func (this *ETATrialController) QuestionnairesStatistical() {
  1264. br := new(models.BaseResponse).Init()
  1265. defer func() {
  1266. this.Data["json"] = br
  1267. this.ServeJSON()
  1268. }()
  1269. sysUser := this.SysUser
  1270. if sysUser == nil {
  1271. br.Msg = "请登录"
  1272. br.ErrMsg = "请登录,SysUser Is Empty"
  1273. br.Ret = 408
  1274. return
  1275. }
  1276. listParam, _ := this.GetInt("ListParam")
  1277. cond := ""
  1278. if listParam == 2 {
  1279. cond = "AND a.type = 1 OR a.type = 2 "
  1280. } else if listParam == 3 {
  1281. cond = "AND a.type = 3 "
  1282. }
  1283. list, err := eta_trial.GetETATrialQuestionnaireStatistic(cond)
  1284. if err != nil {
  1285. br.Msg = "获取问题统计失败!"
  1286. br.ErrMsg = "获取问题统计失败,Err:" + err.Error()
  1287. return
  1288. }
  1289. //获取单选和简答的回答数量,多选计算方式不同在计算后面统计时再计算
  1290. questionCountList, err := eta_trial.GetETATrialQuestionnaireStatisticCount()
  1291. if err != nil {
  1292. br.Msg = "获取问卷记录数量失败"
  1293. br.ErrMsg = "获取问卷记录数量失败,Err:" + err.Error()
  1294. return
  1295. }
  1296. questioncountMap := make(map[int]int, 0)
  1297. for _, v := range questionCountList {
  1298. questioncountMap[v.QuestionnaireId] = v.Count
  1299. }
  1300. chooseMap := make(map[string]int, 0)
  1301. answerCountMap := make(map[int]int, 0)
  1302. answerMap := make(map[int][]string, 0)
  1303. answerNameMap := make(map[int]string, 0)
  1304. for _, v := range list {
  1305. //问卷ID拼选项作为key,防止不同问题选项重复
  1306. if v.Type == 1 {
  1307. key := strconv.Itoa(v.QuestionnaireId) + v.Options
  1308. if _, ok := chooseMap[key]; !ok {
  1309. chooseMap[key] = v.Count
  1310. }
  1311. } else if v.Type == 2 {
  1312. options := strings.Split(v.Options, "~#")
  1313. for _, op := range options {
  1314. key := strconv.Itoa(v.QuestionnaireId) + op
  1315. if _, ok := chooseMap[key]; ok {
  1316. //多选题可能出现多人同样的选择
  1317. chooseMap[key] += v.Count
  1318. } else {
  1319. chooseMap[key] = v.Count
  1320. }
  1321. questioncountMap[v.QuestionnaireId] += v.Count
  1322. }
  1323. } else {
  1324. //简答题,最多十条
  1325. if count, ok := answerCountMap[v.QuestionnaireId]; ok && count < 11 {
  1326. answerMap[v.QuestionnaireId] = append(answerMap[v.QuestionnaireId], v.Options)
  1327. answerNameMap[v.QuestionnaireId] = v.UserName
  1328. answerCountMap[v.QuestionnaireId] += 1
  1329. } else if !ok {
  1330. answerMap[v.QuestionnaireId] = append(answerMap[v.QuestionnaireId], v.Options)
  1331. answerNameMap[v.QuestionnaireId] = v.UserName
  1332. answerCountMap[v.QuestionnaireId] = 1
  1333. }
  1334. }
  1335. }
  1336. lists, err := eta_trial.GetETATrialQuestionnaireList(cond)
  1337. if err != nil {
  1338. br.Msg = "获取问卷失败"
  1339. br.ErrMsg = "获取问卷失败,Err:" + err.Error()
  1340. return
  1341. }
  1342. var questionList eta_trial.EtaTrialQuestionnaireResp
  1343. for _, v := range lists {
  1344. item := eta_trial.EtaTrialQuestionnaireRespItem{
  1345. QuestionnaireId: v.QuestionnaireId,
  1346. Question: v.Question,
  1347. Options: strings.Split(v.Options, "~#"),
  1348. Type: v.Type,
  1349. Sort: v.Sort,
  1350. IsMust: v.IsMust,
  1351. CreateTime: v.CreateTime.Format(utils.FormatDateTime),
  1352. }
  1353. questionList.List = append(questionList.List, item)
  1354. }
  1355. sort.Sort(questionList)
  1356. var resp []eta_trial.EtaTrialQuestionnaireRecordStatisticResp
  1357. for _, v := range questionList.List {
  1358. if v.Type != 3 {
  1359. options := make([]*eta_trial.EtaTrialQuestionnaireRecordStatisticOption, 0)
  1360. for _, op := range v.Options {
  1361. key := strconv.Itoa(v.QuestionnaireId) + op
  1362. opItem := eta_trial.EtaTrialQuestionnaireRecordStatisticOption{
  1363. Option: op,
  1364. Count: chooseMap[key],
  1365. }
  1366. options = append(options, &opItem)
  1367. }
  1368. item := eta_trial.EtaTrialQuestionnaireRecordStatisticResp{
  1369. QuestionnaireId: v.QuestionnaireId,
  1370. Question: v.Question,
  1371. Options: options,
  1372. Type: v.Type,
  1373. IsMust: v.IsMust,
  1374. }
  1375. resp = append(resp, item)
  1376. } else {
  1377. item := eta_trial.EtaTrialQuestionnaireRecordStatisticResp{
  1378. QuestionnaireId: v.QuestionnaireId,
  1379. Question: v.Question,
  1380. Type: v.Type,
  1381. IsMust: v.IsMust,
  1382. }
  1383. ansList := make([]eta_trial.EtaTrialQuestionnaireRecordStatisticAnswer, 0)
  1384. for _, val := range answerMap[v.QuestionnaireId] {
  1385. ansItem := eta_trial.EtaTrialQuestionnaireRecordStatisticAnswer{
  1386. Answer: val,
  1387. UserName: answerNameMap[v.QuestionnaireId],
  1388. }
  1389. ansList = append(ansList, ansItem)
  1390. }
  1391. item.Answers = ansList
  1392. resp = append(resp, item)
  1393. }
  1394. }
  1395. for _, v := range resp {
  1396. if v.Type != 3 && v.Type != 4 {
  1397. for i, op := range v.Options {
  1398. key := strconv.Itoa(v.QuestionnaireId) + op.Option
  1399. opCount := float64(chooseMap[key])
  1400. count := float64(questioncountMap[v.QuestionnaireId])
  1401. if count != 0 {
  1402. per, _ := strconv.ParseFloat(fmt.Sprintf("%.4f", opCount/count), 64)
  1403. op.Percentage = per
  1404. }
  1405. op.Index = i
  1406. }
  1407. }
  1408. }
  1409. br.Ret = 200
  1410. br.Success = true
  1411. br.Msg = "保存成功"
  1412. br.Data = resp
  1413. return
  1414. }
  1415. // @Title 简答题列表
  1416. // @Description 简答题列表 接口
  1417. // @Success 200 string "获取成功"
  1418. // @Param PageSize query int true "每页数据条数"
  1419. // @Param CurrentIndex query int true "当前页页码,从1开始"
  1420. // @Param QuestionnaireId query int true "问题id"
  1421. // @router /questionnaire/answerList [get]
  1422. func (this *ETATrialController) QuestionnaireAnswerList() {
  1423. br := new(models.BaseResponse).Init()
  1424. defer func() {
  1425. this.Data["json"] = br
  1426. this.ServeJSON()
  1427. }()
  1428. sysUser := this.SysUser
  1429. if sysUser == nil {
  1430. br.Msg = "请登录"
  1431. br.ErrMsg = "请登录,SysUser Is Empty"
  1432. br.Ret = 408
  1433. return
  1434. }
  1435. var startSize int
  1436. pageSize, _ := this.GetInt("PageSize")
  1437. currentIndex, _ := this.GetInt("CurrentIndex")
  1438. if pageSize <= 0 {
  1439. pageSize = utils.PageSize20
  1440. }
  1441. if currentIndex <= 0 {
  1442. currentIndex = 1
  1443. }
  1444. startSize = paging.StartIndex(currentIndex, pageSize)
  1445. questionnaireId, _ := this.GetInt("QuestionnaireId")
  1446. lists, err := eta_trial.GetETATrialQuestionnaireAnswerListById(questionnaireId, startSize, pageSize)
  1447. if err != nil {
  1448. br.Msg = "获取问卷失败"
  1449. br.ErrMsg = "获取问卷失败,Err:" + err.Error()
  1450. return
  1451. }
  1452. total, err := eta_trial.GetETATrialQuestionnaireAnswerListByIdCount(questionnaireId)
  1453. if err != nil {
  1454. br.Msg = "获取问卷失败"
  1455. br.ErrMsg = "获取问卷失败,Err:" + err.Error()
  1456. return
  1457. }
  1458. cond := ""
  1459. qLists, err := eta_trial.GetETATrialQuestionnaireList(cond)
  1460. if err != nil {
  1461. br.Msg = "获取问卷失败"
  1462. br.ErrMsg = "获取问卷失败,Err:" + err.Error()
  1463. return
  1464. }
  1465. mustMap := make(map[int]int, 0)
  1466. for _, v := range qLists {
  1467. mustMap[v.QuestionnaireId] = v.IsMust
  1468. }
  1469. resp := new(eta_trial.QuestionnaireDetailListResp)
  1470. for _, v := range lists {
  1471. item := eta_trial.EtaTrialQuestionnaireRecordRespItem{
  1472. RecordId: v.RecordId,
  1473. UserName: v.UserName,
  1474. CompanyName: v.CompanyName,
  1475. Position: v.Position,
  1476. Options: v.Options,
  1477. Mobile: v.Mobile,
  1478. Type: v.Type,
  1479. QuestionnaireId: v.QuestionnaireId,
  1480. IsMust: mustMap[v.QuestionnaireId],
  1481. CreateTime: v.CreateTime.Format(utils.FormatDateTime),
  1482. }
  1483. resp.List = append(resp.List, &item)
  1484. }
  1485. page := paging.GetPaging(currentIndex, pageSize, total)
  1486. resp.Paging = page
  1487. br.Ret = 200
  1488. br.Success = true
  1489. br.Msg = "获取成功"
  1490. br.Data = resp
  1491. return
  1492. }
  1493. // @Title 详细数据列表
  1494. // @Description 详细数据列表 接口
  1495. // @Success 200 string "获取成功"
  1496. // @Param PageSize query int true "每页数据条数"
  1497. // @Param CurrentIndex query int true "当前页页码,从1开始"
  1498. // @router /questionnaire/detailList [get]
  1499. func (this *ETATrialController) QuestionnaireDetailList() {
  1500. br := new(models.BaseResponse).Init()
  1501. defer func() {
  1502. this.Data["json"] = br
  1503. this.ServeJSON()
  1504. }()
  1505. sysUser := this.SysUser
  1506. if sysUser == nil {
  1507. br.Msg = "请登录"
  1508. br.ErrMsg = "请登录,SysUser Is Empty"
  1509. br.Ret = 408
  1510. return
  1511. }
  1512. var startSize int
  1513. pageSize, _ := this.GetInt("PageSize")
  1514. currentIndex, _ := this.GetInt("CurrentIndex")
  1515. if pageSize <= 0 {
  1516. pageSize = utils.PageSize20
  1517. }
  1518. if currentIndex <= 0 {
  1519. currentIndex = 1
  1520. }
  1521. startSize = paging.StartIndex(currentIndex, pageSize)
  1522. total, err := eta_trial.GetETATrialQuestionnaireDetailListCount()
  1523. if err != nil {
  1524. br.Msg = "获取问卷数量失败"
  1525. br.ErrMsg = "获取问卷数量失败,Err:" + err.Error()
  1526. return
  1527. }
  1528. if total == 0 {
  1529. br.Msg = "无问卷调查记录"
  1530. br.Ret = 200
  1531. br.Success = true
  1532. return
  1533. }
  1534. lists, err := eta_trial.GetETATrialQuestionnaireDetailList(startSize, pageSize)
  1535. if err != nil {
  1536. br.Msg = "获取问卷失败"
  1537. br.ErrMsg = "获取问卷失败,Err:" + err.Error()
  1538. return
  1539. }
  1540. cond := ""
  1541. qLists, err := eta_trial.GetETATrialQuestionnaireList(cond)
  1542. if err != nil {
  1543. br.Msg = "获取问卷失败"
  1544. br.ErrMsg = "获取问卷失败,Err:" + err.Error()
  1545. return
  1546. }
  1547. mustMap := make(map[int]int, 0)
  1548. for _, v := range qLists {
  1549. mustMap[v.QuestionnaireId] = v.IsMust
  1550. }
  1551. resp := new(eta_trial.QuestionnaireDetailListResp)
  1552. for _, v := range lists {
  1553. item := eta_trial.EtaTrialQuestionnaireRecordRespItem{
  1554. RecordId: v.RecordId,
  1555. UserName: v.UserName,
  1556. CompanyName: v.CompanyName,
  1557. Position: v.Position,
  1558. Options: v.Options,
  1559. Mobile: v.Mobile,
  1560. Type: v.Type,
  1561. QuestionnaireId: v.QuestionnaireId,
  1562. IsMust: mustMap[v.QuestionnaireId],
  1563. CreateTime: v.CreateTime.Format(utils.FormatDateTime),
  1564. }
  1565. resp.List = append(resp.List, &item)
  1566. }
  1567. page := paging.GetPaging(currentIndex, pageSize, total)
  1568. resp.Paging = page
  1569. br.Ret = 200
  1570. br.Success = true
  1571. br.Msg = "获取成功"
  1572. br.Data = resp
  1573. return
  1574. }
  1575. // @Title 详细数据查看
  1576. // @Description 详细数据查看 接口
  1577. // @Success 200 string "获取成功"
  1578. // @Param Mobile query string true "手机号"
  1579. // @Param CreateTime query string true "手机号"
  1580. // @router /questionnaire/detail [get]
  1581. func (this *ETATrialController) QuestionnaireDetail() {
  1582. br := new(models.BaseResponse).Init()
  1583. defer func() {
  1584. this.Data["json"] = br
  1585. this.ServeJSON()
  1586. }()
  1587. sysUser := this.SysUser
  1588. if sysUser == nil {
  1589. br.Msg = "请登录"
  1590. br.ErrMsg = "请登录,SysUser Is Empty"
  1591. br.Ret = 408
  1592. return
  1593. }
  1594. cond := ""
  1595. lists, err := eta_trial.GetETATrialQuestionnaireList(cond)
  1596. if err != nil {
  1597. br.Msg = "获取问卷失败"
  1598. br.ErrMsg = "获取问卷失败,Err:" + err.Error()
  1599. return
  1600. }
  1601. var resp eta_trial.EtaTrialQuestionnaireResp
  1602. for _, v := range lists {
  1603. item := eta_trial.EtaTrialQuestionnaireRespItem{
  1604. QuestionnaireId: v.QuestionnaireId,
  1605. Question: v.Question,
  1606. Options: strings.Split(v.Options, "~#"),
  1607. Type: v.Type,
  1608. Sort: v.Sort,
  1609. IsMust: v.IsMust,
  1610. CreateTime: v.CreateTime.Format(utils.FormatDateTime),
  1611. }
  1612. resp.List = append(resp.List, item)
  1613. }
  1614. sort.Sort(resp)
  1615. mobile := this.GetString("Mobile")
  1616. createTime := this.GetString("CreateTime")
  1617. timeDate, _ := time.Parse(utils.FormatDateTime, createTime)
  1618. startDate := timeDate.AddDate(0, 0, -1).Format(utils.FormatDateTime)
  1619. endDate := timeDate.AddDate(0, 0, 1).Format(utils.FormatDateTime)
  1620. answerList, err := eta_trial.GetETATrialQuestionnaireDetailListByMobile(mobile, startDate, endDate)
  1621. if err != nil {
  1622. br.Msg = "获取问卷失败"
  1623. br.ErrMsg = "获取问卷失败,Err:" + err.Error()
  1624. return
  1625. }
  1626. answerMap := make(map[int]string)
  1627. for _, v := range answerList {
  1628. answerMap[v.QuestionnaireId] = v.Options
  1629. }
  1630. nResp := make([]eta_trial.EtaTrialQuestionnaireDetailItem, 0)
  1631. for _, v := range lists {
  1632. item := eta_trial.EtaTrialQuestionnaireDetailItem{
  1633. QuestionnaireId: v.QuestionnaireId,
  1634. Question: v.Question,
  1635. Type: v.Type,
  1636. Sort: v.Sort,
  1637. IsMust: v.IsMust,
  1638. Options: strings.Split(v.Options, "~#"),
  1639. UserOptions: answerMap[v.QuestionnaireId],
  1640. CreateTime: v.CreateTime.Format(utils.FormatDateTime),
  1641. }
  1642. nResp = append(nResp, item)
  1643. }
  1644. br.Ret = 200
  1645. br.Success = true
  1646. br.Msg = "获取成功"
  1647. br.Data = nResp
  1648. return
  1649. }