eta_trial.go 53 KB

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