From 6c73c38ce8eb8c58e596c64ade0984e7a9e7ed23 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=B5=B5=E5=95=B8=E9=9D=9E?= <8153694@qq.com>
Date: Tue, 30 Jan 2024 14:18:13 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AF=86=E7=A0=81=E4=BF=AE?=
 =?UTF-8?q?=E6=94=B9=E4=B8=8E=E7=99=BB=E5=BD=95=E7=94=A8=E6=88=B7=E5=90=8D?=
 =?UTF-8?q?=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../admin/src/views/system/user/list.vue      | 339 +++++++++++++-----
 .../admin/vue.config.js                       |   9 -
 .../xhx/base/login/web/LoginController.java   |  51 +++
 .../base/system/user/service/UserService.java |   6 +
 .../user/service/impl/UserServiceImpl.java    |  65 ++--
 .../base/system/user/web/UserController.java  |  30 +-
 .../xhx/busiz/h5/web/ApiLoginController.java  |  58 ---
 7 files changed, 363 insertions(+), 195 deletions(-)

diff --git a/attendance-performance-manager-ui/admin/src/views/system/user/list.vue b/attendance-performance-manager-ui/admin/src/views/system/user/list.vue
index e5852c75..677640fb 100644
--- a/attendance-performance-manager-ui/admin/src/views/system/user/list.vue
+++ b/attendance-performance-manager-ui/admin/src/views/system/user/list.vue
@@ -1,16 +1,17 @@
 <template>
   <div class="page">
-    <LayoutTable :data="tableData" :config="tableConfig" notDel />
-    <dialog-show ref="dialogform" @ok="getData" />
+    <LayoutTable :data="tableData" :config="tableConfig" notDel/>
+    <dialog-show ref="dialogform" @ok="getData"/>
 
     <el-dialog title="鐢ㄦ埛宸插垎閰嶇殑瑙掕壊" :visible.sync="role.visible">
       <el-form :model="role.form">
         <el-checkbox-group v-model="role.checkList" :min="500">
           <el-checkbox
-            v-for="item in allRoles"
-            :key="item.id"
-            :label="item.id"
-            >{{ item.name }}</el-checkbox
+              v-for="item in allRoles"
+              :key="item.id"
+              :label="item.id"
+          >{{ item.name }}
+          </el-checkbox
           >
         </el-checkbox-group>
       </el-form>
@@ -20,18 +21,18 @@
     </el-dialog>
 
     <el-dialog
-      :title="userRoleDialog.title"
-      :visible.sync="userRoleDialog.open"
-      width="60%"
-      append-to-body
+        :title="userRoleDialog.title"
+        :visible.sync="userRoleDialog.open"
+        width="60%"
+        append-to-body
     >
       <el-form label-width="100px">
         <Field
-          label="瑙掕壊鍒嗛厤"
-          :span="24"
-          v-model="roles"
-          type="checkbox"
-          :enumData="tableData.dict.roleIds"
+            label="瑙掕壊鍒嗛厤"
+            :span="24"
+            v-model="roles"
+            type="checkbox"
+            :enumData="tableData.dict.roleIds"
         />
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -41,24 +42,24 @@
     </el-dialog>
 
     <el-dialog
-      :title="userDeptDialog.title"
-      :visible.sync="userDeptDialog.open"
-      width="60%"
-      append-to-body
+        :title="userDeptDialog.title"
+        :visible.sync="userDeptDialog.open"
+        width="60%"
+        append-to-body
     >
       <div class="mytree">
         <el-tree
-          ref="bomTree"
-          :data="data"
-          id="el-tree"
-          indent="0"
-          node-key="id"
-          :props="treeProps"
-          :load="loadNode"
-          highlight-current
-          lazy
-          :render-content="renderContent"
-          @node-click="handleNodeClick"
+            ref="bomTree"
+            :data="data"
+            id="el-tree"
+            indent="0"
+            node-key="id"
+            :props="treeProps"
+            :load="loadNode"
+            highlight-current
+            lazy
+            :render-content="renderContent"
+            @node-click="handleNodeClick"
         >
         </el-tree>
       </div>
@@ -68,6 +69,70 @@
         <el-button @click="userDeptDialog.open = false">鍙� 娑�</el-button>
       </div>
     </el-dialog>
