正在显示
8 个修改的文件
包含
308 行增加
和
9 行删除
| @@ -8,14 +8,14 @@ import com.google.code.kaptcha.impl.DefaultKaptcha; | @@ -8,14 +8,14 @@ import com.google.code.kaptcha.impl.DefaultKaptcha; | ||
| 8 | 8 | ||
| 9 | import com.thoughtworks.xstream.core.util.Base64Encoder; | 9 | import com.thoughtworks.xstream.core.util.Base64Encoder; |
| 10 | import com.tianbo.warehouse.controller.response.ResultJson; | 10 | import com.tianbo.warehouse.controller.response.ResultJson; |
| 11 | -import com.tianbo.warehouse.model.ROLE; | ||
| 12 | -import com.tianbo.warehouse.model.Token; | ||
| 13 | -import com.tianbo.warehouse.model.USERS; | 11 | +import com.tianbo.warehouse.dao.UserRoleMapper; |
| 12 | +import com.tianbo.warehouse.model.*; | ||
| 14 | import com.tianbo.warehouse.security.filter.JwtTokenUtil; | 13 | import com.tianbo.warehouse.security.filter.JwtTokenUtil; |
| 15 | import com.tianbo.warehouse.service.PermissionService; | 14 | import com.tianbo.warehouse.service.PermissionService; |
| 16 | import com.tianbo.warehouse.service.RoleService; | 15 | import com.tianbo.warehouse.service.RoleService; |
| 17 | 16 | ||
| 18 | import com.tianbo.warehouse.service.UserService; | 17 | import com.tianbo.warehouse.service.UserService; |
| 18 | +import com.tianbo.warehouse.util.MapToJsonUtil; | ||
| 19 | import com.tianbo.warehouse.util.RedisUtils; | 19 | import com.tianbo.warehouse.util.RedisUtils; |
| 20 | 20 | ||
| 21 | import io.swagger.annotations.ApiOperation; | 21 | import io.swagger.annotations.ApiOperation; |
| @@ -24,12 +24,10 @@ import org.apache.commons.lang.StringUtils; | @@ -24,12 +24,10 @@ import org.apache.commons.lang.StringUtils; | ||
| 24 | import org.springframework.beans.factory.annotation.Autowired; | 24 | import org.springframework.beans.factory.annotation.Autowired; |
| 25 | import org.springframework.beans.factory.annotation.Value; | 25 | import org.springframework.beans.factory.annotation.Value; |
| 26 | import org.springframework.http.ResponseEntity; | 26 | import org.springframework.http.ResponseEntity; |
| 27 | -import org.springframework.web.bind.annotation.PostMapping; | ||
| 28 | -import org.springframework.web.bind.annotation.RequestMapping; | ||
| 29 | -import org.springframework.web.bind.annotation.RequestParam; | ||
| 30 | -import org.springframework.web.bind.annotation.RestController; | 27 | +import org.springframework.web.bind.annotation.*; |
| 31 | import org.springframework.web.client.RestTemplate; | 28 | import org.springframework.web.client.RestTemplate; |
| 32 | 29 | ||
| 30 | +import javax.annotation.Resource; | ||
| 33 | import javax.imageio.ImageIO; | 31 | import javax.imageio.ImageIO; |
| 34 | 32 | ||
| 35 | import java.awt.image.BufferedImage; | 33 | import java.awt.image.BufferedImage; |
| @@ -66,6 +64,9 @@ public class AnonymousController { | @@ -66,6 +64,9 @@ public class AnonymousController { | ||
| 66 | @Autowired | 64 | @Autowired |
| 67 | UserService userService; | 65 | UserService userService; |
| 68 | 66 | ||
| 67 | + @Resource | ||
| 68 | + UserRoleMapper userRoleMapper; | ||
| 69 | + | ||
| 69 | /** | 70 | /** |
| 70 | * SSO验证服务票据响应属性名 | 71 | * SSO验证服务票据响应属性名 |
| 71 | */ | 72 | */ |
| @@ -185,7 +186,8 @@ public class AnonymousController { | @@ -185,7 +186,8 @@ public class AnonymousController { | ||
| 185 | user.setUserStatus(loginUser.getUserStatus()); | 186 | user.setUserStatus(loginUser.getUserStatus()); |
| 186 | user.setState(loginUser.getState()); | 187 | user.setState(loginUser.getState()); |
| 187 | }else { | 188 | }else { |
| 188 | - user.setPassword("sso"); | 189 | + assert loginUser != null; |
| 190 | + user.setPassword(loginUser.getPassword()); | ||
| 189 | user.setUserStatus(2); | 191 | user.setUserStatus(2); |
| 190 | user.setState(true); | 192 | user.setState(true); |
| 191 | userService.insertSelective(user); | 193 | userService.insertSelective(user); |
| @@ -235,12 +237,73 @@ public class AnonymousController { | @@ -235,12 +237,73 @@ public class AnonymousController { | ||
| 235 | String loginName = attributes.getString(LOGIN_NAME); | 237 | String loginName = attributes.getString(LOGIN_NAME); |
| 236 | String userId = attributes.getString(USER_ID); | 238 | String userId = attributes.getString(USER_ID); |
| 237 | String realName = attributes.getString("USER_NAME"); | 239 | String realName = attributes.getString("USER_NAME"); |
| 240 | + String password = attributes.getString("PWD"); | ||
| 238 | log.info("[SSO-AUTH-TICKET-INFO]-用户:{}/{}",loginName,realName); | 241 | log.info("[SSO-AUTH-TICKET-INFO]-用户:{}/{}",loginName,realName); |
| 239 | 242 | ||
| 240 | user.setUsername(loginName); | 243 | user.setUsername(loginName); |
| 244 | + user.setPassword(password); | ||
| 241 | // user.setUserId(userId); | 245 | // user.setUserId(userId); |
| 242 | } | 246 | } |
| 243 | } | 247 | } |
| 244 | return user; | 248 | return user; |
| 245 | } | 249 | } |
| 250 | + | ||
| 251 | + /** | ||
| 252 | + * 资源同步 | ||
| 253 | + * @param map | ||
| 254 | + * @return | ||
| 255 | + * @throws Exception | ||
| 256 | + */ | ||
| 257 | + @PostMapping(value = "/userSynchronization") | ||
| 258 | + @ResponseBody | ||
| 259 | + public ResultMessage userSynchronization(@RequestBody Map<String, Object> map){ | ||
| 260 | + //获取action的值,判断是push数据还是删除数据 | ||
| 261 | + String action = map.get("action").toString(); | ||
| 262 | + if ("user".equals(map.get("resType").toString())){ | ||
| 263 | + MapToJsonUtil jsonUtil = new MapToJsonUtil(); | ||
| 264 | + List<SSOUserData> list = jsonUtil.mapToList(map, SSOUserData.class, "data"); | ||
| 265 | + // 判断该用户是否存在 | ||
| 266 | + int i = 0; | ||
| 267 | + for (SSOUserData userData : list){ | ||
| 268 | + log.info("用户信息:{}", userData); | ||
| 269 | + USERS loginUser = userService.loadByUsername(userData.getLOGIN_NAME()); | ||
| 270 | + USERS users = new USERS(); | ||
| 271 | + users.setUsername(userData.getLOGIN_NAME()); | ||
| 272 | + users.setPassword(userData.getPWD()); | ||
| 273 | + //todo:统一认证的用户ID与我们的数据类型不匹配 暂时不同步 | ||
| 274 | + users.setMobilephone(userData.getMOBILE()); | ||
| 275 | + users.setEmail(userData.getEMAIL()); | ||
| 276 | + users.setRealname(userData.getUSER_NAME()); | ||
| 277 | + users.setCompanyId(73); | ||
| 278 | + users.setUpdatetime(new Date()); | ||
| 279 | + if (StringUtils.isEmpty(users.getUsername())){ | ||
| 280 | + return new ResultMessage("402","缺少lognin_name字段信息"); | ||
| 281 | + } | ||
| 282 | + if ("push".equals(action)) { | ||
| 283 | + if (loginUser != null){ | ||
| 284 | + log.info("通过账号为条件更新"); | ||
| 285 | + i = userService.updateByUsernameSelective(users); | ||
| 286 | + }else { | ||
| 287 | + if ( StringUtils.isEmpty(users.getPassword())){ | ||
| 288 | + return new ResultMessage("402","缺少pwd字段信息"); | ||
| 289 | + } | ||
| 290 | + users.setCreattime(new Date()); | ||
| 291 | + log.info("账号统一认证用户信息不存在可以 [新增]"); | ||
| 292 | + //接口返回userid,roleid73 等于转关运抵管理员 | ||
| 293 | + int userId = userService.insertSelective(users); | ||
| 294 | + UserRole userRole = new UserRole(userId,73); | ||
| 295 | + userRoleMapper.insertSelective(userRole); | ||
| 296 | + //todo: 默认权限分配 | ||
| 297 | + i= userId; | ||
| 298 | + } | ||
| 299 | + }else if ("recycle".equals(action)){ | ||
| 300 | + userService.deleteByUsername(users.getUsername()); | ||
| 301 | + } | ||
| 302 | + | ||
| 303 | + } | ||
| 304 | + | ||
| 305 | + return i > 0 ? new ResultMessage("200","资源同步成功"):new ResultMessage("202", "资源同步失败"); | ||
| 306 | + } | ||
| 307 | + return new ResultMessage("201","不是用户信息"); | ||
| 308 | + } | ||
| 246 | } | 309 | } |
| @@ -8,6 +8,8 @@ import java.util.List; | @@ -8,6 +8,8 @@ import java.util.List; | ||
| 8 | public interface USERSMapper { | 8 | public interface USERSMapper { |
| 9 | int deleteByPrimaryKey(Integer userId); | 9 | int deleteByPrimaryKey(Integer userId); |
| 10 | 10 | ||
| 11 | + int deleteByUsername(String username); | ||
| 12 | + | ||
| 11 | int insert(USERS record); | 13 | int insert(USERS record); |
| 12 | 14 | ||
| 13 | int insertSelective(USERS record); | 15 | int insertSelective(USERS record); |
| @@ -16,6 +18,8 @@ public interface USERSMapper { | @@ -16,6 +18,8 @@ public interface USERSMapper { | ||
| 16 | 18 | ||
| 17 | int updateByPrimaryKeySelective(USERS record); | 19 | int updateByPrimaryKeySelective(USERS record); |
| 18 | 20 | ||
| 21 | + int updateByUsernameSelective(USERS record); | ||
| 22 | + | ||
| 19 | int updateByPrimaryKey(USERS record); | 23 | int updateByPrimaryKey(USERS record); |
| 20 | 24 | ||
| 21 | List<USERS> selectByUsername(String userName); | 25 | List<USERS> selectByUsername(String userName); |
| 1 | +package com.tianbo.warehouse.model; | ||
| 2 | + | ||
| 3 | +import lombok.Data; | ||
| 4 | + | ||
| 5 | +import java.io.Serializable; | ||
| 6 | + | ||
| 7 | +/** | ||
| 8 | + * 针对统一认证访问的接口返回实体 | ||
| 9 | + */ | ||
| 10 | +@Data | ||
| 11 | +public class ResultMessage implements Serializable { | ||
| 12 | + | ||
| 13 | + private static final long serialVersionUID = 1L; | ||
| 14 | + | ||
| 15 | + private String resultCode; | ||
| 16 | + | ||
| 17 | + private String resultMessage; | ||
| 18 | + | ||
| 19 | + public ResultMessage(String resultCode, String resultMessage) { | ||
| 20 | + this.resultCode = resultCode; | ||
| 21 | + this.resultMessage = resultMessage; | ||
| 22 | + } | ||
| 23 | + | ||
| 24 | +} |
| 1 | +package com.tianbo.warehouse.model; | ||
| 2 | + | ||
| 3 | +import lombok.Data; | ||
| 4 | + | ||
| 5 | +/** | ||
| 6 | + * 统一认证资源同步实体 | ||
| 7 | + */ | ||
| 8 | +@Data | ||
| 9 | +public class SSOUserData { | ||
| 10 | + | ||
| 11 | + private String USER_ID; | ||
| 12 | + | ||
| 13 | + private String USER_NAME; | ||
| 14 | + | ||
| 15 | + private String USER_NO; | ||
| 16 | + | ||
| 17 | + private String MOBILE; | ||
| 18 | + | ||
| 19 | + private String IDCARD_NO; | ||
| 20 | + | ||
| 21 | + private String COUNTRY; | ||
| 22 | + | ||
| 23 | + private String SEX; | ||
| 24 | + | ||
| 25 | + private String NATIONALITY; | ||
| 26 | + | ||
| 27 | + private String OFFICE_PHONE; | ||
| 28 | + | ||
| 29 | + private String OFFICE_ADDRESS; | ||
| 30 | + | ||
| 31 | + private String EMAIL; | ||
| 32 | + | ||
| 33 | + private String JOB_LEVEL; | ||
| 34 | + | ||
| 35 | + private String JOB_TITLE; | ||
| 36 | + | ||
| 37 | + private String JOB_TYPE; | ||
| 38 | + | ||
| 39 | + private String JOB_STATUS; | ||
| 40 | + | ||
| 41 | + private String JOB_POSITION; | ||
| 42 | + | ||
| 43 | + private String SECRET_LEVEL; | ||
| 44 | + | ||
| 45 | + private String USER_POST; | ||
| 46 | + | ||
| 47 | + private String USER_JOB_ID; | ||
| 48 | + | ||
| 49 | + private String ORG_ID; | ||
| 50 | + | ||
| 51 | + private String USER_TITLE; | ||
| 52 | + | ||
| 53 | + private String LOGIN_NAME; | ||
| 54 | + | ||
| 55 | + private String SHOW_ORDER; | ||
| 56 | + | ||
| 57 | + private String REMARK; | ||
| 58 | + | ||
| 59 | + private String NAIL_ID; | ||
| 60 | + | ||
| 61 | + private String PK_PSNDOC; | ||
| 62 | + | ||
| 63 | + private String PWD; | ||
| 64 | + | ||
| 65 | + private String PWD_ENCRYPT; | ||
| 66 | + | ||
| 67 | + private String UPDATE_TIME; | ||
| 68 | +} |
| @@ -14,10 +14,14 @@ public interface UserService { | @@ -14,10 +14,14 @@ public interface UserService { | ||
| 14 | 14 | ||
| 15 | int updateByPrimaryKeySelective(USERS record); | 15 | int updateByPrimaryKeySelective(USERS record); |
| 16 | 16 | ||
| 17 | + int updateByUsernameSelective(USERS record); | ||
| 18 | + | ||
| 17 | int insertSelective(USERS record); | 19 | int insertSelective(USERS record); |
| 18 | 20 | ||
| 19 | int deleteByPrimaryKey(Integer userId); | 21 | int deleteByPrimaryKey(Integer userId); |
| 20 | 22 | ||
| 23 | + int deleteByUsername(String username); | ||
| 24 | + | ||
| 21 | int setUserRole(UserRole userRole); | 25 | int setUserRole(UserRole userRole); |
| 22 | 26 | ||
| 23 | ROLE getUserCompany(Integer company_id); | 27 | ROLE getUserCompany(Integer company_id); |
| @@ -134,6 +134,16 @@ public class UserServiceImpl implements UserService{ | @@ -134,6 +134,16 @@ public class UserServiceImpl implements UserService{ | ||
| 134 | } | 134 | } |
| 135 | 135 | ||
| 136 | @Override | 136 | @Override |
| 137 | + public int updateByUsernameSelective(USERS record){ | ||
| 138 | + int i = 0; | ||
| 139 | + if (record!=null){ | ||
| 140 | + i = usersMapper.updateByUsernameSelective(record); | ||
| 141 | + } | ||
| 142 | + return i; | ||
| 143 | + | ||
| 144 | + } | ||
| 145 | + | ||
| 146 | + @Override | ||
| 137 | public int insertSelective(USERS record){ | 147 | public int insertSelective(USERS record){ |
| 138 | if (null!=record){ | 148 | if (null!=record){ |
| 139 | return usersMapper.insertSelective(record); | 149 | return usersMapper.insertSelective(record); |
| @@ -151,6 +161,15 @@ public class UserServiceImpl implements UserService{ | @@ -151,6 +161,15 @@ public class UserServiceImpl implements UserService{ | ||
| 151 | } | 161 | } |
| 152 | } | 162 | } |
| 153 | 163 | ||
| 164 | + @Override | ||
| 165 | + public int deleteByUsername(String username){ | ||
| 166 | + if (StringUtils.isNotBlank(username)){ | ||
| 167 | + return usersMapper.deleteByUsername(username); | ||
| 168 | + }else { | ||
| 169 | + return 0; | ||
| 170 | + } | ||
| 171 | + } | ||
| 172 | + | ||
| 154 | /**重置用户的权限,每次设置用户权限关系前,先删除用户所有权限,再重新分配用户权限 | 173 | /**重置用户的权限,每次设置用户权限关系前,先删除用户所有权限,再重新分配用户权限 |
| 155 | *这里需要开启事务,删除 或者插入不生效就回滚 | 174 | *这里需要开启事务,删除 或者插入不生效就回滚 |
| 156 | * @param userRole | 175 | * @param userRole |
| 1 | +package com.tianbo.warehouse.util; | ||
| 2 | + | ||
| 3 | +import com.alibaba.fastjson.JSON; | ||
| 4 | +import com.alibaba.fastjson.JSONArray; | ||
| 5 | +import com.alibaba.fastjson.JSONObject; | ||
| 6 | + | ||
| 7 | +import java.util.List; | ||
| 8 | +import java.util.Map; | ||
| 9 | + | ||
| 10 | +/** | ||
| 11 | + * @author shenhailong | ||
| 12 | + * <p> | ||
| 13 | + * 2020/12/16/16:12 | ||
| 14 | + */ | ||
| 15 | +public class MapToJsonUtil<T> { | ||
| 16 | + | ||
| 17 | + public static JSONObject mapToJson(Map<String, Object> map) { | ||
| 18 | + String data = JSON.toJSONString(map); | ||
| 19 | + return JSON.parseObject(data); | ||
| 20 | + } | ||
| 21 | + /** | ||
| 22 | + * map中取key对应的value | ||
| 23 | + * @param map | ||
| 24 | + * @param key | ||
| 25 | + * @return | ||
| 26 | + */ | ||
| 27 | + public String mapToString(Map<String, Object> map, String key) { | ||
| 28 | + JSONObject jsonObject = mapToJson(map); | ||
| 29 | + return jsonObject.getString(key); | ||
| 30 | + } | ||
| 31 | + /** | ||
| 32 | + * map中取类对象 | ||
| 33 | + * @param map | ||
| 34 | + * @param clazz | ||
| 35 | + * @param key | ||
| 36 | + * @param <T> | ||
| 37 | + * @return | ||
| 38 | + */ | ||
| 39 | + public static <T> T mapToObject(Map<String, Object> map, Class<T> clazz, String key) { | ||
| 40 | + T t = null; | ||
| 41 | + JSONObject jsonObject = mapToJson(map); | ||
| 42 | + JSONObject object = jsonObject.getJSONObject(key); | ||
| 43 | + t = object.toJavaObject(clazz); | ||
| 44 | + return t; | ||
| 45 | + } | ||
| 46 | + /** | ||
| 47 | + * map中取list | ||
| 48 | + * @param map | ||
| 49 | + * @param clazz | ||
| 50 | + * @param key | ||
| 51 | + * @return | ||
| 52 | + */ | ||
| 53 | + public List<T> mapToList(Map<String, Object> map, Class<T> clazz, String key) { | ||
| 54 | + List<T> t = null; | ||
| 55 | + JSONObject jsonObject = mapToJson(map); | ||
| 56 | + JSONArray array = jsonObject.getJSONArray(key); | ||
| 57 | + t = array.toJavaList(clazz); | ||
| 58 | + return t; | ||
| 59 | + } | ||
| 60 | + | ||
| 61 | + | ||
| 62 | +} |
| @@ -194,6 +194,10 @@ | @@ -194,6 +194,10 @@ | ||
| 194 | delete from users | 194 | delete from users |
| 195 | where user_id = #{userId,jdbcType=INTEGER} | 195 | where user_id = #{userId,jdbcType=INTEGER} |
| 196 | </delete> | 196 | </delete> |
| 197 | + <delete id="deleteByUsername" parameterType="java.lang.String" > | ||
| 198 | + delete from users | ||
| 199 | + where username = #{username,jdbcType=VARCHAR} | ||
| 200 | + </delete> | ||
| 197 | <insert id="insert" parameterType="com.tianbo.warehouse.model.USERS" > | 201 | <insert id="insert" parameterType="com.tianbo.warehouse.model.USERS" > |
| 198 | insert into users (user_id, username, password, | 202 | insert into users (user_id, username, password, |
| 199 | birthday, sex, address, | 203 | birthday, sex, address, |
| @@ -206,7 +210,7 @@ | @@ -206,7 +210,7 @@ | ||
| 206 | #{updatetime,jdbcType=TIMESTAMP}, #{userface,jdbcType=VARCHAR}, #{realname,jdbcType=VARCHAR}, | 210 | #{updatetime,jdbcType=TIMESTAMP}, #{userface,jdbcType=VARCHAR}, #{realname,jdbcType=VARCHAR}, |
| 207 | #{email,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER},#{createBy,jdbcType=VARCHAR}) | 211 | #{email,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER},#{createBy,jdbcType=VARCHAR}) |
| 208 | </insert> | 212 | </insert> |
| 209 | - <insert id="insertSelective" parameterType="com.tianbo.warehouse.model.USERS" > | 213 | + <insert id="insertSelective" parameterType="com.tianbo.warehouse.model.USERS" useGeneratedKeys="true" keyProperty="userId"> |
| 210 | insert into users | 214 | insert into users |
| 211 | <trim prefix="(" suffix=")" suffixOverrides="," > | 215 | <trim prefix="(" suffix=")" suffixOverrides="," > |
| 212 | <if test="userId != null" > | 216 | <if test="userId != null" > |
| @@ -360,6 +364,57 @@ | @@ -360,6 +364,57 @@ | ||
| 360 | </set> | 364 | </set> |
| 361 | where user_id = #{userId,jdbcType=INTEGER} | 365 | where user_id = #{userId,jdbcType=INTEGER} |
| 362 | </update> | 366 | </update> |
| 367 | + <update id="updateByUsernameSelective" parameterType="com.tianbo.warehouse.model.USERS" > | ||
| 368 | + update users | ||
| 369 | + <set > | ||
| 370 | + <if test="password != null" > | ||
| 371 | + password = #{password,jdbcType=VARCHAR}, | ||
| 372 | + </if> | ||
| 373 | + <if test="birthday != null" > | ||
| 374 | + birthday = #{birthday,jdbcType=TIMESTAMP}, | ||
| 375 | + </if> | ||
| 376 | + <if test="sex != null" > | ||
| 377 | + sex = #{sex,jdbcType=CHAR}, | ||
| 378 | + </if> | ||
| 379 | + <if test="address != null" > | ||
| 380 | + address = #{address,jdbcType=VARCHAR}, | ||
| 381 | + </if> | ||
| 382 | + <if test="state != null" > | ||
| 383 | + state = #{state,jdbcType=BIT}, | ||
| 384 | + </if> | ||
| 385 | + <if test="mobilephone != null" > | ||
| 386 | + mobilePhone = #{mobilephone,jdbcType=VARCHAR}, | ||
| 387 | + </if> | ||
| 388 | + <if test="creattime != null" > | ||
| 389 | + creatTime = #{creattime,jdbcType=TIMESTAMP}, | ||
| 390 | + </if> | ||
| 391 | + <if test="updatetime != null" > | ||
| 392 | + updateTime = #{updatetime,jdbcType=TIMESTAMP}, | ||
| 393 | + </if> | ||
| 394 | + <if test="userface != null" > | ||
| 395 | + userFace = #{userface,jdbcType=VARCHAR}, | ||
| 396 | + </if> | ||
| 397 | + <if test="realname != null" > | ||
| 398 | + realname = #{realname,jdbcType=VARCHAR}, | ||
| 399 | + </if> | ||
| 400 | + <if test="email != null" > | ||
| 401 | + email = #{email,jdbcType=VARCHAR}, | ||
| 402 | + </if> | ||
| 403 | + <if test="age != null" > | ||
| 404 | + age = #{age,jdbcType=INTEGER}, | ||
| 405 | + </if> | ||
| 406 | + <if test="companyId != null" > | ||
| 407 | + company_id = #{companyId,jdbcType=INTEGER}, | ||
| 408 | + </if> | ||
| 409 | + <if test="userStatus != null" > | ||
| 410 | + user_status = #{userStatus,jdbcType=INTEGER}, | ||
| 411 | + </if> | ||
| 412 | + <if test="loginDate != null" > | ||
| 413 | + login_date = #{loginDate,jdbcType=TIMESTAMP}, | ||
| 414 | + </if> | ||
| 415 | + </set> | ||
| 416 | + where username = #{username,jdbcType=VARCHAR} | ||
| 417 | + </update> | ||
| 363 | <update id="updateByPrimaryKey" parameterType="com.tianbo.warehouse.model.USERS" > | 418 | <update id="updateByPrimaryKey" parameterType="com.tianbo.warehouse.model.USERS" > |
| 364 | update users | 419 | update users |
| 365 | set password = #{password,jdbcType=VARCHAR}, | 420 | set password = #{password,jdbcType=VARCHAR}, |
-
请 注册 或 登录 后发表评论