【7.0.4】【c】新增更新用户信息接口

pull/22/head
fengshuonan 2021-06-18 17:26:52 +08:00
parent a1dc5faff7
commit 9f755cc867
7 changed files with 194 additions and 2 deletions

View File

@ -24,6 +24,13 @@
<version>${roses.version}</version>
</dependency>
<!--校验模块的api-->
<dependency>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>validator-api</artifactId>
<version>${roses.version}</version>
</dependency>
</dependencies>
</project>

View File

@ -76,7 +76,12 @@ public enum CustomerExceptionEnum implements AbstractExceptionEnum {
/**
*
*/
ACTIVE_ERROR(RuleConstants.BUSINESS_ERROR_TYPE_CODE + CustomerConstants.CUSTOMER_EXCEPTION_STEP_CODE + "07", "激活用户失败!用户激活码无效!");
ACTIVE_ERROR(RuleConstants.BUSINESS_ERROR_TYPE_CODE + CustomerConstants.CUSTOMER_EXCEPTION_STEP_CODE + "07", "激活用户失败!用户激活码无效!"),
/**
*
*/
PWD_ERROR(RuleConstants.BUSINESS_ERROR_TYPE_CODE + CustomerConstants.CUSTOMER_EXCEPTION_STEP_CODE + "08", "更改密码失败,原密码错误!");
/**
*

View File

@ -0,0 +1,56 @@
package cn.stylefeng.roses.kernel.customer.api.pojo;
import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* bean
*
* @author fengshuonan
* @date 2021/6/18 16:37
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class CustomerInfoRequest extends BaseRequest {
/**
* id
*/
@NotNull(message = "用户id不能为空", groups = {changeAvatar.class, changePassword.class})
private Long customerId;
/**
* id
*/
@NotNull(message = "用户头像", groups = changeAvatar.class)
private Long avatar;
/**
*
*/
@NotBlank(message = "原密码不能为空", groups = changePassword.class)
private String oldPassword;
/**
*
*/
@NotBlank(message = "新密码不能为空", groups = changePassword.class)
private String newPassword;
/**
*
*/
public @interface changePassword {
}
/**
*
*/
public @interface changeAvatar {
}
}

View File

@ -0,0 +1,66 @@
package cn.stylefeng.roses.kernel.customer.modular.controller;
import cn.stylefeng.roses.kernel.customer.api.pojo.CustomerInfo;
import cn.stylefeng.roses.kernel.customer.api.pojo.CustomerInfoRequest;
import cn.stylefeng.roses.kernel.customer.modular.request.CustomerRequest;
import cn.stylefeng.roses.kernel.customer.modular.service.CustomerService;
import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData;
import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData;
import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource;
import cn.stylefeng.roses.kernel.scanner.api.annotation.GetResource;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* C
*
* @author fengshuonan
* @date 2021/6/18 16:28
*/
@RestController
@ApiResource(name = "C端用户个人信息修改")
public class CustomerInfoController {
@Resource
private CustomerService customerService;
/**
*
*
* @author fengshuonan
* @date 2021/6/18 16:29
*/
@GetResource(name = "获取个人信息", path = "/customerInfo/getPersonInfo", requiredPermission = false)
public ResponseData getPersonInfo(@RequestBody @Validated(CustomerInfoRequest.detail.class) CustomerRequest customerRequest) {
CustomerInfo customerInfo = customerService.getCustomerInfoById(customerRequest.getCustomerId());
return new SuccessResponseData(customerInfo);
}
/**
*
*
* @author fengshuonan
* @date 2021/6/18 16:29
*/
@GetResource(name = "修改个人密码", path = "/customerInfo/updatePassword", requiredPermission = false)
public ResponseData updatePassword(@RequestBody @Validated(CustomerInfoRequest.changePassword.class) CustomerInfoRequest customerInfoRequest) {
this.customerService.updatePassword(customerInfoRequest);
return new SuccessResponseData();
}
/**
*
*
* @author fengshuonan
* @date 2021/6/18 16:29
*/
@GetResource(name = "修改个人头像", path = "/customerInfo/updateAvatar", requiredPermission = false)
public ResponseData updateAvatar(@RequestBody @Validated(CustomerInfoRequest.changeAvatar.class) CustomerInfoRequest customerInfoRequest) {
this.customerService.updateAvatar(customerInfoRequest);
return new SuccessResponseData();
}
}

View File

