User.go 53 KB

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