User.go 54 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113
  1. package controllers
  2. import (
  3. "Cold_Api/Nats/NatsServer"
  4. "Cold_Api/conf"
  5. "Cold_Api/controllers/lib"
  6. "Cold_Api/models/Account"
  7. "Cold_Api/models/Company"
  8. "Cold_Api/models/Device"
  9. "Cold_Api/models/System"
  10. "Cold_Api/models/Warning"
  11. "encoding/json"
  12. "fmt"
  13. "github.com/beego/beego/v2/adapter/orm"
  14. "github.com/beego/beego/v2/core/logs"
  15. beego "github.com/beego/beego/v2/server/web"
  16. uuid "github.com/satori/go.uuid"
  17. "github.com/shopspring/decimal"
  18. "github.com/xuri/excelize/v2"
  19. "math"
  20. "os"
  21. "strconv"
  22. "strings"
  23. "time"
  24. )
  25. type UserController struct {
  26. beego.Controller
  27. Admin_r Account.Admin // 登陆的用户
  28. T_pid int // 公司id
  29. }
  30. func (c *UserController) Prepare() {
  31. GetCookie := c.Ctx.GetCookie("User_tokey")
  32. GetString := c.GetString("User_tokey")
  33. User_tokey := GetCookie
  34. if len(User_tokey) == 0 {
  35. User_tokey = GetString
  36. }
  37. if Account.Admin_r == nil {
  38. return
  39. }
  40. c.Admin_r = *Account.Admin_r
  41. T_pid := c.Admin_r.T_pid
  42. EntryPid, _ := Account.Redis_Tokey_T_pid_Get(User_tokey)
  43. if EntryPid > 0 {
  44. T_pid = EntryPid
  45. }
  46. c.T_pid = T_pid
  47. }
  48. // 获取微信二维码 ( 扫描后 ,Nats 自动绑定在 Admin->T_wx )
  49. func (c *UserController) User_WxQRCode() {
  50. T_name := c.GetString("T_name")
  51. WxQRCode_str, _ := NatsServer.Wx_GenerateQRCode("-|" + lib.AesEncryptCBC(c.Admin_r.T_uuid+"/"+T_name, "0123456789012345") + "|- @宝智达冷链 微信公众号通知")
  52. WxQRCode_str = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=" + WxQRCode_str
  53. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: WxQRCode_str}
  54. c.ServeJSON()
  55. return
  56. }
  57. // 用户绑定的公司列表
  58. func (c *UserController) Company_Tree() {
  59. var r_jsons lib.R_JSONS
  60. T_name := c.GetString("T_name")
  61. r_jsons.Data = Account.Read_Company_Tree(c.Admin_r, T_name)
  62. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  63. c.ServeJSON()
  64. return
  65. }
  66. func (c *UserController) Company_Transport_List() {
  67. var r_jsons lib.R_JSONS
  68. T_name := c.GetString("T_name")
  69. r_jsons.Data = Account.Read_Transport_Company_List(T_name)
  70. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  71. c.ServeJSON()
  72. return
  73. }
  74. // 所有公司树
  75. func (c *UserController) Company_List() {
  76. var r_jsons lib.R_JSONS
  77. T_name := c.GetString("T_name")
  78. r_jsons.Data = Account.Read_Company_List(T_name)
  79. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  80. c.ServeJSON()
  81. return
  82. }
  83. func (c *UserController) Company_Get() {
  84. var r_jsons lib.R_JSONS
  85. Company_r, err := Account.Read_Company_ById(c.T_pid)
  86. if err != nil {
  87. logs.Warning(lib.FuncName(), "获取公司信息失败", err)
  88. }
  89. r_jsons.Data = Account.CompanyToCompany_R(Company_r)
  90. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  91. c.ServeJSON()
  92. return
  93. }
  94. func (c *UserController) Company_Add() {
  95. T_mid, _ := c.GetInt("T_mid")
  96. T_name := c.GetString("T_name")
  97. T_plan := c.GetString("T_plan")
  98. T_data := c.GetString("T_data")
  99. T_v3d := c.GetString("T_v3d")
  100. T_type, _ := c.GetInt("T_type")
  101. T_Address := c.GetString("T_Address")
  102. T_coordinate := c.GetString("T_coordinate")
  103. var_ := Account.Company{
  104. T_mid: T_mid,
  105. T_name: T_name,
  106. T_State: 1,
  107. T_plan: T_plan,
  108. T_data: T_data,
  109. T_v3d: T_v3d,
  110. T_warning: 1,
  111. T_type: T_type,
  112. T_Address: T_Address,
  113. T_coordinate: T_coordinate,
  114. }
  115. id, err := Account.Add_Company(var_)
  116. if err != nil {
  117. c.Data["json"] = lib.JSONS{Code: 301, Msg: "添加失败!"}
  118. c.ServeJSON()
  119. return
  120. }
  121. if c.Admin_r.T_pids != "*" {
  122. T_pids := []int{int(id)}
  123. if err = Account.Add_Company_bind(c.Admin_r, T_pids); err != nil {
  124. c.Data["json"] = lib.JSONS{Code: 202, Msg: "公司绑定失败"}
  125. c.ServeJSON()
  126. return
  127. }
  128. }
  129. System.Add_UserLogs_T(c.Admin_r.T_uuid, "公司管理", "添加", var_)
  130. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: id}
  131. c.ServeJSON()
  132. return
  133. }
  134. func (c *UserController) Company_Edit() {
  135. Id, Id_err := c.GetInt("Id")
  136. if Id_err != nil {
  137. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  138. c.ServeJSON()
  139. return
  140. }
  141. Company_r, err := Account.Read_Company_ById(Id)
  142. if err != nil {
  143. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  144. c.ServeJSON()
  145. return
  146. }
  147. T_name := c.GetString("T_name")
  148. T_type, _ := c.GetInt("T_type")
  149. T_Address := c.GetString("T_Address")
  150. T_coordinate := c.GetString("T_coordinate")
  151. if len(T_name) > 0 {
  152. Company_r.T_name = T_name
  153. }
  154. if T_type > 0 {
  155. Company_r.T_type = T_type
  156. }
  157. if len(T_Address) > 0 {
  158. Company_r.T_Address = T_Address
  159. }
  160. if len(T_coordinate) > 0 {
  161. Company_r.T_coordinate = T_coordinate
  162. }
  163. is := Account.Update_Company(Company_r, "T_name", "T_type", "T_Address", "T_coordinate")
  164. if !is {
  165. c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"}
  166. c.ServeJSON()
  167. return
  168. }
  169. System.Add_UserLogs_T(c.Admin_r.T_uuid, "公司管理", "修改", Company_r)
  170. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  171. c.ServeJSON()
  172. return
  173. }
  174. // 数字孪生
  175. func (c *UserController) Company_DigitalTwin() {
  176. Id, Id_err := c.GetInt("Id")
  177. if Id_err != nil {
  178. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  179. c.ServeJSON()
  180. return
  181. }
  182. Company_r, err := Account.Read_Company_ById(Id)
  183. if err != nil {
  184. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  185. c.ServeJSON()
  186. return
  187. }
  188. T_plan := c.GetString("T_plan")
  189. T_data := c.GetString("T_data")
  190. T_v3d := c.GetString("T_v3d")
  191. T_warning, _ := c.GetInt("T_warning")
  192. Company_r.T_plan = T_plan
  193. Company_r.T_data = T_data
  194. Company_r.T_v3d = T_v3d
  195. Company_r.T_warning = T_warning
  196. is := Account.Update_Company(Company_r, "T_plan", "T_data", "T_v3d", "T_warning")
  197. if !is {
  198. c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"}
  199. c.ServeJSON()
  200. return
  201. }
  202. System.Add_UserLogs_T(c.Admin_r.T_uuid, "公司管理", "修改数字孪生", Company_r)
  203. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  204. c.ServeJSON()
  205. return
  206. }
  207. // 充值
  208. func (c *UserController) Company_Pay() {
  209. Id, Id_err := c.GetInt("Id")
  210. if Id_err != nil {
  211. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  212. c.ServeJSON()
  213. return
  214. }
  215. Company_r, err := Account.Read_Company_ById(Id)
  216. if err != nil {
  217. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  218. c.ServeJSON()
  219. return
  220. }
  221. T_balance, _ := c.GetFloat("T_balance")
  222. T_money64, _ := decimal.NewFromFloat(float64(Company_r.T_money) + T_balance).Round(2).Float64()
  223. Company_r.T_money = float32(T_money64)
  224. is := Account.Update_Company(Company_r, "T_money")
  225. if !is {
  226. c.Data["json"] = lib.JSONS{Code: 202, Msg: "充值失败!"}
  227. c.ServeJSON()
  228. return
  229. }
  230. // 添加充值记录
  231. bill := Company.CompanyBill{
  232. T_pid: Company_r.Id,
  233. T_type: "充值",
  234. T_project: "充值",
  235. T_bill: "充值",
  236. T_charging: float32(T_balance),
  237. T_balance: float32(T_money64),
  238. }
  239. _, err = Company.Add_CompanyBill(bill)
  240. if err != nil {
  241. c.Data["json"] = lib.JSONS{Code: 202, Msg: "充值失败!"}
  242. c.ServeJSON()
  243. return
  244. }
  245. System.Add_UserLogs_T(c.Admin_r.T_uuid, "公司管理", "充值", Company_r)
  246. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  247. c.ServeJSON()
  248. return
  249. }
  250. // 报警统计
  251. func (c *UserController) Company_Warning() {
  252. Id, Id_err := c.GetInt("Id")
  253. if Id_err != nil {
  254. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  255. c.ServeJSON()
  256. return
  257. }
  258. Company_r, err := Account.Read_Company_ById(Id)
  259. if err != nil {
  260. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  261. c.ServeJSON()
  262. return
  263. }
  264. T_warning, _ := c.GetInt("T_warning")
  265. if T_warning > 0 {
  266. Company_r.T_warning = T_warning
  267. }
  268. is := Account.Update_Company(Company_r, "T_warning")
  269. if !is {
  270. c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"}
  271. c.ServeJSON()
  272. return
  273. }
  274. System.Add_UserLogs_T(c.Admin_r.T_uuid, "公司管理", "修改报警统计", Company_r)
  275. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  276. c.ServeJSON()
  277. return
  278. }
  279. func (c *UserController) Company_Del() {
  280. Id, Id_err := c.GetInt("Id")
  281. if Id_err != nil {
  282. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  283. c.ServeJSON()
  284. return
  285. }
  286. Company_r, err := Account.Read_Company_ById(Id)
  287. if err != nil {
  288. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  289. c.ServeJSON()
  290. return
  291. }
  292. ids := Account.ReadCompanyIds_T_path(Company_r.T_path)
  293. if cnt := Account.Read_Admin_Num_ByT_pid(ids); cnt > 0 {
  294. c.Data["json"] = lib.JSONS{Code: 202, Msg: "有关联用户,禁止删除!"}
  295. c.ServeJSON()
  296. return
  297. }
  298. o := orm.NewOrm()
  299. o.Begin()
  300. for _, id := range ids {
  301. if is := Account.Delete_Company(o, id); !is {
  302. o.Rollback()
  303. c.Data["json"] = lib.JSONS{Code: 202, Msg: "删除失败!"}
  304. c.ServeJSON()
  305. return
  306. }
  307. if err = Account.Delete_Company_bind_T_pids(o, id); err != nil {
  308. o.Rollback()
  309. c.Data["json"] = lib.JSONS{Code: 202, Msg: "删除失败!"}
  310. c.ServeJSON()
  311. return
  312. }
  313. }
  314. o.Commit()
  315. System.Add_UserLogs_T(c.Admin_r.T_uuid, "公司管理", "删除", Company_r)
  316. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  317. c.ServeJSON()
  318. return
  319. }
  320. // 进入公司
  321. func (c *UserController) Company_Entry() {
  322. GetCookie := c.Ctx.GetCookie("User_tokey")
  323. GetString := c.GetString("User_tokey")
  324. User_tokey := GetCookie
  325. if len(User_tokey) == 0 {
  326. User_tokey = GetString
  327. }
  328. T_pid, _ := c.GetInt("T_pid")
  329. // 操作pid
  330. company_r, err := Account.Read_Company_ById(T_pid)
  331. if err != nil {
  332. c.Data["json"] = lib.JSONS{Code: 202, Msg: "查询失败!"}
  333. c.ServeJSON()
  334. return
  335. }
  336. visit := false
  337. if c.Admin_r.T_pid > 0 && strings.Contains(company_r.T_path, fmt.Sprintf("/%d/", c.Admin_r.T_pid)) {
  338. visit = true
  339. }
  340. if c.Admin_r.T_pid == 0 {
  341. if c.Admin_r.T_pids == "*" {
  342. visit = true
  343. } else {
  344. pids := lib.SplitStringToIntIds(c.Admin_r.T_pids, "P")
  345. if len(pids) > 0 {
  346. list := Account.ReadCompanyIds_T_pids(pids)
  347. for _, v := range list {
  348. if T_pid == v {
  349. visit = true
  350. break
  351. }
  352. }
  353. }
  354. }
  355. }
  356. if !visit {
  357. c.Data["json"] = lib.JSONS{Code: 202, Msg: "没有权限!"}
  358. c.ServeJSON()
  359. return
  360. }
  361. Account.Redis_Tokey_T_pid_Set(User_tokey, T_pid)
  362. System.Add_UserLogs_T(c.Admin_r.T_uuid, "公司管理", "进入公司", T_pid)
  363. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  364. c.ServeJSON()
  365. return
  366. }
  367. // 记账扣费
  368. func (c *UserController) Company_Charging() {
  369. Id, Id_err := c.GetInt("Id")
  370. if Id_err != nil {
  371. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  372. c.ServeJSON()
  373. return
  374. }
  375. Company_r, err := Account.Read_Company_ById(Id)
  376. if err != nil {
  377. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  378. c.ServeJSON()
  379. return
  380. }
  381. T_Charging, _ := c.GetInt("T_Charging")
  382. Company_r.T_Charging = T_Charging
  383. is := Account.Update_Company(Company_r, "T_Charging")
  384. if !is {
  385. c.Data["json"] = lib.JSONS{Code: 202, Msg: "充值失败!"}
  386. c.ServeJSON()
  387. return
  388. }
  389. System.Add_UserLogs_T(c.Admin_r.T_uuid, "公司管理", "记账扣费", Company_r)
  390. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  391. c.ServeJSON()
  392. return
  393. }
  394. // 检查 Tokey 是否过期
  395. // 用户管理
  396. func (c *UserController) User_List() {
  397. var r_jsons lib.R_JSONS
  398. page, _ := c.GetInt("page")
  399. if page < 1 {
  400. page = 1
  401. }
  402. page_z, _ := c.GetInt("page_z")
  403. if page_z < 1 {
  404. page_z = conf.Page_size
  405. }
  406. T_name := c.GetString("T_name")
  407. Account.Read_Power_All_Map()
  408. r_jsons.Data, r_jsons.Num = Account.Read_Admin_List(c.T_pid, T_name, page, page_z)
  409. r_jsons.Page = page
  410. r_jsons.Page_size = int(math.Ceil(float64(r_jsons.Num) / float64(page_z)))
  411. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  412. c.ServeJSON()
  413. return
  414. }
  415. func (c *UserController) User_Get() {
  416. T_uuid := c.GetString("T_uuid")
  417. if len(T_uuid) < 8 {
  418. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  419. c.ServeJSON()
  420. return
  421. }
  422. admin_r, err := Account.Read_Admin_ByUuid(T_uuid)
  423. if err != nil {
  424. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  425. c.ServeJSON()
  426. return
  427. }
  428. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: Account.AdminToAdmin_R(admin_r)}
  429. c.ServeJSON()
  430. return
  431. }
  432. func (c *UserController) User_Info() {
  433. type User_ struct {
  434. User Account.Admin_R
  435. //Power Account.Power // 权限
  436. //Menu map[string]Account.Menu_R // 菜单
  437. //Menu []Account.Menu // 菜单
  438. }
  439. Admin_r := User_{}
  440. Admin_r.User = Account.AdminToAdmin_R(c.Admin_r)
  441. //Admin_r.Power, _ = Account.Read_Power_ById(admin_r.T_power)
  442. //Admin_r.Menu = Account.Read_Menu_Tree(Power.T_menu, T_pid)
  443. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: Admin_r}
  444. c.ServeJSON()
  445. return
  446. }
  447. func (c *UserController) User_Post() {
  448. admin_r := c.Admin_r
  449. T_name := c.GetString("T_name")
  450. T_pass := c.GetString("T_pass")
  451. T_phone := c.GetString("T_phone")
  452. T_mail := c.GetString("T_mail")
  453. T_wx := c.GetString("T_wx")
  454. if len(T_pass) < 8 && len(T_pass) > 0 {
  455. c.Data["json"] = lib.JSONS{Code: 202, Msg: "密码异常!"}
  456. c.ServeJSON()
  457. return
  458. }
  459. if len(T_name) > 0 {
  460. admin_r.T_name = T_name
  461. }
  462. if len(T_pass) >= 8 {
  463. admin_r.T_pass = T_pass
  464. }
  465. if len(T_phone) > 0 {
  466. admin_r.T_phone = T_phone
  467. }
  468. if len(T_mail) > 0 {
  469. admin_r.T_mail = T_mail
  470. }
  471. if len(T_wx) > 0 {
  472. if T_wx == "-" {
  473. T_wx = ""
  474. }
  475. admin_r.T_wx = T_wx
  476. }
  477. is := Account.Update_Admin(admin_r, "T_name", "T_pass", "T_phone", "T_mail", "T_wx")
  478. if !is {
  479. c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"}
  480. c.ServeJSON()
  481. return
  482. }
  483. admin_r.T_pass = "******"
  484. System.Add_UserLogs_T(c.Admin_r.T_uuid, "用户管理", "修改个人信息", admin_r)
  485. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  486. c.ServeJSON()
  487. return
  488. }
  489. func (c *UserController) User_Add() {
  490. T_power, _ := c.GetInt("T_power")
  491. T_name := c.GetString("T_name")
  492. T_user := c.GetString("T_user")
  493. T_pass := c.GetString("T_pass")
  494. T_phone := c.GetString("T_phone")
  495. T_mail := c.GetString("T_mail")
  496. T_wx := c.GetString("T_wx")
  497. T_uuid := uuid.NewV4().String()
  498. var_ := Account.Admin{
  499. T_uuid: T_uuid,
  500. T_pid: c.T_pid,
  501. T_name: T_name,
  502. T_user: T_user,
  503. T_phone: T_phone,
  504. T_mail: T_mail,
  505. T_wx: T_wx,
  506. T_pass: T_pass,
  507. T_power: T_power,
  508. T_State: 1,
  509. }
  510. if len(T_pass) < 8 {
  511. c.Data["json"] = lib.JSONS{Code: 202, Msg: "密码异常!"}
  512. c.ServeJSON()
  513. return
  514. }
  515. _, err := Account.Read_Admin_T_user(T_user)
  516. if err == nil {
  517. c.Data["json"] = lib.JSONS{Code: 302, Msg: "账户重复!"}
  518. c.ServeJSON()
  519. return
  520. }
  521. _, err = Account.Add_Admin(var_)
  522. if err != nil {
  523. c.Data["json"] = lib.JSONS{Code: 301, Msg: "添加失败!"}
  524. c.ServeJSON()
  525. return
  526. }
  527. var_.T_pass = "******"
  528. System.Add_UserLogs_T(c.Admin_r.T_uuid, "用户管理", "添加", var_)
  529. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  530. c.ServeJSON()
  531. return
  532. }
  533. func (c *UserController) User_Edit() {
  534. T_uuid := c.GetString("T_uuid")
  535. if len(T_uuid) < 8 {
  536. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  537. c.ServeJSON()
  538. return
  539. }
  540. r, err := Account.Read_Admin_ByUuid(T_uuid)
  541. if err != nil {
  542. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  543. c.ServeJSON()
  544. return
  545. }
  546. T_power, T_power_err := c.GetInt("T_power")
  547. T_name := c.GetString("T_name")
  548. T_pass := c.GetString("T_pass")
  549. T_phone := c.GetString("T_phone")
  550. T_mail := c.GetString("T_mail")
  551. if T_power_err == nil {
  552. r.T_power = T_power
  553. }
  554. if len(T_pass) < 8 && len(T_pass) > 0 {
  555. c.Data["json"] = lib.JSONS{Code: 202, Msg: "密码异常!"}
  556. c.ServeJSON()
  557. return
  558. }
  559. if len(T_name) > 0 {
  560. r.T_name = T_name
  561. }
  562. if len(T_pass) >= 8 {
  563. r.T_pass = T_pass
  564. }
  565. if len(T_phone) > 0 {
  566. r.T_phone = T_phone
  567. }
  568. if len(T_mail) > 0 {
  569. r.T_mail = T_mail
  570. }
  571. is := Account.Update_Admin(r, "T_power", "T_pid", "T_name", "T_pass", "T_phone", "T_mail")
  572. if !is {
  573. c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"}
  574. c.ServeJSON()
  575. return
  576. }
  577. if len(T_name) > 0 {
  578. if is = Company.Update_CompanyNotice_Bind_By_T_uuid(T_uuid, T_name); !is {
  579. logs.Info("修改用户 => 修改用户关联报警通知失败", T_uuid, T_name)
  580. }
  581. }
  582. r.T_pass = "******"
  583. System.Add_UserLogs_T(c.Admin_r.T_uuid, "用户管理", "编辑", r)
  584. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  585. c.ServeJSON()
  586. return
  587. }
  588. func (c *UserController) User_Del() {
  589. T_uuid := c.GetString("T_uuid")
  590. if len(T_uuid) <= 0 {
  591. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  592. c.ServeJSON()
  593. return
  594. }
  595. admin_r_lod, err := Account.Read_Admin_ByUuid(T_uuid)
  596. if err != nil {
  597. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  598. c.ServeJSON()
  599. return
  600. }
  601. if is := Account.Delete_Admin(admin_r_lod); !is {
  602. c.Data["json"] = lib.JSONS{Code: 202, Msg: "删除失败!"}
  603. c.ServeJSON()
  604. return
  605. }
  606. if is := Company.Delete_CompanyNotice_Bind_By_T_uuid(T_uuid); !is {
  607. logs.Info("删除用户 => 删除用户关联报警通知失败", T_uuid)
  608. }
  609. System.Add_UserLogs_T(c.Admin_r.T_uuid, "用户管理", "删除", T_uuid)
  610. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  611. c.ServeJSON()
  612. return
  613. }
  614. // 管理员
  615. func (c *UserController) User_Home() {
  616. // 报警标识
  617. //设备管理-设备报警 callthepolice
  618. //公司管理-设备报警 companyCallthepolice
  619. //T_warning_sign := c.GetString("T_warning_sign")
  620. power, err := Account.Read_Power_ById(c.Admin_r.T_power)
  621. if err != nil {
  622. c.Data["json"] = lib.JSONS{Code: 202, Msg: "获取菜单失败"}
  623. c.ServeJSON()
  624. return
  625. }
  626. ret := Account.Read_Menu_Bind_List(power.Id, power.T_menu, c.T_pid)
  627. var T_warning_sign string
  628. for _, v := range ret.MenuPermission {
  629. if v == Warning.CompanyCallthepolice {
  630. T_warning_sign = Warning.CompanyCallthepolice
  631. break
  632. }
  633. if v == Warning.Callthepolice {
  634. T_warning_sign = Warning.Callthepolice
  635. }
  636. }
  637. // 验证登录
  638. admin_r := c.Admin_r
  639. type NoticeRecord struct {
  640. Sms int // 短信
  641. Phone int // 电话
  642. }
  643. type Info struct {
  644. T_name string // 姓名
  645. T_pids string // 内部用户绑定的公司id
  646. T_pid int // 公司id
  647. T_Days int // 服务天数
  648. Admin []Account.Admin_ // 专属管理员
  649. WarningSign string // 报警标识
  650. WarningNum int64 // 报警数量
  651. UntreatedWarningNum int64 // 未处理报警数量
  652. NewsNum int64 // 消息数量
  653. WorkOrderNum int64 // 工单数量
  654. WarningRate float32 // 设备报警率
  655. UntreatedWorkOrderNum int64 // 未处理工单数量
  656. Balance float32 // 余额
  657. NoticeRecord NoticeRecord // 通知记录
  658. CompanyKey string
  659. CompanyName string
  660. }
  661. var info Info
  662. info.T_name = admin_r.T_name
  663. info.T_pid = admin_r.T_pid
  664. var Company_r Account.Company
  665. if c.T_pid > 0 {
  666. Company_r, err = Account.Read_Company_ById(c.T_pid)
  667. if err != nil {
  668. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  669. c.ServeJSON()
  670. return
  671. }
  672. info.CompanyKey = Company_r.T_key
  673. info.CompanyName = Company_r.T_name
  674. }
  675. if admin_r.T_pid > 0 {
  676. info.WarningSign = T_warning_sign
  677. bindSN, err := Account.Read_UserDevice_List(c.Admin_r)
  678. if err != nil {
  679. c.Data["json"] = lib.JSONS{Code: 202, Msg: "查询失败!"}
  680. c.ServeJSON()
  681. return
  682. }
  683. power, _ := Account.Read_Power_ById(admin_r.T_power)
  684. company, _ := Account.Read_Company_ById(admin_r.T_pid)
  685. info.T_Days = lib.GetDiffDays(time.Now(), company.CreateTime)
  686. AdminList := Account.Read_Admin_List_T_pids(admin_r.T_pid)
  687. var Admin_ []Account.Admin_
  688. for _, v := range AdminList {
  689. Admin_ = append(Admin_, Account.Admin_RToAdmin_(v))
  690. }
  691. info.Admin = Admin_
  692. T_pids := []int{}
  693. // 拥有公司管理-设备报警权限 统计公司及其所有子公司的今日报警数量、未处理报警数量、我的消息数量
  694. if T_warning_sign == Warning.CompanyCallthepolice {
  695. T_pids = Account.ReadCompanyIds_T_path(Company_r.T_path)
  696. info.WarningNum = Warning.Read_Warning_ALL_T_State_Count(0, T_pids, 1, bindSN, power.T_warning, true)
  697. info.UntreatedWarningNum = Warning.Read_Warning_ALL_T_State_Count(0, T_pids, 3, bindSN, power.T_warning, false)
  698. info.NewsNum = Warning.Read_Warning_ALL_T_State_Count(0, T_pids, 1, bindSN, "T1003|T1002|", false)
  699. }
  700. // 拥有设备管理-设备报警权限 统计本公司今日报警数量、未处理报警数量、我的消息数量
  701. if T_warning_sign == Warning.Callthepolice {
  702. info.WarningNum = Warning.Read_Warning_ALL_T_State_Count(admin_r.T_pid, T_pids, 1, bindSN, power.T_warning, true)
  703. info.UntreatedWarningNum = Warning.Read_Warning_ALL_T_State_Count(admin_r.T_pid, T_pids, 3, bindSN, power.T_warning, false)
  704. info.NewsNum = Warning.Read_Warning_ALL_T_State_Count(admin_r.T_pid, T_pids, 1, bindSN, "T1003|T1002|", false)
  705. }
  706. info.Balance = company.T_money
  707. info.NoticeRecord.Sms = Warning.Get_WarningSandNum_CurrentMonth(admin_r.T_pid, 1)
  708. info.NoticeRecord.Phone = Warning.Get_WarningSandNum_CurrentMonth(admin_r.T_pid, 2)
  709. }
  710. if admin_r.T_pid == 0 {
  711. if len(admin_r.T_pids) > 0 && admin_r.T_pids != "*" {
  712. info.T_pids = admin_r.T_pids
  713. info.WarningRate = Warning.Read_WarningRate_Yesterday(admin_r.T_uuid)
  714. }
  715. info.WorkOrderNum, info.UntreatedWorkOrderNum = NatsServer.Read_WorkOrderT_State_Count(admin_r.T_pids)
  716. }
  717. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: info}
  718. c.ServeJSON()
  719. return
  720. }
  721. // 内部用户管理
  722. func (c *UserController) Admin_List() {
  723. var r_jsons lib.R_JSONS
  724. page, _ := c.GetInt("page")
  725. if page < 1 {
  726. page = 1
  727. }
  728. page_z, _ := c.GetInt("page_z")
  729. if page_z < 1 {
  730. page_z = conf.Page_size
  731. }
  732. T_name := c.GetString("T_name")
  733. if c.Admin_r.T_pid > 0 {
  734. c.Data["json"] = lib.JSONS{Code: 202, Msg: "无权查看!"}
  735. c.ServeJSON()
  736. return
  737. }
  738. T_bind_company, _ := c.GetInt("T_bind_company") // 管理员绑定公司 0-全部 1-绑定公司
  739. Account.Read_Power_All_Map()
  740. userList, num := Account.Read_Admin_List(0, T_name, page, page_z)
  741. r_jsons.Data, r_jsons.Num = userList, num
  742. // 过滤已绑定公司列表
  743. if T_bind_company == 1 {
  744. var adminList []Account.Admin_R
  745. for _, v := range userList {
  746. if len(v.T_pids) == 0 || v.T_pids == "*" {
  747. continue
  748. }
  749. adminList = append(adminList, v)
  750. }
  751. r_jsons.Data = adminList
  752. }
  753. r_jsons.Page = page
  754. r_jsons.Page_size = int(math.Ceil(float64(r_jsons.Num) / float64(page_z)))
  755. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  756. c.ServeJSON()
  757. return
  758. }
  759. func (c *UserController) Admin_Get() {
  760. T_uuid := c.GetString("T_uuid")
  761. if len(T_uuid) < 8 {
  762. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  763. c.ServeJSON()
  764. return
  765. }
  766. admin_r, err := Account.Read_Admin_ByUuid(T_uuid)
  767. if err != nil {
  768. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  769. c.ServeJSON()
  770. return
  771. }
  772. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: Account.AdminToAdmin_R(admin_r)}
  773. c.ServeJSON()
  774. return
  775. }
  776. func (c *UserController) Admin_Add() {
  777. T_power, _ := c.GetInt("T_power")
  778. T_name := c.GetString("T_name")
  779. T_user := c.GetString("T_user")
  780. T_pass := c.GetString("T_pass")
  781. T_phone := c.GetString("T_phone")
  782. T_mail := c.GetString("T_mail")
  783. T_wx := c.GetString("T_wx")
  784. var_ := Account.Admin{
  785. T_uuid: uuid.NewV4().String(),
  786. T_pid: 0,
  787. T_name: T_name,
  788. T_user: T_user,
  789. T_phone: T_phone,
  790. T_mail: T_mail,
  791. T_wx: T_wx,
  792. T_pass: T_pass,
  793. T_power: T_power,
  794. T_State: 1,
  795. }
  796. if len(T_pass) < 8 {
  797. c.Data["json"] = lib.JSONS{Code: 202, Msg: "密码异常!"}
  798. c.ServeJSON()
  799. return
  800. }
  801. _, err := Account.Read_Admin_T_user(T_user)
  802. if err == nil {
  803. c.Data["json"] = lib.JSONS{Code: 302, Msg: "账户重复!"}
  804. c.ServeJSON()
  805. return
  806. }
  807. _, err = Account.Add_Admin(var_)
  808. if err != nil {
  809. c.Data["json"] = lib.JSONS{Code: 301, Msg: "添加失败!"}
  810. c.ServeJSON()
  811. return
  812. }
  813. var_.T_pass = "******"
  814. System.Add_UserLogs_T(c.Admin_r.T_uuid, "内部用户管理", "添加", var_)
  815. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  816. c.ServeJSON()
  817. return
  818. }
  819. func (c *UserController) Admin_Edit() {
  820. T_uuid := c.GetString("T_uuid")
  821. if len(T_uuid) < 8 {
  822. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  823. c.ServeJSON()
  824. return
  825. }
  826. r, err := Account.Read_Admin_ByUuid(T_uuid)
  827. if err != nil {
  828. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  829. c.ServeJSON()
  830. return
  831. }
  832. T_power, T_power_err := c.GetInt("T_power")
  833. T_user := c.GetString("T_user")
  834. T_name := c.GetString("T_name")
  835. T_pass := c.GetString("T_pass")
  836. T_phone := c.GetString("T_phone")
  837. T_mail := c.GetString("T_mail")
  838. T_wx := c.GetString("T_wx")
  839. if T_power_err == nil {
  840. r.T_power = T_power
  841. }
  842. if len(T_pass) < 8 && len(T_pass) > 0 {
  843. c.Data["json"] = lib.JSONS{Code: 202, Msg: "密码异常!"}
  844. c.ServeJSON()
  845. return
  846. }
  847. if len(T_user) > 0 {
  848. var admin Account.Admin
  849. admin, err = Account.Read_Admin_T_user(T_user)
  850. if err == nil && admin.T_uuid != T_uuid {
  851. c.Data["json"] = lib.JSONS{Code: 302, Msg: "用户名重复!"}
  852. c.ServeJSON()
  853. return
  854. }
  855. r.T_user = T_user
  856. }
  857. if len(T_name) > 0 {
  858. r.T_name = T_name
  859. }
  860. if len(T_pass) >= 8 {
  861. r.T_pass = T_pass
  862. }
  863. if len(T_phone) > 0 {
  864. r.T_phone = T_phone
  865. }
  866. if len(T_mail) > 0 {
  867. r.T_mail = T_mail
  868. }
  869. if len(T_wx) > 0 {
  870. r.T_wx = T_wx
  871. }
  872. is := Account.Update_Admin(r, "T_user", "T_power", "T_name", "T_pass", "T_phone", "T_mail", "T_wx")
  873. if !is {
  874. c.Data["json"] = lib.JSONS{Code: 202, Msg: "修改失败!"}
  875. c.ServeJSON()
  876. return
  877. }
  878. if len(T_name) > 0 {
  879. if is = Company.Update_CompanyNotice_Bind_By_T_uuid(T_uuid, "内管-"+T_name); !is {
  880. logs.Info("修改内部用户 => 修改内部用户关联报警通知失败", T_uuid, T_name)
  881. }
  882. }
  883. r.T_pass = "********"
  884. System.Add_UserLogs_T(c.Admin_r.T_uuid, "内部用户管理", "修改", r)
  885. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  886. c.ServeJSON()
  887. return
  888. }
  889. func (c *UserController) Admin_Del() {
  890. T_uuid := c.GetString("T_uuid")
  891. if len(T_uuid) <= 0 {
  892. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  893. c.ServeJSON()
  894. return
  895. }
  896. admin_r_lod, err := Account.Read_Admin_ByUuid(T_uuid)
  897. if err != nil {
  898. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  899. c.ServeJSON()
  900. return
  901. }
  902. if admin_r_lod.Id == 1 {
  903. c.Data["json"] = lib.JSONS{Code: 202, Msg: "无权删除!"}
  904. c.ServeJSON()
  905. return
  906. }
  907. if is := Account.Delete_Admin(admin_r_lod); !is {
  908. c.Data["json"] = lib.JSONS{Code: 202, Msg: "删除失败!"}
  909. c.ServeJSON()
  910. return
  911. }
  912. if is := Company.Delete_CompanyNotice_Bind_By_T_uuid(T_uuid); !is {
  913. logs.Info("删除内部用户 => 删除内部用户关联报警通知失败", T_uuid)
  914. }
  915. System.Add_UserLogs_T(c.Admin_r.T_uuid, "内部用户管理", "删除", T_uuid)
  916. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  917. c.ServeJSON()
  918. return
  919. }
  920. // 报警通知的用户列表
  921. func (c *UserController) User_Notice_List() {
  922. T_name := c.GetString("T_name")
  923. type R_JSONS struct {
  924. //必须的大写开头
  925. AdminList []Account.Admin_R
  926. UserList []Account.Admin_R
  927. }
  928. var AdminList, UserList []Account.Admin_R
  929. var r_jsons R_JSONS
  930. // 操作pid
  931. company_r, err := Account.Read_Company_ById(c.T_pid)
  932. if err != nil {
  933. c.Data["json"] = lib.JSONS{Code: 202, Msg: "查询失败!"}
  934. c.ServeJSON()
  935. return
  936. }
  937. T_pids := []int{}
  938. for _, v := range strings.Split(strings.Trim(company_r.T_path, "/"), "/") {
  939. pid, _ := strconv.Atoi(v)
  940. T_pids = append(T_pids, pid)
  941. }
  942. // 绑定公司id的内部用户列表
  943. AdminList = Account.Read_Admin_List_T_pids(c.T_pid)
  944. // 绑定公司id的公司用户列表
  945. //r_jsons.UserList = Account.Read_Admin_List_T_pid(c.T_pid)
  946. // 绑定上级公司用户列表
  947. UserList = Account.Read_Parent_Admin_List(T_pids)
  948. if len(T_name) > 0 {
  949. for _, v := range AdminList {
  950. if strings.Contains(v.T_name, T_name) {
  951. r_jsons.AdminList = append(r_jsons.AdminList, v)
  952. }
  953. }
  954. for _, v := range UserList {
  955. if strings.Contains(v.T_name, T_name) {
  956. r_jsons.UserList = append(r_jsons.UserList, v)
  957. }
  958. }
  959. } else {
  960. r_jsons.AdminList = AdminList
  961. r_jsons.UserList = UserList
  962. }
  963. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  964. c.ServeJSON()
  965. return
  966. }
  967. // 管理员绑定公司
  968. func (c *UserController) AdminCompanyBind_List() {
  969. var r_jsons lib.R_JSONS
  970. T_uuid := c.GetString("T_uuid")
  971. if len(T_uuid) < 8 {
  972. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  973. c.ServeJSON()
  974. return
  975. }
  976. r, err := Account.Read_Admin_ByUuid(T_uuid)
  977. if err != nil {
  978. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  979. c.ServeJSON()
  980. return
  981. }
  982. r_jsons.Data = Account.Read_Company_List_ByT_pids(r.T_pids)
  983. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  984. c.ServeJSON()
  985. return
  986. }
  987. func (c *UserController) AdminCompanyBind_Add() {
  988. T_uuid := c.GetString("T_uuid")
  989. if len(T_uuid) < 8 {
  990. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  991. c.ServeJSON()
  992. return
  993. }
  994. T_pid, _ := c.GetInt("T_pid")
  995. if T_pid == 0 {
  996. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_pid Err!"}
  997. c.ServeJSON()
  998. return
  999. }
  1000. r, err := Account.Read_Admin_ByUuid(T_uuid)
  1001. if err != nil {
  1002. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  1003. c.ServeJSON()
  1004. return
  1005. }
  1006. if r.T_pids == "*" {
  1007. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1008. c.ServeJSON()
  1009. return
  1010. }
  1011. Company_r, err := Account.Read_Company_ById(T_pid)
  1012. if err != nil {
  1013. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_pid Err!"}
  1014. c.ServeJSON()
  1015. return
  1016. }
  1017. T_pids := Account.ReadCompanyIds_T_path(Company_r.T_path)
  1018. if err = Account.Add_Company_bind(r, T_pids); err != nil {
  1019. c.Data["json"] = lib.JSONS{Code: 202, Msg: "公司绑定失败"}
  1020. c.ServeJSON()
  1021. return
  1022. }
  1023. System.Add_UserLogs(c.Admin_r.T_uuid, "内部用户管理", "公司绑定添加", T_uuid+"-"+strconv.Itoa(T_pid))
  1024. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1025. c.ServeJSON()
  1026. return
  1027. }
  1028. func (c *UserController) AdminCompanyBind_Del() {
  1029. T_uuid := c.GetString("T_uuid")
  1030. if len(T_uuid) < 8 {
  1031. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  1032. c.ServeJSON()
  1033. return
  1034. }
  1035. T_pid, _ := c.GetInt("T_pid")
  1036. if T_pid == 0 {
  1037. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_pid Err!"}
  1038. c.ServeJSON()
  1039. return
  1040. }
  1041. r, err := Account.Read_Admin_ByUuid(T_uuid)
  1042. Company_r, err := Account.Read_Company_ById(T_pid)
  1043. if err != nil {
  1044. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_pid Err!"}
  1045. c.ServeJSON()
  1046. return
  1047. }
  1048. T_pids := Account.ReadCompanyIds_T_path(Company_r.T_path)
  1049. if len(T_pids) == 0 {
  1050. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1051. c.ServeJSON()
  1052. return
  1053. }
  1054. if err = Account.Delete_Company_bind(r, T_pids); err != nil {
  1055. c.Data["json"] = lib.JSONS{Code: 202, Msg: "公司绑定失败"}
  1056. c.ServeJSON()
  1057. return
  1058. }
  1059. if is := Company.Delete_CompanyNotice_Bind_By_T_uuid_T_pid(T_uuid, T_pids); !is {
  1060. logs.Info("删除内部用户公司绑定 => 删除内部用户绑定的公司关联报警通知失败", T_uuid)
  1061. }
  1062. System.Add_UserLogs(c.Admin_r.T_uuid, "内部用户管理", "公司绑定删除", T_uuid+"-"+strconv.Itoa(T_pid))
  1063. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1064. c.ServeJSON()
  1065. return
  1066. }
  1067. // 权限管理
  1068. func (c *UserController) Power_List() {
  1069. var r_jsons lib.R_JSONS
  1070. page, _ := c.GetInt("page")
  1071. if page < 1 {
  1072. page = 1
  1073. }
  1074. page_z, _ := c.GetInt("page_z")
  1075. if page_z < 1 {
  1076. page_z = conf.Page_size
  1077. }
  1078. Name := c.GetString("T_name")
  1079. r_jsons.Data, r_jsons.Num = Account.Read_Power_List(Name, page, page_z)
  1080. r_jsons.Page = page
  1081. r_jsons.Page_size = int(math.Ceil(float64(r_jsons.Num) / float64(page_z)))
  1082. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  1083. c.ServeJSON()
  1084. return
  1085. }
  1086. // 添加用户 权限选择列表
  1087. func (c *UserController) Power_List_All() {
  1088. r, err := Account.Read_Power_ById(c.Admin_r.T_power)
  1089. if err != nil {
  1090. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  1091. c.ServeJSON()
  1092. return
  1093. }
  1094. var r_jsons lib.R_JSONS
  1095. r_jsons.Data = Account.Read_Power_List_ALL_User(r.T_select)
  1096. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  1097. c.ServeJSON()
  1098. return
  1099. }
  1100. func (c *UserController) Power_Get() {
  1101. type Data struct {
  1102. Power Account.Power_
  1103. Menu []Account.Menu
  1104. Menu_checked []int
  1105. Select []Account.Power_R
  1106. Warning []Warning.WarningType_R
  1107. }
  1108. var data Data
  1109. id, id_err := c.GetInt("T_id")
  1110. if id_err != nil || id == 0 {
  1111. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_id Err!"}
  1112. c.ServeJSON()
  1113. return
  1114. }
  1115. power, err := Account.Read_Power_ById(id)
  1116. if err != nil {
  1117. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_id Err!"}
  1118. c.ServeJSON()
  1119. return
  1120. }
  1121. data.Power = Account.PowerToPower_(power)
  1122. data.Menu, data.Menu_checked = Account.Read_Menu_List_All()
  1123. if err != nil {
  1124. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_menu Err!"}
  1125. c.ServeJSON()
  1126. return
  1127. }
  1128. if power.T_menu != "*" {
  1129. data.Menu_checked = lib.SplitStringToIntIds(power.T_menu, "M")
  1130. }
  1131. if err != nil {
  1132. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_menu Err!"}
  1133. c.ServeJSON()
  1134. return
  1135. }
  1136. data.Select = Account.Read_Power_List_ALL_T_select(power.T_select)
  1137. if err != nil {
  1138. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_select Err!"}
  1139. c.ServeJSON()
  1140. return
  1141. }
  1142. data.Warning = Warning.Read_WarningType_All_Power_T_Warning(power.T_warning)
  1143. if err != nil {
  1144. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_warning Err!"}
  1145. c.ServeJSON()
  1146. return
  1147. }
  1148. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: data}
  1149. c.ServeJSON()
  1150. return
  1151. }
  1152. func (c *UserController) Power_Add() {
  1153. T_name := c.GetString("T_name")
  1154. T_select := c.GetString("T_select")
  1155. T_warning := c.GetString("T_warning")
  1156. T_menu := c.GetString("T_menu")
  1157. var_ := Account.Power{
  1158. T_name: T_name,
  1159. T_select: T_select,
  1160. T_warning: T_warning,
  1161. T_menu: T_menu,
  1162. T_State: 1,
  1163. }
  1164. _, err := Account.Add_Power(var_)
  1165. if err != nil {
  1166. c.Data["json"] = lib.JSONS{Code: 301, Msg: "添加失败!"}
  1167. c.ServeJSON()
  1168. return
  1169. }
  1170. System.Add_UserLogs_T(c.Admin_r.T_uuid, "权限管理", "添加", var_)
  1171. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1172. c.ServeJSON()
  1173. return
  1174. }
  1175. func (c *UserController) Power_Edit() {
  1176. Id, Id_err := c.GetInt("T_id")
  1177. if Id_err != nil || Id == 0 {
  1178. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  1179. c.ServeJSON()
  1180. return
  1181. }
  1182. if Id == 1 {
  1183. c.Data["json"] = lib.JSONS{Code: 202, Msg: "无权修改!"}
  1184. c.ServeJSON()
  1185. return
  1186. }
  1187. r, err := Account.Read_Power_ById(Id)
  1188. if err != nil {
  1189. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  1190. c.ServeJSON()
  1191. return
  1192. }
  1193. T_name := c.GetString("T_name")
  1194. T_select := c.GetString("T_select")
  1195. T_warning := c.GetString("T_warning")
  1196. T_menu := c.GetString("T_menu")
  1197. if len(T_name) > 0 {
  1198. r.T_name = T_name
  1199. }
  1200. if len(T_select) > 0 {
  1201. r.T_select = T_select
  1202. }
  1203. if len(T_warning) > 0 {
  1204. r.T_warning = T_warning
  1205. }
  1206. if len(T_menu) > 0 {
  1207. r.T_menu = T_menu
  1208. }
  1209. is := Account.Update_Power(r, "T_name", "T_select", "T_warning", "T_menu")
  1210. if !is {
  1211. c.Data["json"] = lib.JSONS{Code: 302, Msg: "修改失败!"}
  1212. c.ServeJSON()
  1213. return
  1214. }
  1215. System.Add_UserLogs_T(c.Admin_r.T_uuid, "权限管理", "修改", r)
  1216. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1217. c.ServeJSON()
  1218. return
  1219. }
  1220. func (c *UserController) Power_Del() {
  1221. id, id_err := c.GetInt("T_id")
  1222. if id_err != nil || id == 0 {
  1223. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  1224. c.ServeJSON()
  1225. return
  1226. }
  1227. r, err := Account.Read_Power_ById(id)
  1228. if err != nil {
  1229. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  1230. c.ServeJSON()
  1231. return
  1232. }
  1233. if cnt := Account.Read_Admin_Num_ByT_power(id); cnt > 0 {
  1234. c.Data["json"] = lib.JSONS{Code: 202, Msg: "有关联用户,禁止删除!"}
  1235. c.ServeJSON()
  1236. return
  1237. }
  1238. is := Account.Delete_Power(r)
  1239. if !is {
  1240. c.Data["json"] = lib.JSONS{Code: 302, Msg: "删除失败!"}
  1241. c.ServeJSON()
  1242. return
  1243. }
  1244. System.Add_UserLogs(c.Admin_r.T_uuid, "权限管理", "删除", strconv.Itoa(id))
  1245. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1246. c.ServeJSON()
  1247. return
  1248. }
  1249. // 菜单列表
  1250. func (c *UserController) User_Menu_List() {
  1251. type R_JSONS struct {
  1252. //必须的大写开头
  1253. Data interface{}
  1254. Permission interface{}
  1255. }
  1256. var r_jsons R_JSONS
  1257. power, err := Account.Read_Power_ById(c.Admin_r.T_power)
  1258. if err != nil {
  1259. c.Data["json"] = lib.JSONS{Code: 202, Msg: "获取菜单失败"}
  1260. c.ServeJSON()
  1261. return
  1262. }
  1263. //logs.Info("登录用户 菜单 pid 为:", c.T_pid)
  1264. ret := Account.Read_Menu_Bind_List(power.Id, power.T_menu, c.T_pid)
  1265. r_jsons.Data = ret.Menu
  1266. r_jsons.Permission = ret.Permission
  1267. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  1268. c.ServeJSON()
  1269. return
  1270. }
  1271. // 权限菜单列表
  1272. func (c *UserController) Menu_List_All() {
  1273. var r_jsons lib.R_JSONS
  1274. r_jsons.Data, _ = Account.Read_Menu_List_All()
  1275. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  1276. c.ServeJSON()
  1277. return
  1278. }
  1279. func (c *UserController) Menu_Excel() {
  1280. filename := fmt.Sprintf("冷链3.0菜单")
  1281. f := excelize.NewFile()
  1282. Style1, _ := f.NewStyle(
  1283. &excelize.Style{
  1284. Font: &excelize.Font{Bold: true, Size: 16, Family: "宋体"},
  1285. Alignment: &excelize.Alignment{Horizontal: "center", Vertical: "center"},
  1286. })
  1287. Style2, _ := f.NewStyle(
  1288. &excelize.Style{
  1289. Font: &excelize.Font{Bold: true, Size: 14, Family: "宋体"},
  1290. Alignment: &excelize.Alignment{Horizontal: "center", Vertical: "center", WrapText: true},
  1291. Border: []excelize.Border{
  1292. {Type: "left", Color: "000000", Style: 1},
  1293. {Type: "top", Color: "000000", Style: 1},
  1294. {Type: "bottom", Color: "000000", Style: 1},
  1295. {Type: "right", Color: "000000", Style: 1},
  1296. },
  1297. })
  1298. f.MergeCell("Sheet1", "A1", "G1")
  1299. f.SetRowStyle("Sheet1", 1, 1, Style1)
  1300. f.SetCellValue("Sheet1", "A1", "Menu")
  1301. f.SetRowHeight("Sheet1", 1, 30)
  1302. f.MergeCell("Sheet1", "H1", "M1")
  1303. f.SetRowStyle("Sheet1", 1, 1, Style1)
  1304. f.SetCellValue("Sheet1", "H1", "API")
  1305. f.SetRowHeight("Sheet1", 1, 30)
  1306. f.SetCellStyle("Sheet1", "A2", "G2", Style2)
  1307. f.SetRowHeight("Sheet1", 2, 25)
  1308. // 这里设置表头
  1309. f.SetCellValue("Sheet1", "A2", "ID")
  1310. f.SetCellValue("Sheet1", "B2", "t_mid")
  1311. f.SetCellValue("Sheet1", "C2", "t_name")
  1312. f.SetCellValue("Sheet1", "D2", "t_permission")
  1313. f.SetCellValue("Sheet1", "E2", "t_sort")
  1314. f.SetCellValue("Sheet1", "F2", "t_pid")
  1315. f.SetCellValue("Sheet1", "G2", "t_icon")
  1316. f.SetCellValue("Sheet1", "H2", "ID")
  1317. f.SetCellValue("Sheet1", "I2", "t__menu__id")
  1318. f.SetCellValue("Sheet1", "J2", "t_name")
  1319. f.SetCellValue("Sheet1", "K2", "t_uri")
  1320. f.SetCellValue("Sheet1", "L2", "t_method")
  1321. f.SetCellValue("Sheet1", "M2", "t_enable")
  1322. // 设置列宽
  1323. f.SetColWidth("Sheet1", "A", "M", 15)
  1324. line := 2
  1325. menu := Account.Read_Menu_All()
  1326. for _, m := range menu {
  1327. Menu_Call(f, m, line)
  1328. }
  1329. Style11, _ := f.NewStyle(
  1330. &excelize.Style{
  1331. Font: &excelize.Font{Size: 10, Family: "宋体"},
  1332. Alignment: &excelize.Alignment{Horizontal: "center", Vertical: "center", WrapText: true},
  1333. Border: []excelize.Border{
  1334. {Type: "top", Color: "000000", Style: 1},
  1335. },
  1336. })
  1337. Style22, _ := f.NewStyle(
  1338. &excelize.Style{
  1339. Font: &excelize.Font{Size: 10, Family: "宋体"},
  1340. Alignment: &excelize.Alignment{Horizontal: "center", Vertical: "center", WrapText: true},
  1341. Border: []excelize.Border{
  1342. {Type: "left", Color: "000000", Style: 1},
  1343. },
  1344. })
  1345. Style33, _ := f.NewStyle(
  1346. &excelize.Style{
  1347. Font: &excelize.Font{Size: 10, Family: "宋体"},
  1348. Alignment: &excelize.Alignment{Horizontal: "center", Vertical: "center", WrapText: true},
  1349. Border: []excelize.Border{
  1350. {Type: "right", Color: "000000", Style: 1},
  1351. },
  1352. })
  1353. Style44, _ := f.NewStyle(
  1354. &excelize.Style{
  1355. Font: &excelize.Font{Size: 10, Family: "宋体"},
  1356. Alignment: &excelize.Alignment{Horizontal: "center", Vertical: "center", WrapText: true},
  1357. Border: []excelize.Border{
  1358. {Type: "bottom", Color: "000000", Style: 1},
  1359. },
  1360. })
  1361. //// 循环写入数据
  1362. for _, v := range menu {
  1363. line1 := line
  1364. line = Menu_Call(f, v, line)
  1365. f.SetCellStyle("Sheet1", fmt.Sprintf("A%d", line1), fmt.Sprintf("M%d", line1), Style11)
  1366. f.SetCellStyle("Sheet1", fmt.Sprintf("A%d", line), fmt.Sprintf("A%d", line), Style22)
  1367. f.SetCellStyle("Sheet1", fmt.Sprintf("M%d", line), fmt.Sprintf("M%d", line), Style33)
  1368. f.SetCellStyle("Sheet1", fmt.Sprintf("A%d", line), fmt.Sprintf("M%d", line), Style44)
  1369. }
  1370. timeStr := filename + fmt.Sprintf("(%s)", lib.GetRandstring(8, "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", 0))
  1371. // 保存文件
  1372. if err := f.SaveAs("ofile/" + timeStr + ".xlsx"); err != nil {
  1373. logs.Error(err)
  1374. }
  1375. var url string
  1376. ////// 上传 OSS
  1377. //url, is := NatsServer.Qiniu_UploadFile(lib.GetCurrentDirectory()+"/ofile/"+timeStr+".xlsx", "ofile/"+timeStr+".xlsx")
  1378. //if !is {
  1379. // c.Data["json"] = lib.JSONS{Code: 202, Msg: "oss!"}
  1380. // c.ServeJSON()
  1381. // return
  1382. //}
  1383. ////删除目录
  1384. //err = os.Remove("ofile/" + timeStr + ".xlsx")
  1385. //if err != nil {
  1386. // logs.Error(err)
  1387. //}
  1388. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: url}
  1389. c.ServeJSON()
  1390. return
  1391. }
  1392. func Menu_Call(f *excelize.File, v Account.Menu, line int) int {
  1393. line++
  1394. f.SetCellValue("Sheet1", fmt.Sprintf("A%d", line), v.Id)
  1395. f.SetCellValue("Sheet1", fmt.Sprintf("B%d", line), v.T_mid)
  1396. f.SetCellValue("Sheet1", fmt.Sprintf("C%d", line), v.T_name)
  1397. f.SetCellValue("Sheet1", fmt.Sprintf("D%d", line), v.T_permission)
  1398. f.SetCellValue("Sheet1", fmt.Sprintf("E%d", line), v.T_sort)
  1399. f.SetCellValue("Sheet1", fmt.Sprintf("F%d", line), v.T_pid)
  1400. f.SetCellValue("Sheet1", fmt.Sprintf("G%d", line), v.T_icon)
  1401. apiList := Account.Read_API_List_ByMenuId(v.Id)
  1402. for _, api := range apiList {
  1403. f.SetCellValue("Sheet1", fmt.Sprintf("H%d", line), api.Id)
  1404. f.SetCellValue("Sheet1", fmt.Sprintf("I%d", line), api.T_Menu_Id)
  1405. f.SetCellValue("Sheet1", fmt.Sprintf("J%d", line), api.T_name)
  1406. f.SetCellValue("Sheet1", fmt.Sprintf("K%d", line), api.T_uri)
  1407. f.SetCellValue("Sheet1", fmt.Sprintf("L%d", line), api.T_method)
  1408. f.SetCellValue("Sheet1", fmt.Sprintf("M%d", line), api.T_enable)
  1409. line++
  1410. }
  1411. return line
  1412. }
  1413. // 流量池
  1414. func (c *UserController) Flow_Pool() {
  1415. var r_jsons lib.R_JSONS
  1416. r_jsons.Data, _ = lib.Yidong_group_data_margin()
  1417. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  1418. c.ServeJSON()
  1419. return
  1420. }
  1421. // 账单下载
  1422. func (c *UserController) CompanyBill_Excel() {
  1423. T_month := c.GetString("T_month")
  1424. _, err := time.Parse("2006-01", T_month)
  1425. if err != nil {
  1426. c.Data["json"] = lib.JSONS{Code: 202, Msg: "日期格式错误!"}
  1427. c.ServeJSON()
  1428. return
  1429. }
  1430. year, month := strings.Split(T_month, "-")[0], strings.Split(T_month, "-")[1]
  1431. company, _ := Account.Read_Company_ById(c.Admin_r.T_pid)
  1432. if err != nil {
  1433. c.Data["json"] = lib.JSONS{Code: 202, Msg: "查询失败!"}
  1434. c.ServeJSON()
  1435. return
  1436. }
  1437. filename := fmt.Sprintf("%s%s年%s月账单", company.T_name, year, month)
  1438. f := excelize.NewFile()
  1439. Style1, _ := f.NewStyle(
  1440. &excelize.Style{
  1441. Font: &excelize.Font{Bold: true, Size: 16, Family: "宋体"},
  1442. Alignment: &excelize.Alignment{Horizontal: "center", Vertical: "center"},
  1443. })
  1444. Style2, _ := f.NewStyle(
  1445. &excelize.Style{
  1446. Font: &excelize.Font{Bold: true, Size: 14, Family: "宋体"},
  1447. Alignment: &excelize.Alignment{Horizontal: "center", Vertical: "center", WrapText: true},
  1448. Border: []excelize.Border{
  1449. {Type: "left", Color: "000000", Style: 1},
  1450. {Type: "top", Color: "000000", Style: 1},
  1451. {Type: "bottom", Color: "000000", Style: 1},
  1452. {Type: "right", Color: "000000", Style: 1},
  1453. },
  1454. })
  1455. f.MergeCell("Sheet1", "A1", "G1")
  1456. f.SetRowStyle("Sheet1", 1, 1, Style1)
  1457. f.SetCellValue("Sheet1", "A1", filename)
  1458. f.SetRowHeight("Sheet1", 1, 30)
  1459. f.SetCellStyle("Sheet1", "A2", "G2", Style2)
  1460. f.SetRowHeight("Sheet1", 2, 25)
  1461. // 这里设置表头
  1462. f.SetCellValue("Sheet1", "A2", "编号")
  1463. f.SetCellValue("Sheet1", "B2", "项目")
  1464. f.SetCellValue("Sheet1", "C2", "说明")
  1465. f.SetCellValue("Sheet1", "D2", "扣费/充值")
  1466. f.SetCellValue("Sheet1", "E2", "金额(元)")
  1467. f.SetCellValue("Sheet1", "F2", "余额(元)")
  1468. f.SetCellValue("Sheet1", "G2", "时间")
  1469. // 设置列宽
  1470. f.SetColWidth("Sheet1", "A", "A", 10)
  1471. f.SetColWidth("Sheet1", "B", "B", 50)
  1472. f.SetColWidth("Sheet1", "C", "C", 15)
  1473. f.SetColWidth("Sheet1", "D", "D", 12)
  1474. f.SetColWidth("Sheet1", "E", "E", 15)
  1475. f.SetColWidth("Sheet1", "F", "F", 15)
  1476. f.SetColWidth("Sheet1", "G", "G", 20)
  1477. line := 2
  1478. CompanyBill_List, err := Company.Read_CompanyBill_List(c.Admin_r.T_pid, T_month)
  1479. if err != nil {
  1480. c.Data["json"] = lib.JSONS{Code: 202, Msg: "查询失败!"}
  1481. c.ServeJSON()
  1482. return
  1483. }
  1484. // 循环写入数据
  1485. for i, v := range CompanyBill_List {
  1486. line++
  1487. f.SetCellValue("Sheet1", fmt.Sprintf("A%d", line), i+1)
  1488. f.SetCellValue("Sheet1", fmt.Sprintf("B%d", line), v.T_project)
  1489. f.SetCellValue("Sheet1", fmt.Sprintf("C%d", line), v.T_bill)
  1490. f.SetCellValue("Sheet1", fmt.Sprintf("D%d", line), v.T_type)
  1491. f.SetCellValue("Sheet1", fmt.Sprintf("E%d", line), v.T_charging)
  1492. f.SetCellValue("Sheet1", fmt.Sprintf("F%d", line), v.T_balance)
  1493. f.SetCellValue("Sheet1", fmt.Sprintf("G%d", line), v.CreateTime.Format("2006-01-02"))
  1494. }
  1495. Style4, _ := f.NewStyle(
  1496. &excelize.Style{
  1497. Font: &excelize.Font{Size: 12, Family: "宋体"},
  1498. Alignment: &excelize.Alignment{Horizontal: "center", Vertical: "center", WrapText: true},
  1499. Border: []excelize.Border{
  1500. {Type: "left", Color: "000000", Style: 1},
  1501. {Type: "top", Color: "000000", Style: 1},
  1502. {Type: "bottom", Color: "000000", Style: 1},
  1503. {Type: "right", Color: "000000", Style: 1},
  1504. },
  1505. })
  1506. f.SetCellStyle("Sheet1", "A2", fmt.Sprintf("G%d", line), Style4)
  1507. timeStr := filename + fmt.Sprintf("(%s)", lib.GetRandstring(8, "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", 0))
  1508. // 保存文件
  1509. if err = f.SaveAs("ofile/" + timeStr + ".xlsx"); err != nil {
  1510. logs.Error(err)
  1511. }
  1512. var url string
  1513. //// 上传 OSS
  1514. url, is := NatsServer.Qiniu_UploadFile(lib.GetCurrentDirectory()+"/ofile/"+timeStr+".xlsx", "ofile/"+timeStr+".xlsx")
  1515. if !is {
  1516. c.Data["json"] = lib.JSONS{Code: 202, Msg: "oss!"}
  1517. c.ServeJSON()
  1518. return
  1519. }
  1520. //删除目录
  1521. err = os.Remove("ofile/" + timeStr + ".xlsx")
  1522. if err != nil {
  1523. logs.Error(err)
  1524. }
  1525. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: url}
  1526. c.ServeJSON()
  1527. return
  1528. }
  1529. // 获取微信支付二维码
  1530. func (c *UserController) WxPay_QRCode() {
  1531. if c.Admin_r.T_pid == 0 {
  1532. c.Data["json"] = lib.JSONS{Code: 202, Msg: "非公司用户不能充值"}
  1533. c.ServeJSON()
  1534. return
  1535. }
  1536. Total, _ := c.GetFloat("Total")
  1537. Title := "冷链3.0-" + c.Admin_r.T_user
  1538. res, err := lib.PayTransactionNative(Title, Total)
  1539. if err != nil {
  1540. c.Data["json"] = lib.JSONS{Code: 202, Msg: err.Error()}
  1541. c.ServeJSON()
  1542. return
  1543. }
  1544. if res.Code != 200 {
  1545. c.Data["json"] = lib.JSONS{Code: 202, Msg: res.Message}
  1546. c.ServeJSON()
  1547. return
  1548. }
  1549. var_ := Company.CompanyPayOrder{
  1550. T_pid: c.Admin_r.T_pid,
  1551. T_type: "微信",
  1552. T_title: Title,
  1553. T_total: Total,
  1554. T_order_no: res.OrderNo,
  1555. T_remark: c.Admin_r.T_uuid,
  1556. }
  1557. _, err = Company.Add_CompanyPayOrder(var_)
  1558. if err != nil {
  1559. c.Data["json"] = lib.JSONS{Code: 202, Msg: "添加订单失败!"}
  1560. c.ServeJSON()
  1561. return
  1562. }
  1563. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: res}
  1564. c.ServeJSON()
  1565. return
  1566. }
  1567. // 微信支付回调
  1568. func (c *UserController) WxPay_Notify() {
  1569. type RequestBody struct {
  1570. TradeNo string
  1571. Status string
  1572. }
  1573. type JSON struct {
  1574. Code int
  1575. Message string
  1576. }
  1577. buf := make([]byte, 1024)
  1578. n, _ := c.Ctx.Request.Body.Read(buf)
  1579. logs.Info("Body================ ", string(buf[0:n]))
  1580. //解密
  1581. adc_str, _ := lib.AesDeCrypt(buf[0:n], []byte(conf.Weixin_PwdKey))
  1582. //adc_str, _ := lib.AesDeCrypt(buf[0:n], []byte(conf.Weixin_PwdKey))
  1583. var body RequestBody
  1584. logs.Info("data================ ", string(adc_str))
  1585. err := json.Unmarshal(adc_str, &body)
  1586. if err != nil {
  1587. c.Data["json"] = JSON{Code: 202, Message: "json.Unmarshal is err:" + err.Error()}
  1588. c.ServeJSON()
  1589. }
  1590. payOrder, err := Company.Get_CompanyPayOrder_ByT_order_no(body.TradeNo)
  1591. if err != nil {
  1592. c.Data["json"] = JSON{Code: 202, Message: "查询失败!"}
  1593. c.ServeJSON()
  1594. return
  1595. }
  1596. //交易状态
  1597. //SUCCESS:支付成功
  1598. //REFUND:转入退款
  1599. //NOTPAY:未支付
  1600. //CLOSED:已关闭
  1601. //REVOKED:已撤销(付款码支付)
  1602. //USERPAYING:用户支付中(付款码支付)
  1603. //PAYERROR:支付失败(其他原因,如银行返回失败)
  1604. payOrder.T_status = body.Status
  1605. err = Company.Update_CompanyPayOrder(payOrder, "T_status")
  1606. if err != nil {
  1607. c.Data["json"] = JSON{Code: 202, Message: "更新状态失败!"}
  1608. c.ServeJSON()
  1609. return
  1610. }
  1611. // 添加充值记录
  1612. // 余额加上充值金额
  1613. if body.Status == "SUCCESS" {
  1614. Company_r, err := Account.Read_Company_ById(payOrder.T_pid)
  1615. if err != nil {
  1616. c.Data["json"] = lib.JSONS{Code: 202, Msg: "Id Err!"}
  1617. c.ServeJSON()
  1618. return
  1619. }
  1620. T_money64, _ := decimal.NewFromFloat(float64(Company_r.T_money) + payOrder.T_total).Round(2).Float64()
  1621. Company_r.T_money = float32(T_money64)
  1622. is := Account.Update_Company(Company_r, "T_money")
  1623. if !is {
  1624. c.Data["json"] = lib.JSONS{Code: 202, Msg: "充值失败!"}
  1625. c.ServeJSON()
  1626. return
  1627. }
  1628. }
  1629. c.Data["json"] = JSON{Code: 200, Message: "成功"}
  1630. c.ServeJSON()
  1631. return
  1632. }
  1633. // 获取微信支付订单状态
  1634. func (c *UserController) WxPay_GetOrderState() {
  1635. OrderNo := c.GetString("OrderNo")
  1636. payOrder, err := Company.Get_CompanyPayOrder_ByT_order_no(OrderNo)
  1637. if err != nil {
  1638. c.Data["json"] = lib.JSONS{Code: 202, Msg: "查询失败!"}
  1639. c.ServeJSON()
  1640. return
  1641. }
  1642. c.Data["json"] = lib.JSONS{Code: 200, Msg: "成功", Data: payOrder}
  1643. c.ServeJSON()
  1644. return
  1645. }
  1646. // 设备分类绑定
  1647. func (c *UserController) UserDeviceBind_List() {
  1648. var r_jsons lib.R_JSONS
  1649. page, _ := c.GetInt("page")
  1650. if page < 1 {
  1651. page = 1
  1652. }
  1653. page_z, _ := c.GetInt("page_z")
  1654. if page_z < 1 {
  1655. page_z = conf.Page_size
  1656. }
  1657. T_name := c.GetString("T_name")
  1658. T_uuid := c.GetString("T_uuid")
  1659. admin_r, err := Account.Read_Admin_ByUuid(T_uuid)
  1660. if err != nil {
  1661. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  1662. c.ServeJSON()
  1663. return
  1664. }
  1665. bindSN, err := Account.Read_UserDevice_List(admin_r)
  1666. if err != nil {
  1667. c.Data["json"] = lib.JSONS{Code: 202, Msg: "查询失败!"}
  1668. c.ServeJSON()
  1669. return
  1670. }
  1671. if len(bindSN) == 0 {
  1672. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  1673. c.ServeJSON()
  1674. return
  1675. }
  1676. r_jsons.Data, r_jsons.Num = Device.Read_Device_List(&c.Admin_r, bindSN, c.T_pid, T_name, "", "", -1, page, page_z)
  1677. r_jsons.Page = page
  1678. r_jsons.Page_size = int(math.Ceil(float64(r_jsons.Num) / float64(page_z)))
  1679. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  1680. c.ServeJSON()
  1681. return
  1682. }
  1683. func (c *UserController) UserDeviceUnbind_List() {
  1684. var r_jsons lib.R_JSONS
  1685. page, _ := c.GetInt("page")
  1686. if page < 1 {
  1687. page = 1
  1688. }
  1689. page_z, _ := c.GetInt("page_z")
  1690. if page_z < 1 {
  1691. page_z = conf.Page_size
  1692. }
  1693. T_name := c.GetString("T_name")
  1694. T_uuid := c.GetString("T_uuid")
  1695. admin_r, err := Account.Read_Admin_ByUuid(T_uuid)
  1696. if err != nil {
  1697. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  1698. c.ServeJSON()
  1699. return
  1700. }
  1701. bindSN, err := Account.Read_UserDevice_List(admin_r)
  1702. if err != nil {
  1703. c.Data["json"] = lib.JSONS{Code: 202, Msg: "查询失败!"}
  1704. c.ServeJSON()
  1705. return
  1706. }
  1707. r_jsons.Data, r_jsons.Num = Device.Read_User_Unbind_Device_List(&c.Admin_r, bindSN, c.T_pid, T_name, page, page_z)
  1708. r_jsons.Page = page
  1709. r_jsons.Page_size = int(math.Ceil(float64(r_jsons.Num) / float64(page_z)))
  1710. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!", Data: r_jsons}
  1711. c.ServeJSON()
  1712. return
  1713. }
  1714. func (c *UserController) UserDeviceBind_Add() {
  1715. T_sn := c.GetString("T_sn")
  1716. T_uuid := c.GetString("T_uuid")
  1717. T_oneHey, _ := c.GetInt("T_oneKey") // 一键绑定
  1718. if T_oneHey == 1 {
  1719. admin_r, err := Account.Read_Admin_ByUuid(T_uuid)
  1720. if err != nil {
  1721. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  1722. c.ServeJSON()
  1723. return
  1724. }
  1725. bindSN, err := Account.Read_UserDevice_List(admin_r)
  1726. if err != nil {
  1727. c.Data["json"] = lib.JSONS{Code: 202, Msg: "查询失败!"}
  1728. c.ServeJSON()
  1729. return
  1730. }
  1731. Unbind_Device_List, _ := Device.Read_User_Unbind_Device_List(&c.Admin_r, bindSN, c.T_pid, "", 0, 9999)
  1732. var UserDeviceList []Account.UserDevice
  1733. for _, r := range Unbind_Device_List {
  1734. UserDeviceList = append(UserDeviceList, Account.UserDevice{T_sn: r.T_sn, T_uuid: T_uuid})
  1735. }
  1736. if _, err = Account.Add_UserDevice_Multi(T_uuid, UserDeviceList); err != nil {
  1737. c.Data["json"] = lib.JSONS{Code: 200, Msg: "绑定失败"}
  1738. c.ServeJSON()
  1739. return
  1740. }
  1741. System.Add_UserLogs(c.Admin_r.T_uuid, "用户管理", "一键绑定主机操作", T_uuid+"-"+T_sn)
  1742. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1743. c.ServeJSON()
  1744. return
  1745. }
  1746. if len(T_uuid) == 0 || len(T_sn) == 0 {
  1747. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_sn T_id T_class_id Err!"}
  1748. c.ServeJSON()
  1749. return
  1750. }
  1751. if len(T_uuid) < 8 {
  1752. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  1753. c.ServeJSON()
  1754. return
  1755. }
  1756. device, err := Device.Read_Device_ByT_sn(T_sn)
  1757. if err != nil {
  1758. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_id Err!"}
  1759. c.ServeJSON()
  1760. return
  1761. }
  1762. admin_r, err := Account.Read_Admin_ByUuid(T_uuid)
  1763. if err != nil {
  1764. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  1765. c.ServeJSON()
  1766. return
  1767. }
  1768. if admin_r.T_pid != device.T_pid {
  1769. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_pid Err!"}
  1770. c.ServeJSON()
  1771. return
  1772. }
  1773. userdievice, err := Account.Read_UserDevice_ByT_uuid_T_sn(T_uuid, T_sn)
  1774. if userdievice.Id > 0 {
  1775. c.Data["json"] = lib.JSONS{Code: 202, Msg: "重复绑定!"}
  1776. c.ServeJSON()
  1777. return
  1778. }
  1779. if _, err = Account.Add_UserDevice(Account.UserDevice{T_sn: T_sn, T_uuid: T_uuid}); err != nil {
  1780. c.Data["json"] = lib.JSONS{Code: 200, Msg: "绑定失败"}
  1781. c.ServeJSON()
  1782. return
  1783. }
  1784. System.Add_UserLogs(c.Admin_r.T_uuid, "用户管理", "绑定主机操作", T_uuid+"-"+T_sn)
  1785. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1786. c.ServeJSON()
  1787. return
  1788. }
  1789. func (c *UserController) UserDeviceBind_Del() {
  1790. T_sn := c.GetString("T_sn")
  1791. T_uuid := c.GetString("T_uuid")
  1792. if len(T_uuid) == 0 || len(T_sn) == 0 {
  1793. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_sn T_id T_class_id Err!"}
  1794. c.ServeJSON()
  1795. return
  1796. }
  1797. if len(T_uuid) < 8 {
  1798. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  1799. c.ServeJSON()
  1800. return
  1801. }
  1802. device, err := Device.Read_Device_ByT_sn(T_sn)
  1803. if err != nil {
  1804. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_sn Err!"}
  1805. c.ServeJSON()
  1806. return
  1807. }
  1808. admin_r, err := Account.Read_Admin_ByUuid(T_uuid)
  1809. if err != nil {
  1810. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_uuid Err!"}
  1811. c.ServeJSON()
  1812. return
  1813. }
  1814. if admin_r.T_pid != device.T_pid {
  1815. c.Data["json"] = lib.JSONS{Code: 202, Msg: "T_pid Err!"}
  1816. c.ServeJSON()
  1817. return
  1818. }
  1819. userdievice, err := Account.Read_UserDevice_ByT_uuid_T_sn(T_uuid, T_sn)
  1820. if err != nil {
  1821. if err.Error() == orm.ErrNoRows.Error() {
  1822. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1823. c.ServeJSON()
  1824. return
  1825. }
  1826. c.Data["json"] = lib.JSONS{Code: 202, Msg: "解绑失败!"}
  1827. c.ServeJSON()
  1828. return
  1829. }
  1830. if err = Account.Delete_UserDevice(Account.UserDevice{Id: userdievice.Id, T_sn: T_sn, T_uuid: T_uuid}); err != nil {
  1831. c.Data["json"] = lib.JSONS{Code: 200, Msg: "删除失败"}
  1832. c.ServeJSON()
  1833. return
  1834. }
  1835. System.Add_UserLogs(c.Admin_r.T_uuid, "用户管理", "解绑主机操作", T_uuid+"-"+T_sn)
  1836. c.Data["json"] = lib.JSONS{Code: 200, Msg: "ok!"}
  1837. c.ServeJSON()
  1838. return
  1839. }