+
+
+    <el-dialog
+        :title="userPasswordDialog.title"
+        hei
+        :visible.sync="userPasswordDialog.open"
+        width="60%"
+    >
+      <el-form
+          ref="form"
+          label-width="110px"
+          label-position="right"
+      >
+        <el-row>
+          <Field
+              :span="20"
+              label="鐧诲綍鍚嶇О"
+              prop="loginName"
+              disabled
+              v-model="userPasswordDialog.data.loginName"
+          />
+
+          <Field
+              label="鐧诲綍瀵嗙爜"
+              prop="loginPwd"
+              v-model="userPasswordDialog.data.loginPwd"
+          />
+        </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="updatePasswordConfirm">纭� 瀹�</el-button>
+        <el-button @click="userPasswordDialog.open = false">鍙� 娑�</el-button>
+      </div>
+
+    </el-dialog>
+
+
+    <el-dialog
+        :title="userLoginDialog.title"
+        hei
+        :visible.sync="userLoginDialog.open"
+        width="60%"
+    >
+      <el-form
+          ref="form"
+          label-width="110px"
+          label-position="right"
+      >
+        <el-row>
+          <Field
+              :span="20"
+              label="鐧诲綍鍚嶇О"
+              prop="loginName"
+              v-model="userPasswordDialog.data.loginName"
+          />
+        </el-row>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="updateLoginConfirm">纭� 瀹�</el-button>
+        <el-button @click="userLoginDialog.open = false">鍙� 娑�</el-button>
+      </div>
+
+    </el-dialog>
+
   </div>
 </template>
 