@ -21,7 +21,7 @@ public class CustomerRequest extends BaseRequest {
/**
* id
*/
@NotNull(message = "主键id不能为空", groups = {edit.class, delete.class})
@NotNull(message = "主键id不能为空", groups = {edit.class, delete.class, detail.class})
@ChineseDescription("主键id")
private Long customerId;

View File

@ -3,6 +3,7 @@ package cn.stylefeng.roses.kernel.customer.modular.service;
import cn.stylefeng.roses.kernel.auth.api.pojo.auth.LoginRequest;
import cn.stylefeng.roses.kernel.auth.api.pojo.auth.LoginResponse;
import cn.stylefeng.roses.kernel.customer.api.CustomerApi;
import cn.stylefeng.roses.kernel.customer.api.pojo.CustomerInfoRequest;
import cn.stylefeng.roses.kernel.customer.modular.entity.Customer;
import cn.stylefeng.roses.kernel.customer.modular.request.CustomerRequest;
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
@ -106,4 +107,20 @@ public interface CustomerService extends IService<Customer>, CustomerApi {
*/
PageResult<Customer> findPage(CustomerRequest customerRequest);
/**
*
*
* @author fengshuonan
* @date 2021/6/18 17:16
*/
void updatePassword(CustomerInfoRequest customerInfoRequest);
/**
*
*
* @author fengshuonan
* @date 2021/6/18 17:16
*/
void updateAvatar(CustomerInfoRequest customerInfoRequest);
}

View File

@ -16,6 +16,7 @@ import cn.stylefeng.roses.kernel.customer.api.exception.CustomerException;
import cn.stylefeng.roses.kernel.customer.api.exception.enums.CustomerExceptionEnum;
import cn.stylefeng.roses.kernel.customer.api.expander.CustomerConfigExpander;
import cn.stylefeng.roses.kernel.customer.api.pojo.CustomerInfo;
import cn.stylefeng.roses.kernel.customer.api.pojo.CustomerInfoRequest;
import cn.stylefeng.roses.kernel.customer.modular.entity.Customer;
import cn.stylefeng.roses.kernel.customer.modular.factory.CustomerFactory;
import cn.stylefeng.roses.kernel.customer.modular.mapper.CustomerMapper;
@ -26,7 +27,9 @@ import cn.stylefeng.roses.kernel.db.api.factory.PageResultFactory;
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.email.api.MailSenderApi;
import cn.stylefeng.roses.kernel.email.api.pojo.SendMailParam;
import cn.stylefeng.roses.kernel.file.api.FileInfoApi;
import cn.stylefeng.roses.kernel.file.api.FileOperatorApi;
import cn.stylefeng.roses.kernel.file.api.pojo.response.SysFileInfoResponse;
import cn.stylefeng.roses.kernel.jwt.api.context.JwtContext;
import cn.stylefeng.roses.kernel.jwt.api.pojo.payload.DefaultJwtPayload;
import cn.stylefeng.roses.kernel.log.api.LoginLogServiceApi;
@ -85,6 +88,9 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> i
@Resource
private FileOperatorApi fileOperatorApi;
@Resource
private FileInfoApi fileInfoApi;
@Override
@Transactional(rollbackFor = Exception.class)
public void reg(CustomerRequest customerRequest) {
@ -269,6 +275,41 @@ public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> i
return this.list(wrapper);
}
@Override
public void updatePassword(CustomerInfoRequest customerInfoRequest) {
CustomerRequest customerRequest = new CustomerRequest();
customerRequest.setCustomerId(customerInfoRequest.getCustomerId());
Customer customer = this.detail(customerRequest);
// 校验旧密码是否正确
Boolean passwordRightFlag = passwordStoredEncryptApi.checkPassword(customerInfoRequest.getOldPassword(), customer.getPassword());
if (!passwordRightFlag) {
throw new CustomerException(CustomerExceptionEnum.PWD_ERROR);
}
// 更新密码
String encryptPwd = passwordStoredEncryptApi.encrypt(customerInfoRequest.getNewPassword());
customer.setPassword(encryptPwd);
this.updateById(customer);
}
@Override
public void updateAvatar(CustomerInfoRequest customerInfoRequest) {
CustomerRequest customerRequest = new CustomerRequest();
customerRequest.setCustomerId(customerInfoRequest.getCustomerId());
Customer customer = this.detail(customerRequest);
// 根据id查询文件obj名称
SysFileInfoResponse fileInfo = fileInfoApi.getFileInfoWithoutContent(customerInfoRequest.getAvatar());
// 更新头像
customer.setAvatar(customerInfoRequest.getAvatar());
customer.setAvatarObjectName(fileInfo.getFileObjectName());
this.updateById(customer);
}
@Override
public CustomerInfo getCustomerInfoById(Long customerId) {