User.go 61 KB

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