MUserCenterRegister.Class.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345
  1. <?php
  2. /**
  3. * 用户中心注册管理Model
  4. * Created by PhpStorm.
  5. * User: 小威
  6. * Date: 2019/11/01
  7. * Time: 14:50
  8. */
  9. namespace JinDouYun\Model\UserCenter;
  10. use JinDouYun\Model\Customer\MCustomer;
  11. use Mall\Framework\Core\ErrorCode;
  12. use Mall\Framework\Core\StatusCode;
  13. use Mall\Framework\Core\ResultWrapper;
  14. use JinDouYun\Dao\UserCenter\DUserCenter;
  15. use JinDouYun\Dao\Enterprise\DUserBindEnterprise;
  16. class MUserCenterRegister
  17. {
  18. private $objDUserBindEnterprise;
  19. private $objDUserCenter;
  20. public function __construct()
  21. {
  22. $this->objDUserCenter = new DUserCenter('default');
  23. $this->objDUserBindEnterprise = new DUserBindEnterprise('default');
  24. }
  25. /**
  26. * 后台注册 用户中心添加
  27. * @param $params
  28. * @return ResultWrapper
  29. */
  30. public function addUserCenter($params)
  31. {
  32. $params['isCustomer'] = StatusCode::$customerType['user'];
  33. $params['createTime'] = $params['updateTime'];
  34. //查询账号是否存在
  35. $dbResult = $this->objDUserCenter->get(['mobile'=>$params['mobile'], 'deleteStatus' => StatusCode::$standard]);
  36. if($dbResult === false){
  37. return ResultWrapper::fail($this->objDUserCenter->error(), ErrorCode::$dberror);
  38. }
  39. $userCenter = $dbResult;
  40. unset($dbResult);
  41. if(empty($userCenter)){
  42. $dbResult = $this->objDUserCenter->insert($params);
  43. }else{
  44. if($userCenter['isCustomer'] == StatusCode::$customerType['user']){
  45. return ResultWrapper::fail('手机号已被注册', ErrorCode::$paramError);
  46. }
  47. $update = [
  48. 'isCustomer' => StatusCode::$customerType['user'],
  49. 'password' => $params['password'],
  50. 'updateTime' => time()
  51. ];
  52. $dbResult = $this->objDUserCenter->update($update, ['id' => $userCenter['id']]);
  53. }
  54. if ($dbResult === false) {
  55. return ResultWrapper::fail($this->objDUserCenter->error(), ErrorCode::$dberror);
  56. }
  57. return ResultWrapper::success($dbResult);
  58. }
  59. /**
  60. * 修改手机号(账号)
  61. * @param $params
  62. * @return ResultWrapper
  63. */
  64. public function updateUserMobile($params)
  65. {
  66. //有些表存的手机号无法修改
  67. $where['id'] = $params['userCenterId'];
  68. $dbResult = $this->objDUserCenter->get($where);
  69. if($dbResult === false){
  70. return ResultWrapper::fail($this->objDUserCenter->error(), ErrorCode::$dberror);
  71. }
  72. $user = $dbResult;
  73. unset($dbResult);
  74. if(empty($user)){
  75. return ResultWrapper::fail('用户不存在', ErrorCode::$paramError);
  76. }
  77. //判断密码是否正确
  78. if(password_verify($params['password'], $user['password'] ) !== true){
  79. return ResultWrapper::fail('密码错误', ErrorCode::$accountfail);
  80. }
  81. if($params['mobile'] == $user['mobile']){
  82. return ResultWrapper::success('修改成功');
  83. }
  84. $dbResult = $this->objDUserCenter->update(['mobile' => $params['mobile'], 'updateTime' => time()], $where);
  85. if($dbResult === false){
  86. return ResultWrapper::fail($this->objDUserCenter->error(), ErrorCode::$dberror);
  87. }
  88. return ResultWrapper::success('修改成功');
  89. }
  90. /**
  91. * 用户中心删除
  92. * @param $id
  93. * @return ResultWrapper
  94. */
  95. public function deleteUserCenter($id)
  96. {
  97. $params = [
  98. 'deleteStatus' => StatusCode::$delete,
  99. 'updateTime' => time(),
  100. ];
  101. $dbResult = $this->objDUserCenter->update($params, $id);
  102. if ($dbResult === false) {
  103. return ResultWrapper::fail($this->objDUserCenter->error(), ErrorCode::$dberror);
  104. } else {
  105. return ResultWrapper::success($dbResult);
  106. }
  107. }
  108. /**
  109. * 用户中心修改
  110. * @param $params
  111. * @param $id
  112. * @return ResultWrapper
  113. */
  114. public function updateUserCenter($params, $id)
  115. {
  116. $dbResult = $this->objDUserCenter->update($params, $id);
  117. if ($dbResult === false) {
  118. return ResultWrapper::fail($this->objDUserCenter->error(), ErrorCode::$dberror);
  119. } else {
  120. return ResultWrapper::success($dbResult);
  121. }
  122. }
  123. /**
  124. * 用户中心忘记密码
  125. * @param $password
  126. * @param $where
  127. * @return ResultWrapper
  128. */
  129. public function updateUserCenterPassword($password, $where)
  130. {
  131. $update = [
  132. 'password' => $password
  133. ];
  134. $dbResult = $this->objDUserCenter->update($update, $where);
  135. if ($dbResult === false) {
  136. return ResultWrapper::fail($this->objDUserCenter->error(), ErrorCode::$dberror);
  137. } else {
  138. return ResultWrapper::success($dbResult);
  139. }
  140. }
  141. /**
  142. * 用户中心列表
  143. * @param $selectParams
  144. * @return ResultWrapper
  145. */
  146. public function getAllUserCenter($selectParams)
  147. {
  148. $limit = $selectParams['limit'];
  149. unset($selectParams['limit']);
  150. $offset = $selectParams['offset'];
  151. unset($selectParams['offset']);
  152. $selectParams['deleteStatus'] = StatusCode::$standard;
  153. $dbResult = $this->objDUserCenter->select($selectParams, '*', 'createTime desc', $limit, $offset);
  154. if ($dbResult === false) {
  155. return ResultWrapper::fail($this->objDUserCenter->error(), ErrorCode::$dberror);
  156. }
  157. $total = $this->objDUserCenter->count($selectParams);
  158. $return = [
  159. 'data' => $dbResult,
  160. 'total' => ($total) ? intval($total) : 0,
  161. ];
  162. if ($return === false) {
  163. return ResultWrapper::fail($this->objDUserCenter->error(), ErrorCode::$dberror);
  164. } else {
  165. return ResultWrapper::success($return);
  166. }
  167. }
  168. /**
  169. * 用户中心详情
  170. * @param $params
  171. * @return ResultWrapper
  172. */
  173. public function getUserCenterInfo($params)
  174. {
  175. $dbResult = $this->objDUserCenter->get($params);
  176. if ($dbResult === false) {
  177. return ResultWrapper::fail($this->objDUserCenter->error(), ErrorCode::$dberror);
  178. } else {
  179. return ResultWrapper::success($dbResult);
  180. }
  181. }
  182. /**
  183. * 判断是否注册
  184. * @param $mobile
  185. * @param $enterpriseId // null:查询是否有userCenter数据 其他:查询手机号与该企业的绑定数据
  186. * @param $isStaff // true:查询后台是否绑定 false 查询前台是否绑定
  187. * @return bool
  188. */
  189. public function mobileIsRegister($mobile, $enterpriseId = null, $isStaff = false) {
  190. $userCenterId = false;
  191. if($enterpriseId) {
  192. $roleType = $isStaff ? StatusCode::$roleType['admin'].','.StatusCode::$roleType['staff'] : StatusCode::$roleType['customer'];
  193. $sql = "select u.id from ".$this->objDUserCenter->get_Table()." as u join ".$this->objDUserBindEnterprise->get_Table() ." as e on u.Id=e.userCenterId where u.mobile=". $mobile ." and e.roleType in (".$roleType.") and e.enterpriseId = ".$enterpriseId.' LIMIT 1';
  194. $dbResult = $this->objDUserCenter->query($sql);
  195. if($dbResult) {
  196. $dbResult = array_shift($dbResult);
  197. $userCenterId = isset($dbResult['id']) ? $dbResult['id'] : false;
  198. }
  199. } else {
  200. //后台判断是否注册
  201. $where = [
  202. 'mobile' => $mobile,
  203. 'isCustomer' => StatusCode::$delete
  204. ];
  205. $dbResult = $this->objDUserCenter->get($where);
  206. $userCenterId = $dbResult ? $dbResult['id'] : false;
  207. }
  208. return $userCenterId;
  209. }
  210. /**
  211. * 手机号在指定企业是否存在角色(后台专用)
  212. * @param $mobile
  213. * @param $enterpriseId
  214. * @param int $roleType
  215. * @return ResultWrapper
  216. */
  217. public function mobileBindStatus($mobile, $enterpriseId, $roleType = 1)
  218. {
  219. //查询userCenter
  220. $dbResult = $this->objDUserCenter->get(['mobile' => $mobile]);
  221. if($dbResult === false){
  222. return ResultWrapper::fail($this->objDUserCenter->error(), ErrorCode::$dberror);
  223. }
  224. $userCenter = $dbResult;
  225. unset($dbResult);
  226. //判断客户 还是用户
  227. if(empty($userCenter)){
  228. return ResultWrapper::success(0);
  229. }
  230. //如果是客户 则为用户不存在
  231. if($userCenter['isCustomer'] == StatusCode::$customerType['customer']){
  232. return ResultWrapper::success(0);
  233. }
  234. //查询绑定表
  235. $dbResult = $this->objDUserBindEnterprise->get(['userCenterId' => $userCenter['id'], 'enterpriseId' => $enterpriseId, 'roleType' => $roleType]);
  236. if($dbResult === false){
  237. return ResultWrapper::fail($this->objDUserBindEnterprise->error(), ErrorCode::$dberror);
  238. }
  239. $bind = $dbResult;
  240. unset($dbResult);
  241. //判断是否有绑定数据
  242. if(empty($bind)){
  243. return ResultWrapper::success(0);
  244. }
  245. return ResultWrapper::success($userCenter['id']);
  246. }
  247. /**
  248. * 指定企业指定角色添加用户
  249. * @param $mobile
  250. * @param $roleType
  251. * @param $enterpriseId
  252. * @param bool $shopId
  253. * @return ResultWrapper
  254. */
  255. public function addUser($mobile, $roleType, $enterpriseId, $shopId = false)
  256. {
  257. //1.查询手机号是否注册
  258. $dbResult = $this->objDUserCenter->get(['mobile' => $mobile]);
  259. if($dbResult === false){
  260. return ResultWrapper::fail($this->objDUserCenter->error(), ErrorCode::$dberror);
  261. }
  262. $userCenterData = $dbResult;
  263. unset($dbResult);
  264. //2.未注册手机号进行注册
  265. if(empty($userCenterData)){
  266. //添加userCenter
  267. $password = '88888888';
  268. $userCenterAddData['mobile'] = $mobile;
  269. $userCenterAddData['password'] = password_hash($password, PASSWORD_DEFAULT );
  270. $userCenterAddData['deleteStatus'] = StatusCode::$standard;
  271. $userCenterAddData['source'] = StatusCode::$source['manage'];
  272. $userCenterAddData['isCustomer'] = StatusCode::$customerType['user'];
  273. $userCenterAddData['createTime'] = time();
  274. $userCenterAddData['updateTime'] = time();
  275. $dbResult = $this->objDUserCenter->insert($userCenterAddData);
  276. if($dbResult === false){
  277. return ResultWrapper::fail($this->objDUserCenter->error(), ErrorCode::$dberror);
  278. }
  279. $returnData['userCenterId'] = $dbResult;
  280. unset($dbResult);
  281. $returnData['title'] = '该手机号未注册, 已自动创建账号, 初始密码'.$password;
  282. }else{
  283. $returnData['userCenterId'] = $userCenterData['id'];
  284. $returnData['title'] = '该手机号号已注册, 绑定成功';
  285. }
  286. //3.判断绑定表 没有绑定角色类型的新增绑定
  287. $where = [
  288. 'userCenterId' => $returnData['userCenterId'],
  289. 'enterpriseId' => $enterpriseId,
  290. 'roleType' => $roleType,
  291. ];
  292. if($shopId){
  293. $where['shopId'] = $shopId;
  294. }
  295. $result = $this->objDUserBindEnterprise->get($where);
  296. if($result === false){
  297. return ResultWrapper::fail($this->objDUserBindEnterprise->error(), ErrorCode::$dberror);
  298. }
  299. if(empty($result)){
  300. $bindData['userCenterId'] = $returnData['userCenterId'];
  301. $bindData['enterpriseId'] = $enterpriseId;
  302. $bindData['roleType'] = $roleType;
  303. $bindData['updateTime'] = time();
  304. $bindData['createTime'] = time();
  305. if($shopId){
  306. $bindData['shopId'] = $shopId;
  307. }
  308. $dbResult = $this->objDUserBindEnterprise->insert($bindData);
  309. if($dbResult === false){
  310. return ResultWrapper::fail($this->objDUserBindEnterprise->error(), ErrorCode::$dberror);
  311. }
  312. unset($dbResult);
  313. }
  314. return ResultWrapper::success($returnData);
  315. }
  316. }