User.go 53 KB

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