@@ -77,10 +142,10 @@ import table from "@/assets/mixins/table";
 
 export default {
   mixins: [table],
-  components: { dialogShow },
+  components: {dialogShow},
   methods: {
     // 鎵撳紑寮圭獥
-    async findRole({ id }) {
+    async findRole({id}) {
       try {
         this.tableData.loading = true;
         this.allRoles = await this.getUserRoles(id);
@@ -93,9 +158,9 @@ export default {
       this.tableData.loading = false;
     },
 
-    renderContent: function(h, { node, data, store }) {
+    renderContent: function (h, {node, data, store}) {
       return (
-        <span>
+          <span>
           <i style="font-size:16px;color:#409EFF" class={data.icon}></i>
           <span style="padding-left: 2px;font-size:14px">{node.label}</span>
         </span>
@@ -107,23 +172,13 @@ export default {
       }
       this.$get("/dept/getListByParentId", {
         parentId: node.data.id,
-      }).then(({ data }) => {
+      }).then(({data}) => {
         resolve(data.result);
       });
     },
     handleNodeClick(data, node, obj) {
       console.log("select node tree", data);
       this.node = data;
-      // this.userDeptDialog.open = false;
-      // this.$post("/user/save", {
-      //   deptId: data.id,
-      // })
-      //     .then((res) => {
-      //
-      //     })
-      //     .catch((error) => {
-      //       this.$message.error(error);
-      //     });
     },
 
     userDeptConfirm(row) {
@@ -186,7 +241,7 @@ export default {
         this.$nextTick(() => {
           this.$get("/dept/getListByParentId", {
             parentId: 0,
-          }).then(({ data }) => {
+          }).then(({data}) => {
             this.data = data.result;
             this.node = {};
             console.log("data", this.data);
@@ -199,14 +254,78 @@ export default {
       this.tableData.loading = false;
     },
 
+    updatePassword(row) {
+      console.log("淇敼瀵嗙爜");
+      try {
+        this.userPasswordDialog.data = row;
+        this.userPasswordDialog.data.loginPwd = "";
+        this.userPasswordDialog.open = true;
+      } catch (error) {
+        this.$message.error(error.message);
+      }
+    },
+
+    updatePasswordConfirm() {
+      console.log("淇敼瀵嗙爜");
+      try {
+
+
+        this.$post("/user/save", {
+          "id": userPasswordDialog.data.id,
+          "loginPwd": userPasswordDialog.data.loginPwd,
+        }).then((res) => {
+          if (res && res.code == 1) {
+            this.userPasswordDialog.data = {};
+            this.$message.success("淇敼瀵嗙爜鎴愬姛锛�");
+          } else {
+            this.$message.error(res.message);
+          }
+          this.userRoleDialog.open = false;
+        })
+      } catch (error) {
+        this.$message.error(error.message);
+      }
+    },
+
+    updateLoginName(row) {
+      console.log("淇敼鐧诲綍鍚�");
+      try {
+        this.userLoginDialog.data = row;
+        this.userLoginDialog.data.loginName = "";
+        this.userLoginDialog.open = true;
+      } catch (error) {
+        this.$message.error(error.message);
+      }
+    },
+
+    updateLoginConfirm() {
+      console.log("淇敼鐧诲綍鍚�");
+      try {
+        this.$post("/user/save", {
+          "id": user.data.id,
+          "loginName": userLoginDialog.data.loginName,
+        }).then((res) => {
+          if (res && res.code == 1) {
+            this.userLoginDialog.data = {};
+            this.$message.success("淇敼鐧诲綍鍚嶆垚鍔燂紒");
+          } else {
+            this.$message.error(res.message);
+          }
+          this.userLoginDialog.open = false;
+        })
+      } catch (error) {
+        this.$message.error(error.message);
+      }
+    },
+
     // 鑾峰彇鐢ㄦ埛瑙掕壊鍒楄〃
     getUserRoles(id) {
       return new Promise((resolve, reject) => {
-        this.$post("/role/roleNameByUserId", { userId: id })
-          .then(({ data }) => {
-            resolve(data);
-          })
-          .catch(reject);
+        this.$post("/role/roleNameByUserId", {userId: id})
+            .then(({data}) => {
+              resolve(data);
+            })
+            .catch(reject);
       });
     },
     getRoleUsers(id) {
@@ -215,13 +334,13 @@ export default {
           userId: id,
           size: -1,
         })
-          .then(({ data }) => {
-            const result = data.data
-              .filter((i) => i.roleId + "")
-              .map((i) => i.roleId + "");
-            resolve(result);
-          })
-          .catch(reject);
+            .then(({data}) => {
+              const result = data.data
+                  .filter((i) => i.roleId + "")
+                  .map((i) => i.roleId + "");
+              resolve(result);
+            })
+            .catch(reject);
       });
     },
     /** 閲嶅啓鏂板鏂规硶 */
@@ -260,6 +379,22 @@ export default {
         data: {},
       },
 
+      userPasswordDialog: {
+        // 鏄惁鏄剧ず寮瑰嚭灞�
+        open: false,
+        // 寮瑰嚭灞傛爣棰�
+        title: "淇敼瀵嗙爜",
+        data: {},
+      },
+
+      userLoginDialog: {
+        // 鏄惁鏄剧ず寮瑰嚭灞�
+        open: false,
+        // 寮瑰嚭灞傛爣棰�
+        title: "淇敼鐧诲綍鍚�",
+        data: {},
+      },
+
       treeProps: {
         children: "children",
         label: "label",
@@ -272,8 +407,8 @@ export default {
       config: {
         isshowTabPane: true,
         columns: [
-          { type: "selection", reserveSelection: true, width: 60 },
-          { type: "index", label: "搴忓彿", align: "center", width: 50 },
+          {type: "selection", reserveSelection: true, width: 60},
+          {type: "index", label: "搴忓彿", align: "center", width: 50},
           {
             prop: "loginName",
             label: "鐧诲綍鍚嶇О",
@@ -317,18 +452,19 @@ export default {
           },
           {
             label: "鎿嶄綔",
-            width: 280,
+            width: 320,
             align: "center",
             formatter: (row) => {
               return (
-                <div>
-                  <table-buttons
-                    noView
-                    row={row}
-                    onEdit={this.toEdit}
-                    onDel={this.toDel}
-                  />
-                  {/*
+                  <div>
+                    <table-buttons
+                        noView
+                        noDel
+                        row={row}
+                        onEdit={this.toEdit}
+                        onDel={this.toDel}
+                    />
+                    {/*
                   <el-button
                     size="mini"
                     type="text"
@@ -338,25 +474,35 @@ export default {
                     鍒嗛厤瑙掕壊
                   </el-button>
                   */}
-                  <span> </span>
-                  <el-button
-                    size="mini"
-                    type="text"
-                    icon="el-icon-share"
-                    onClick={() => this.distributeDept(row)}
-                  >
-                    鍒嗛厤閮ㄩ棬
-                  </el-button>
-                  <span> </span>
-                  <el-button
-                    size="mini"
-                    type="text"
-                    icon="el-icon-share"
-                    onClick={() => this.distributeDept(row)}
-                  >
-                    淇敼瀵嗙爜
-                  </el-button>
-                </div>
+                    <span> </span>
+                    <el-button
+                        size="mini"
+                        type="text"
+                        icon="el-icon-share"
+                        onClick={() => this.distributeDept(row)}
+                    >
+                      鍒嗛厤閮ㄩ棬
+                    </el-button>
+                    <span> </span>
+                    <el-button
+                        size="mini"
+                        type="text"
+                        icon="el-icon-share"
+                        onClick={() => this.updatePassword(row)}
+                    >
+                      淇敼瀵嗙爜
+                    </el-button>
+
+                    <span> </span>
+                    <el-button
+                        size="mini"
+                        type="text"
+                        icon="el-icon-share"
+                        onClick={() => this.updateLoginName(row)}
+                    >
+                      淇敼鐧诲綍鍚�
+                    </el-button>
+                  </div>
               );
             },
           },
@@ -387,30 +533,35 @@ export default {
 <style lang="scss" scoped>
 .mytree ::v-deep {
   .el-tree--highlight-current
-    ::v-deep
-    .el-tree-node.is-checked
-    > .el-tree-node__content {
+  ::v-deep
+  .el-tree-node.is-checked
+  > .el-tree-node__content {
     background-color: rgb(255, 255, 255);
     color: rgb(64, 158, 255);
   }
+
   .el-tree--highlight-current
-    ::v-deep
-    .el-tree-node.is-current
-    > .el-tree-node__content {
+  ::v-deep
+  .el-tree-node.is-current
+  > .el-tree-node__content {
     background-color: rgb(255, 255, 255);
     color: rgb(64, 158, 255);
   }
+
   .el-tree > .el-tree-node:after {
     border-top: none;
   }
+
   .el-tree-node {
     position: relative;
     padding-left: 16px;
   }
+
   //鑺傜偣鏈夐棿闅欙紝闅愯棌鎺夊睍寮€鎸夐挳灏卞ソ浜�,濡傛灉瑙夊緱绌洪殭娌′簨鍙互鍒犳帀
   .el-tree-node__expand-icon.is-leaf {
     display: none;
   }
+
   .el-tree-node__children {
     padding-left: 16px;
   }
diff --git a/attendance-performance-manager-ui/admin/vue.config.js b/attendance-performance-manager-ui/admin/vue.config.js
index 378e84d5..23ef9cb1 100644
--- a/attendance-performance-manager-ui/admin/vue.config.js
+++ b/attendance-performance-manager-ui/admin/vue.config.js
@@ -1,14 +1,5 @@
 module.exports = {
 	productionSourceMap: false,
-/*	assetsDir: 's',
-	configureWebpack: {
-		externals: {
-			vue: "Vue",
-			vuex: "Vuex",
-			"vue-router": "VueRouter",
-			"element-ui": "ELEMENT"
-		},
-	},*/
 	lintOnSave:false,
 	devServer: {
 		inline: true,
diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/base/login/web/LoginController.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/base/login/web/LoginController.java
index 408601d5..e41abd97 100644
--- a/attendance-performance-manager/src/main/java/com/mortals/xhx/base/login/web/LoginController.java
+++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/base/login/web/LoginController.java
@@ -204,6 +204,57 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi
         }
     }
 
+    /**
+     * 淇敼鐢ㄦ埛鐧诲綍鍚�
+     *
+     * @param userEntity
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping("reLoginName")
+    public String reLoginName(@RequestBody UserEntity userEntity) throws Exception {
+        JSONObject ret = new JSONObject();
+        Long id = userEntity.getId();
+        String loginName = userEntity.getLoginName();
+        Integer userType = userEntity.getUserType();
+
+        if (ObjectUtils.isEmpty(userEntity.getId())) {
+            throw new AppException("淇敼鐨勭敤鎴穒d涓嶈兘涓虹┖");
+        }
+
+        if (ObjectUtils.isEmpty(loginName)) {
+            throw new AppException("淇敼鐨勭櫥褰曞悕涓嶈兘闂┖锛�");
+        }
+
+        try {
+            //妫€娴嬩慨鏀圭殑鐢ㄦ埛鍚嶆槸鍚﹀瓨鍦�
+            UserEntity entity = userService.selectOne(new UserQuery().loginName(loginName));
+            if (!ObjectUtils.isEmpty(entity)) {
+                throw new AppException("淇敼鐨勭敤鎴风櫥褰曞悕宸茬粡瀛樺湪锛乴oginName=" + loginName);
+            }
+            if (SysConstains.ADMIN_ID == id)
+                throw new AppException("瓒呯骇绠$悊鍛樹笉鍏佽淇敼锛�");
+
+            if (userType == UserType.SYSTEM.getValue())
+                throw new AppException("绯荤粺鐢ㄦ埛涓嶅厑璁镐慨鏀癸紒");
+            userService.getUserDao().update(userEntity);
+            ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
+            ret.put(KEY_RESULT_MSG, "淇敼鐢ㄦ埛鐧诲綍鍚嶆垚鍔�!");
+            recordSysLog(request, userEntity, "淇敼鐢ㄦ埛鐧诲綍鍚嶆垚鍔�!");
+            return ret.toJSONString();
+        } catch (AppException e) {
+            log.error("login error ", e);
+            ret.put(KEY_RESULT_CODE, e.getCode());
+            ret.put(KEY_RESULT_MSG, super.convertException(e));
+            return ret.toJSONString();
+        } catch (Exception e) {
+            log.error("绯荤粺寮傚父 error ", e);
+            ret.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
+            ret.put(KEY_RESULT_MSG, super.convertException(e));
+            return ret.toJSONString();
+        }
+    }
+
 
     @RequestMapping("logout")
     public void logout(HttpServletRequest request, HttpServletResponse response) throws Exception {
diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/base/system/user/service/UserService.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/base/system/user/service/UserService.java
index da4809ff..b9b30ca9 100644
--- a/attendance-performance-manager/src/main/java/com/mortals/xhx/base/system/user/service/UserService.java
+++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/base/system/user/service/UserService.java
@@ -114,6 +114,12 @@ public interface UserService extends ICRUDCacheService<UserEntity,Long> {
      */
     public boolean updateUserPwd(String loginName, String oldPwd, String newPwd) throws AppException;
 
+    /**
+     *
+     * @param entity
+     */
+    void doHandlerUser(UserEntity entity);
+
 
     UserDao getUserDao();
 
diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/base/system/user/service/impl/UserServiceImpl.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/base/system/user/service/impl/UserServiceImpl.java
index f4db910b..0b62e2f1 100644
--- a/attendance-performance-manager/src/main/java/com/mortals/xhx/base/system/user/service/impl/UserServiceImpl.java
+++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/base/system/user/service/impl/UserServiceImpl.java
@@ -46,6 +46,7 @@ import java.util.stream.Collectors;
  * <p>Description: UserServiceImpl service鎺ュ彛 </p>
  * <p>Copyright: Copyright &reg;  </p>
  * <p>Company: </p>
+ *
  * @author
  * @version 1.0.0
  */
@@ -65,10 +66,12 @@ public class UserServiceImpl extends AbstractCRUDCacheServiceImpl<UserDao, UserE
     @Value("${sms.apiId:ADsUXLrS81vZDU95}")
     private String appid;
 
-    /** 鐭俊妯℃澘ID**/
+    /**
+     * 鐭俊妯℃澘ID
+     **/
     private static String SMS_TPYE = "30";
 
-    private static String SMS_VERIFY_CODE_KEY ="login:sms:verify:";
+    private static String SMS_VERIFY_CODE_KEY = "login:sms:verify:";
 
     @Override
     protected String getExtKey(UserEntity data) {
@@ -76,8 +79,7 @@ public class UserServiceImpl extends AbstractCRUDCacheServiceImpl<UserDao, UserE
     }
 
 
-
-    private void doHandlerUser(UserEntity entity) throws AppException {
+    public void doHandlerUser(UserEntity entity) throws AppException {
         if (StringUtils.isNotEmpty(entity.getLoginPwd())) {
             try {
                 entity.setLoginPwd(SecurityUtil.md5DoubleEncoding(entity.getLoginPwd()));
@@ -101,9 +103,9 @@ public class UserServiceImpl extends AbstractCRUDCacheServiceImpl<UserDao, UserE
 
     @Override
     protected void saveAfter(UserEntity entity, Context context) throws AppException {
-        if(CollectionUtils.isNotEmpty(entity.getRoleIds())){
+        if (CollectionUtils.isNotEmpty(entity.getRoleIds())) {
             List<RoleUserEntity> roleUserEntityList = new ArrayList<>();
-            entity.getRoleIds().stream().forEach(item->{
+            entity.getRoleIds().stream().forEach(item -> {
                 RoleUserEntity roleUserEntity = new RoleUserEntity();
                 roleUserEntity.setUserId(entity.getId());
                 roleUserEntity.setRoleId(item);
@@ -115,7 +117,10 @@ public class UserServiceImpl extends AbstractCRUDCacheServiceImpl<UserDao, UserE
 
     @Override
     protected void updateBefore(UserEntity entity, Context context) throws AppException {
-        if (entity.getId().longValue() == SysConstains.ADMIN_ID && !context.getUser().isAdmin()) {
+/*        if (entity.getId().longValue() == SysConstains.ADMIN_ID && !context.getUser().isAdmin()) {
+            throw new AppException("浣犳病鏈夋潈闄愭墽琛岃鎿嶄綔");
+        }*/
+        if (entity.getId().longValue() == SysConstains.ADMIN_ID) {
             throw new AppException("浣犳病鏈夋潈闄愭墽琛岃鎿嶄綔");
         }
         this.doHandlerUser(entity);
@@ -123,9 +128,9 @@ public class UserServiceImpl extends AbstractCRUDCacheServiceImpl<UserDao, UserE
 
     @Override
     protected void updateAfter(UserEntity entity, Context context) throws AppException {
-        if(CollectionUtils.isNotEmpty(entity.getRoleIds())){
+        if (CollectionUtils.isNotEmpty(entity.getRoleIds())) {
             List<RoleUserEntity> roleUserEntityList = new ArrayList<>();
-            entity.getRoleIds().stream().forEach(item->{
+            entity.getRoleIds().stream().forEach(item -> {
                 RoleUserEntity roleUserEntity = new RoleUserEntity();
                 roleUserEntity.setUserId(entity.getId());
                 roleUserEntity.setRoleId(item);
@@ -156,13 +161,13 @@ public class UserServiceImpl extends AbstractCRUDCacheServiceImpl<UserDao, UserE
 
     @Override
     protected void findAfter(UserEntity params, PageInfo pageInfo, Context context, List<UserEntity> list) throws AppException {
-        if(CollectionUtils.isNotEmpty(list)) {
-            list.stream().forEach(item->{
+        if (CollectionUtils.isNotEmpty(list)) {
+            list.stream().forEach(item -> {
                 RoleUserEntity query = new RoleUserEntity();
                 query.setUserId(item.getId());
                 List<RoleUserEntity> roleUserEntityList = roleUserDao.getList(query);
                 List<Long> roleIds = new ArrayList<>();
-                roleUserEntityList.stream().forEach(role->{
+                roleUserEntityList.stream().forEach(role -> {
                     roleIds.add(role.getRoleId());
                 });
                 item.setRoleIds(roleIds);
@@ -364,64 +369,64 @@ public class UserServiceImpl extends AbstractCRUDCacheServiceImpl<UserDao, UserE
 
     @Override
     public void sendSmsVerifyCode(String mobileNumber) throws AppException {
-        if(StringUtils.isEmpty(mobileNumber)){
+        if (StringUtils.isEmpty(mobileNumber)) {
             throw new AppException("鎵嬫満鍙蜂笉鑳戒负绌�");
         }
-        if(!PhoneUtil.isPhone(mobileNumber)){
+        if (!PhoneUtil.isPhone(mobileNumber)) {
             throw new AppException("鎵嬫満鍙风爜鏍煎紡涓嶆纭�");
         }
         UserEntity user = this.selectOne(new UserQuery().mobile(mobileNumber));
-        if(user==null){
+        if (user == null) {
             throw new AppException("鎵嬫満鍙风爜:" + mobileNumber + "娌℃湁娉ㄥ唽鐢ㄦ埛");
         }
         String verifyCode = cacheService.get(SMS_VERIFY_CODE_KEY + mobileNumber);
-        if(StringUtils.isNotEmpty(verifyCode)){
+        if (StringUtils.isNotEmpty(verifyCode)) {
             throw new AppException("褰撳墠鎵嬫満鍙风爜宸插彂閫侀獙璇佺爜锛岃绋嶅悗閲嶈瘯");
         }
         try {
             Map<String, String> params = new HashMap<>();
-            params.put("appid",appid);
-            params.put("phone",mobileNumber);
-            params.put("type",SMS_TPYE);
+            params.put("appid", appid);
+            params.put("phone", mobileNumber);
+            params.put("type", SMS_TPYE);
 
             String[] json = new String[2];
             String vCode = RandomUtil.randomNumbers(6);
             json[0] = vCode;
             json[1] = "1";
             params.put("json", JSONObject.toJSON(json).toString());
-            String resp = HttpUtil.doPost(smsApiUrl,params);
+            String resp = HttpUtil.doPost(smsApiUrl, params);
             JSONObject respJson = JSONObject.parseObject(resp);
-            if(respJson.getIntValue("code")==0){
+            if (respJson.getIntValue("code") == 0) {
                 throw new AppException("鐭俊鍙戦€佸け璐�:" + respJson.getString("message"));
             }
             //鏈夋晥鏈�60绉�
-            cacheService.setnx(SMS_VERIFY_CODE_KEY+mobileNumber,vCode,60);
-        }catch (Exception e){
-            log.error("鐭俊鍙戦€佸紓甯�",e);
+            cacheService.setnx(SMS_VERIFY_CODE_KEY + mobileNumber, vCode, 60);
+        } catch (Exception e) {
+            log.error("鐭俊鍙戦€佸紓甯�", e);
             throw new AppException("鐭俊鍙戦€佸紓甯�");
         }
     }
 
     @Override
     public UserEntity doSmsLogin(String mobileNumber, String verifyCode, String loginIp) throws AppException {
-        if(StringUtils.isEmpty(mobileNumber)){
+        if (StringUtils.isEmpty(mobileNumber)) {
             throw new AppException("鎵嬫満鍙蜂笉鑳戒负绌�");
         }
-        if(StringUtils.isEmpty(verifyCode)){
+        if (StringUtils.isEmpty(verifyCode)) {
             throw new AppException("楠岃瘉鐮佷笉鑳戒负绌�");
         }
-        if(!PhoneUtil.isPhone(mobileNumber)){
+        if (!PhoneUtil.isPhone(mobileNumber)) {
             throw new AppException("鎵嬫満鍙风爜鏍煎紡涓嶆纭�");
         }
         UserEntity customer = this.selectOne(new UserQuery().mobile(mobileNumber));
-        if(customer==null){
+        if (customer == null) {
             throw new AppException("鎵嬫満鍙风爜:" + mobileNumber + "娌℃湁娉ㄥ唽鐢ㄦ埛");
         }
         String vCode = cacheService.get(SMS_VERIFY_CODE_KEY + mobileNumber);
-        if(StringUtils.isEmpty(vCode)){
+        if (StringUtils.isEmpty(vCode)) {
             throw new AppException("楠岃瘉鐮佸凡澶辨晥");
         }
-        if(!verifyCode.equals(vCode)){
+        if (!verifyCode.equals(vCode)) {
             throw new AppException("楠岃瘉鐮佷笉姝g‘");
         }
         UserEntity update = new UserEntity();
diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/base/system/user/web/UserController.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/base/system/user/web/UserController.java
index 01c704c1..a8ba440b 100644
--- a/attendance-performance-manager/src/main/java/com/mortals/xhx/base/system/user/web/UserController.java
+++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/base/system/user/web/UserController.java
@@ -24,10 +24,7 @@ import io.jsonwebtoken.Jwts;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.ObjectUtils;
 import org.springframework.util.StringUtils;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -122,6 +119,31 @@ public class UserController extends BaseCRUDJsonBodyMappingController<UserServic
     }
 
 
+    @RequestMapping(value = "repassword", method = RequestMethod.POST)
+    public String rePassword(@RequestBody UserEntity userEntity) {
+        JSONObject ret = new JSONObject();
+        try {
+             //鏌ヨ鐢ㄦ埛鏄惁瀛樺湪
+            boolean existUser = service.existUser(userEntity.getLoginName(), userEntity.getId());
+            if(!existUser) throw  new AppException("鐢ㄦ埛涓嶅瓨鍦紒");
+
+            //淇敼瀵嗙爜
+            //service.doHandlerUser(userEntity);
+
+            service.update(userEntity,getContext());
+            //鏇存柊瀵嗙爜
+
+
+            ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
+            ret.put(KEY_RESULT_MSG, "瀵嗙爜淇敼鎴愬姛锛�");
+        } catch (Exception e) {
+            ret.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
+            ret.put(KEY_RESULT_MSG, super.convertException(e));
+        }
+        return ret.toJSONString();
+    }
+
+
     public static void main(String[] args) {
 
         String token = "eyJhbGciOiJIUzI1NiJ9.eyJsb2dpbl91c2VyX2tleSI6IjIzNGE5NDA5ZDVhOTQ3MWNhMzdkYjZkYmMwY2JjZTc5In0.MWyQW40HYDxyUz7PJRf_nRsFPWx3Hr811Ime984nixs";
diff --git a/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/web/ApiLoginController.java b/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/web/ApiLoginController.java
index abb94f7a..9a2a7b9f 100644
--- a/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/web/ApiLoginController.java
+++ b/attendance-performance-manager/src/main/java/com/mortals/xhx/busiz/h5/web/ApiLoginController.java
@@ -121,64 +121,6 @@ public class ApiLoginController extends BaseJsonBodyController {
             ret.put(KEY_RESULT_MSG, super.convertException(e));
             return ret.toJSONString();
         }
-
-/*
-
-
-        JSONObject ret = new JSONObject();
-        String loginName = loginForm.getLoginName();
-        String password = loginForm.getPassword();
-        String ip = super.getRequestIP(request);
-        if (StringUtils.isEmpty(loginName) || StringUtils.isEmpty(password)) {
-            ret.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);
-            ret.put(KEY_RESULT_MSG, "鏈幏鍙栧埌鐢ㄦ埛淇℃伅锛岃閲嶆柊鐧诲綍");
-            return ret.toJSONString();
-        }
-        UserEntity userEntity = null;
-        try {
-            loginForm.validate();
-            userEntity = userService.doLogin(loginName, password, ip);
-            userEntity.setLastLoginAddress(ip);
-            recordSysLog(request, userEntity, "H5鐢ㄦ埛鐧诲綍绯荤粺鎴愬姛!");
-            String currUserName = userEntity.getRealName();
-            if (currUserName == null || currUserName.trim().length() == 0) {
-                currUserName = "绠$悊鍛�";
-            }
-            JSONObject data = new JSONObject();
-            data.put("currUserName", currUserName);
-            data.put("id", userEntity.getId());
-            data.put("userType", userEntity.getUserType());
-
-            HashSet<Integer> set = new HashSet<>();
-            set.add(0);
-            set.add(2);
-            set.add(3);
-
-            if (ObjectUtils.isEmpty(userEntity.getUserType()) || !set.contains(userEntity.getUserType())) {
-                throw new AppException("褰撳墠鐢ㄦ埛涓嶆敮鎸丠5鐧诲綍!");
-            }
-
-            userEntity.setLoginTime(System.currentTimeMillis());
-            userEntity.setToken(IdUtil.fastSimpleUUID());
-            userEntity.setExpireTime(DateUtils.addCurrDate(3).getTime());
-            String token = authTokenService.createToken(userEntity);
-            data.put("token", token);
-
-            if (!ObjectUtils.isEmpty(loginForm.getDingCode())) {
-                //鏇存柊缁戝畾閽夐拤
-                userEntity.setDingUserId(loginForm.getDingCode());
-                userService.getUserDao().update(userEntity);
-            }
-            ret.put(KEY_RESULT_DATA, data);
-            ret.put(KEY_RESULT_CODE, VALUE_RESULT_SUCCESS);
-            ret.put(KEY_RESULT_MSG, "鐢ㄦ埛鐧诲綍绯荤粺鎴愬姛!");
-            return ret.toJSONString();
-        } catch (Exception e) {
-            log.error("h5 login error ", e);
-            ret.put(KEY_RESULT_CODE, VALUE_RESULT_FAILURE);SyncDoorsEventTaskImpl
-            ret.put(KEY_RESULT_MSG, super.convertException(e));SyncDoorsEventTaskImpl
-            return ret.toJSONString();
-        }*/
     }
 
     @RequestMapping("logout")
-- 
2.24.3