control_user.py 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. #coding=utf-8
  2. '''
  3. '''
  4. import json
  5. import datetime
  6. import logging
  7. import re
  8. import hashlib
  9. import xlrd
  10. from django.core.cache import cache
  11. from django.db.models import Q
  12. from django.db.models import Sum
  13. from django.db import transaction
  14. from django.contrib import auth
  15. import common.models as cm
  16. import common.error_info as ce
  17. import password_handle as ph
  18. import common.common_functions as ccf
  19. def add_user(request):
  20. """
  21. """
  22. kwargs = request.json
  23. need_params = ["realname","phone","department_id","utype","is_active"]
  24. mse = ccf.check_params(*need_params,**kwargs)
  25. if mse:
  26. raise ce.TipException(mse)
  27. if cm.UserInfo.objects.filter(phone=kwargs.get("phone")).exists():
  28. raise ce.TipException(u"该用户已存在!")
  29. need_params.extend(["email","remark"])
  30. cvals = ccf.get_need_params(*need_params,**kwargs)
  31. cvals.update({"name":cvals.get("phone")})
  32. cvals.update({"password":ph.make_password(cvals.get("phone")[-6:],True)})
  33. cvals["cid"] = request.user.id
  34. cvals["cperson"] = request.user.realname
  35. obj = cm.UserInfo.objects.create(**cvals)
  36. return obj
  37. def delete_user(request):
  38. kwargs = request.json
  39. need_params = ["id"]
  40. mse = ccf.check_params(*need_params,**kwargs)
  41. if mse:
  42. raise ce.TipException(mse)
  43. ids = str(kwargs.get("id")).split(",")
  44. cm.UserInfo.objects.filter(id__in=ids).update(status=0)
  45. def update_user(request):
  46. """
  47. """
  48. kwargs = request.json
  49. need_params = ["id"]
  50. mse = ccf.check_params(*need_params,**kwargs)
  51. if mse:
  52. raise ce.TipException(mse)
  53. id = kwargs.get("id")
  54. if cm.UserInfo.objects.exclude(id=id).filter(phone=kwargs.get("phone")).exists():
  55. raise ce.TipException(u"该用户已存在!")
  56. need_params.extend(["realname","phone","department_id","utype","is_active","email","remark"])
  57. cvals = ccf.get_need_params(*need_params,**kwargs)
  58. cvals.update({"name":cvals.get("phone")})
  59. cvals.update({"password":ph.make_password(cvals.get("phone")[-6:],True)})
  60. cvals["cid"] = request.user.id
  61. cvals["cperson"] = request.user.realname
  62. obj = cm.UserInfo.objects.filter(id=id).update(**cvals)
  63. return obj
  64. def login_user(request):
  65. """
  66. """
  67. info = request.json
  68. login_info = info.get('username')
  69. password = info.get('password')
  70. captcha_id = info.get('imgcode_id')
  71. idcode = info.get('imgcode')
  72. captcha = cache.get(captcha_id, '')
  73. cache.delete(captcha_id)
  74. if not login_info or not password:
  75. raise ce.TipException(u"账户或密码不能为空!")
  76. if not idcode:
  77. raise ce.TipException(u"验证码不能为空!")
  78. if idcode.upper() != captcha.upper():
  79. raise ce.TipException(u"验证码错误!")
  80. user = auth.authenticate(request, account=login_info, pwd=password)
  81. if user:
  82. auth.login(request, user)
  83. return user
  84. else:
  85. raise ce.TipException(u"账号或密码错误!")
  86. def reset_password(request):
  87. """
  88. @attention: 重置密码
  89. """
  90. uid = request.user.id
  91. qdata = request.json
  92. need_params = ["password","repassword"]
  93. mse = ccf.check_params(*need_params,**qdata)
  94. if mse:
  95. raise ce.TipException(mse)
  96. uid = request.json.get("uid")
  97. if not uid:
  98. uid = request.user.id
  99. phone = qdata.get("phone")
  100. password = qdata.get("password")
  101. repassword = qdata.get("repassword")
  102. if password != repassword:
  103. raise ce.TipException(u"两次输入的密码不一致!")
  104. pwd = ph.make_password(password)
  105. cm.UserInfo.objects.filter(id=uid).update(password=pwd)
  106. def reset_user_password(request):
  107. qdata = request.json
  108. need_params = ["uid","code","password"]
  109. mse = ccf.check_params(*need_params,**qdata)
  110. if mse:
  111. raise ce.TipException(mse)
  112. upk = qdata.get("uid")
  113. code = qdata.get("code")
  114. pkey = request.user.phone
  115. if cache.get(pkey,"") != code:
  116. raise ce.TipException(u"验证码不正确!")
  117. newpwd = qdata.get("password")
  118. pwd = ph.make_password(newpwd)
  119. cm.UserInfo.objects.filter(pk=upk).update(password=pwd)
  120. def regist_user(request):
  121. """
  122. """
  123. kwargs = request.json
  124. need_parms = ["realname","password","repassword","phone","email"]
  125. mse = ccf.check_params(*need_parms,**kwargs)
  126. if mse:
  127. raise ce.TipException(mse)
  128. if cm.UserInfo.objects.filter(phone=kwargs.get("phone")).exists():
  129. raise ce.TipException(u"该手机号已注册!")
  130. cvals = ccf.get_need_params(*need_parms,**kwargs)
  131. cvals.pop("repassword")
  132. cvals["name"] = cvals["phone"]
  133. if kwargs["password"] != kwargs["repassword"]:
  134. raise ce.TipException(u"前后输入的密码不一致!")
  135. if not cvals.get("password"):
  136. pwd,password = ph.make_default_password(None)
  137. cvals.update({"password":password})
  138. else:
  139. pwd = cvals.get("password")
  140. cvals.update({"password":ph.make_password(cvals.get("password"))})
  141. uobj = cm.UserInfo.objects.create(**cvals)
  142. return None
  143. def format_user(*ids):
  144. """
  145. """
  146. eset = cm.UserInfo.objects.filter(id__in=ids,status=1)
  147. if not eset.exists():
  148. raise ce.TipException(u"客户不存在!")
  149. data = list(eset.values())
  150. return data
  151. def get_user_info(request):
  152. """
  153. """
  154. kwargs = request.json
  155. need_params = ["id"]
  156. mse = ccf.check_params(*need_params,**kwargs)
  157. if mse:
  158. raise ce.TipException(mse)
  159. ids = str(kwargs.get("id")).split(",")
  160. info = format_user(*ids)
  161. info = info[0] if info else {}
  162. return info
  163. def get_user_personal_info(request):
  164. """
  165. """
  166. id = request.user.id
  167. info = format_user(*[id])
  168. info = info[0] if info else {}
  169. return info
  170. def get_account_info(request):
  171. """
  172. """
  173. id = request.user.id
  174. print id,99999
  175. info = format_user(*[id])
  176. info = info[0] if info else {}
  177. info["p"] = ["Product.*.*"]
  178. return info
  179. def get_user_list(request):
  180. """
  181. """
  182. kwargs = request.json
  183. eset = cm.UserInfo.objects.filter(status=1)
  184. if "name" in kwargs and kwargs.get("name"):
  185. eset = eset.filter(name__icontains=kwargs.get("name"))
  186. if "department_id" in kwargs and kwargs.get("department_id"):
  187. eset = eset.filter(department_id=kwargs.get("department_id"))
  188. if "utype" in kwargs and kwargs.get("utype"):
  189. eset = eset.filter(utype=kwargs.get("utype"))
  190. if "is_active" in kwargs and kwargs.get("is_active"):
  191. eset = eset.filter(is_active=kwargs.get("is_active"))
  192. total = eset.count()
  193. edata = list(eset.values())
  194. page = int(kwargs.get("page",1))
  195. page_size = int(kwargs.get("page_size",20))
  196. total,data = ccf.get_page_list(edata,page,page_size)
  197. return (total,data)
  198. def get_unaudit_user_list(request):
  199. """
  200. """
  201. kwargs = request.json
  202. eset = cm.UserInfo.objects.filter(status=1,is_active=0)
  203. if "name" in kwargs and kwargs.get("name"):
  204. eset = eset.filter(name__icontains=kwargs.get("name"))
  205. if "utype" in kwargs and kwargs.get("utype"):
  206. eset = eset.filter(utype=kwargs.get("utype"))
  207. total = eset.count()
  208. edata = list(eset.values())
  209. page = int(kwargs.get("page",1))
  210. page_size = int(kwargs.get("page_size",20))
  211. total,data = ccf.get_page_list(edata,page,page_size)
  212. return (total,data)