会员地址手机号加密H5处理

pull/1/head
chuzhichao 2 years ago
parent 2a2cbb19e5
commit 27b7accbbc

@ -2,11 +2,15 @@ package com.cyl.h5.controller;
import com.cyl.h5.service.H5MemberAddressService; import com.cyl.h5.service.H5MemberAddressService;
import com.cyl.ums.domain.MemberAddress; import com.cyl.ums.domain.MemberAddress;
import com.cyl.ums.pojo.dto.MemberAddressDTO;
import com.cyl.ums.pojo.vo.MemberAddressVO;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController @RestController
@RequestMapping("/h5/member/address") @RequestMapping("/h5/member/address")
public class H5MemberAddressController { public class H5MemberAddressController {
@ -15,32 +19,32 @@ public class H5MemberAddressController {
private H5MemberAddressService h5MemberAddressService; private H5MemberAddressService h5MemberAddressService;
@GetMapping("/list") @GetMapping("/list")
public AjaxResult getList(){ public ResponseEntity<List<MemberAddressVO>> getList(){
return AjaxResult.success(h5MemberAddressService.selectList()); return ResponseEntity.ok(h5MemberAddressService.selectList());
} }
@GetMapping("/default") @GetMapping("/default")
public ResponseEntity<MemberAddress> getDefault(){ public ResponseEntity<MemberAddressVO> getDefault(){
return ResponseEntity.ok(h5MemberAddressService.getDefault()); return ResponseEntity.ok(h5MemberAddressService.getDefault());
} }
@PostMapping("/create") @PostMapping("/create")
public AjaxResult create(@RequestBody MemberAddress memberAddress){ public ResponseEntity<Integer> create(@RequestBody MemberAddressDTO memberAddressDTO){
return AjaxResult.success(h5MemberAddressService.insert(memberAddress)); return ResponseEntity.ok(h5MemberAddressService.insert(memberAddressDTO));
} }
@PutMapping("/update") @PutMapping("/update")
public AjaxResult update(@RequestBody MemberAddress memberAddress){ public ResponseEntity<Integer> update(@RequestBody MemberAddressDTO memberAddressDTO){
return AjaxResult.success(h5MemberAddressService.update(memberAddress)); return ResponseEntity.ok(h5MemberAddressService.update(memberAddressDTO));
} }
@GetMapping("/{id}") @GetMapping("/{id}")
public AjaxResult getInfo(@PathVariable Long id){ public ResponseEntity<MemberAddressVO> getInfo(@PathVariable Long id){
return AjaxResult.success(h5MemberAddressService.selectById(id)); return ResponseEntity.ok(h5MemberAddressService.selectById(id));
} }
@DeleteMapping("/{id}") @DeleteMapping("/{id}")
public AjaxResult remove(@PathVariable Long id) { public ResponseEntity<Integer> remove(@PathVariable Long id) {
return AjaxResult.success(h5MemberAddressService.deleteById(id)); return ResponseEntity.ok(h5MemberAddressService.deleteById(id));
} }
} }

@ -4,16 +4,24 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.cyl.ums.domain.Member; import com.cyl.ums.domain.Member;
import com.cyl.ums.domain.MemberAddress; import com.cyl.ums.domain.MemberAddress;
import com.cyl.ums.mapper.MemberAddressMapper; import com.cyl.ums.mapper.MemberAddressMapper;
import com.cyl.ums.pojo.dto.MemberAddressDTO;
import com.cyl.ums.pojo.vo.MemberAddressVO;
import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.utils.AesCryptoUtils;
import com.ruoyi.common.utils.PhoneUtils;
import com.ruoyi.framework.config.LocalDataUtil; import com.ruoyi.framework.config.LocalDataUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* Service * Service
@ -26,6 +34,9 @@ public class H5MemberAddressService {
@Autowired @Autowired
private MemberAddressMapper memberAddressMapper; private MemberAddressMapper memberAddressMapper;
@Value("${aes.key}")
private String aesKey;
/** /**
* *
* *
@ -33,29 +44,43 @@ public class H5MemberAddressService {
* @return * @return
*/ */
public MemberAddress selectById(Long id) { public MemberAddressVO selectById(Long id) {
return memberAddressMapper.selectById(id); MemberAddress memberAddress = memberAddressMapper.selectById(id);
MemberAddressVO memberAddressVO = new MemberAddressVO();
BeanUtils.copyProperties(memberAddress, memberAddressVO);
memberAddressVO.setPhone(AesCryptoUtils.decrypt(aesKey, memberAddress.getPhoneEncrypted()));
return memberAddressVO;
} }
public List<MemberAddress> selectList() { public List<MemberAddressVO> selectList() {
Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO); Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO);
MemberAddress memberAddress = new MemberAddress(); MemberAddress memberAddress = new MemberAddress();
memberAddress.setMemberId(member.getId()); memberAddress.setMemberId(member.getId());
return memberAddressMapper.selectByEntity(memberAddress); List<MemberAddress> memberAddressesList = memberAddressMapper.selectByEntity(memberAddress);
return memberAddressesList.stream().map(it -> {
MemberAddressVO vo = new MemberAddressVO();
BeanUtils.copyProperties(it, vo);
vo.setPhone(AesCryptoUtils.decrypt(aesKey, it.getPhoneEncrypted()));
return vo;
}).collect(Collectors.toList());
} }
/** /**
* *
* *
* @param memberAddress * @param memberAddressDTO
* @return * @return
*/ */
public int insert(MemberAddress memberAddress) { public int insert(MemberAddressDTO memberAddressDTO) {
Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO); Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO);
if (memberAddress.getIsDefault() == 1) { if (memberAddressDTO.getIsDefault() == 1) {
//将别的设置为0 //将别的设置为0
memberAddressMapper.updateDefault(0,member.getId()); memberAddressMapper.updateDefault(0,member.getId());
} }
MemberAddress memberAddress = new MemberAddress();
BeanUtils.copyProperties(memberAddressDTO, memberAddress);
memberAddress.setPhoneHidden(PhoneUtils.hidePhone(memberAddressDTO.getPhone()));
memberAddress.setPhoneEncrypted(AesCryptoUtils.encrypt(aesKey, memberAddressDTO.getPhone()));
memberAddress.setMemberId(member.getId()); memberAddress.setMemberId(member.getId());
memberAddress.setCreateTime(LocalDateTime.now()); memberAddress.setCreateTime(LocalDateTime.now());
return memberAddressMapper.insert(memberAddress); return memberAddressMapper.insert(memberAddress);
@ -64,17 +89,22 @@ public class H5MemberAddressService {
/** /**
* *
* *
* @param memberAddress * @param memberAddressDTO
* @return * @return
*/ */
public int update(MemberAddress memberAddress) { public int update(MemberAddressDTO memberAddressDTO) {
Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO); Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO);
if (memberAddress.getIsDefault() == 1) { if (memberAddressDTO.getIsDefault() == 1) {
//将别的设置为0 //将别的设置为0
memberAddressMapper.updateDefault(0,member.getId()); memberAddressMapper.updateDefault(0,member.getId());
} }
MemberAddress memberAddress = new MemberAddress();
BeanUtils.copyProperties(memberAddressDTO, memberAddress);
memberAddress.setPhoneHidden(PhoneUtils.hidePhone(memberAddressDTO.getPhone()));
memberAddress.setPhoneEncrypted(AesCryptoUtils.encrypt(aesKey, memberAddressDTO.getPhone()));
memberAddress.setUpdateTime(LocalDateTime.now()); memberAddress.setUpdateTime(LocalDateTime.now());
memberAddress.setUpdateBy(member.getId());
return memberAddressMapper.updateById(memberAddress); return memberAddressMapper.updateById(memberAddress);
} }
@ -100,12 +130,18 @@ public class H5MemberAddressService {
return memberAddressMapper.deleteById(id); return memberAddressMapper.deleteById(id);
} }
public MemberAddress getDefault() { public MemberAddressVO getDefault() {
Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO); Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO);
QueryWrapper<MemberAddress> queryWrapper = new QueryWrapper<>(); QueryWrapper<MemberAddress> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("member_id",member.getId()); queryWrapper.eq("member_id",member.getId());
queryWrapper.eq("is_default",1); queryWrapper.eq("is_default",1);
List<MemberAddress> list = memberAddressMapper.selectList(queryWrapper); List<MemberAddress> list = memberAddressMapper.selectList(queryWrapper);
return CollectionUtils.isEmpty(list) ? null : list.get(0); if (CollectionUtils.isEmpty(list)){
return null;
}
MemberAddressVO memberAddressVO = new MemberAddressVO();
BeanUtils.copyProperties(list.get(0), memberAddressVO);
memberAddressVO.setPhone(AesCryptoUtils.decrypt(aesKey, list.get(0).getPhoneEncrypted()));
return memberAddressVO;
} }
} }

@ -58,7 +58,6 @@ public class H5MemberService {
this.validateVerifyCode(request.getUuid(), request.getMobile(), request.getCode()); this.validateVerifyCode(request.getUuid(), request.getMobile(), request.getCode());
//创建会员 //创建会员
Member member = new Member(); Member member = new Member();
member.setPhone(request.getMobile());
member.setPhoneEncrypted(AesCryptoUtils.encrypt(aesKey, request.getMobile())); member.setPhoneEncrypted(AesCryptoUtils.encrypt(aesKey, request.getMobile()));
member.setPhoneHidden(PhoneUtils.hidePhone(request.getMobile())); member.setPhoneHidden(PhoneUtils.hidePhone(request.getMobile()));
member.setPassword(SecurityUtils.encryptPassword(request.getPassword())); member.setPassword(SecurityUtils.encryptPassword(request.getPassword()));
@ -179,6 +178,7 @@ public class H5MemberService {
Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO); Member member = (Member) LocalDataUtil.getVar(Constants.MEMBER_INFO);
MemberVO memberVO = new MemberVO(); MemberVO memberVO = new MemberVO();
BeanUtils.copyProperties(member, memberVO); BeanUtils.copyProperties(member, memberVO);
memberVO.setPhone(AesCryptoUtils.decrypt(aesKey, member.getPhoneEncrypted()));
return memberVO; return memberVO;
} }
} }

@ -31,10 +31,6 @@ public class Member extends BaseAudit {
@Excel(name = "密码") @Excel(name = "密码")
private String password; private String password;
@ApiModelProperty("手机号码")
@Excel(name = "手机号码")
private String phone;
@ApiModelProperty("加密手机号") @ApiModelProperty("加密手机号")
private String phoneEncrypted; private String phoneEncrypted;

@ -28,9 +28,13 @@ public class MemberAddress extends BaseAudit {
@Excel(name = "收货人名称") @Excel(name = "收货人名称")
private String name; private String name;
@ApiModelProperty("PHONE") @ApiModelProperty("隐藏前三位后四位的手机号")
@Excel(name = "PHONE") @Excel(name = "隐藏前三位后四位的手机号")
private String phone; private String phoneHidden;
@ApiModelProperty("加密的手机号")
@Excel(name = "加密的手机号")
private String phoneEncrypted;
@ApiModelProperty("是否为默认") @ApiModelProperty("是否为默认")
@Excel(name = "是否为默认") @Excel(name = "是否为默认")

@ -0,0 +1,18 @@
package com.cyl.ums.pojo.dto;
import lombok.Data;
@Data
public class MemberAddressDTO {
private Long id;
private Long memberId;
private String name;
private String phone;
private Integer defaultStatus;
private String postCode;
private String province;
private String city;
private String district;
private String detailAddress;
private Integer isDefault;
}

@ -22,6 +22,8 @@ public class MemberAddressVO extends BaseAudit {
/** PHONE */ /** PHONE */
@Excel(name = "PHONE") @Excel(name = "PHONE")
private String phone; private String phone;
@Excel(name = "隐藏前三位后四位的手机号")
private String phoneHidden;
/** 是否为默认 */ /** 是否为默认 */
@Excel(name = "是否为默认") @Excel(name = "是否为默认")
private Integer defaultStatus; private Integer defaultStatus;

@ -6,6 +6,7 @@ import java.time.LocalDateTime;
import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.annotation.Excel;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseAudit; import com.ruoyi.common.core.domain.BaseAudit;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
/** /**
* *
@ -19,9 +20,10 @@ public class MemberVO extends BaseAudit {
/** 昵称 */ /** 昵称 */
@Excel(name = "昵称") @Excel(name = "昵称")
private String nickname; private String nickname;
/** 手机号码 */ /** 手机号 */
@Excel(name = "手机号码")
private String phone; private String phone;
/** 隐藏前三位后四位的手机号 */
private String phoneHidden;
/** 用户备注 */ /** 用户备注 */
@Excel(name = "用户备注") @Excel(name = "用户备注")
private String mark; private String mark;

@ -8,7 +8,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="id" column="id"/> <result property="id" column="id"/>
<result property="memberId" column="member_id"/> <result property="memberId" column="member_id"/>
<result property="name" column="name"/> <result property="name" column="name"/>
<result property="phone" column="phone"/> <result property="phoneHidden" column="phone_hidden"/>
<result property="phoneEncrypted" column="phone_encrypted"/>
<result property="defaultStatus" column="default_status"/> <result property="defaultStatus" column="default_status"/>
<result property="postCode" column="post_code"/> <result property="postCode" column="post_code"/>
<result property="province" column="province"/> <result property="province" column="province"/>
@ -27,7 +28,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap> </resultMap>
<sql id="selectMemberAddressVo"> <sql id="selectMemberAddressVo">
select id, member_id, name, phone, default_status, post_code, province, city, district, detail_address, is_default, create_by, create_time, update_by, update_time from ums_member_address select id, member_id, name, phone_hidden,phone_encrypted, default_status, post_code, province, city, district, detail_address, is_default, create_by, create_time, update_by, update_time from ums_member_address
</sql> </sql>
<select id="selectByEntity" parameterType="MemberAddress" resultMap="MemberAddressResult"> <select id="selectByEntity" parameterType="MemberAddress" resultMap="MemberAddressResult">
@ -35,7 +36,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<where> <where>
<if test="memberId != null "> and member_id = #{memberId}</if> <if test="memberId != null "> and member_id = #{memberId}</if>
<if test="name != null and name != ''"> and name like concat('%', #{name}, '%')</if> <if test="name != null and name != ''"> and name like concat('%', #{name}, '%')</if>
<if test="phone != null and phone != ''"> and phone = #{phone}</if>
<if test="defaultStatus != null "> and default_status = #{defaultStatus}</if> <if test="defaultStatus != null "> and default_status = #{defaultStatus}</if>
<if test="postCode != null and postCode != ''"> and post_code = #{postCode}</if> <if test="postCode != null and postCode != ''"> and post_code = #{postCode}</if>
<if test="province != null and province != ''"> and province = #{province}</if> <if test="province != null and province != ''"> and province = #{province}</if>

Loading…
Cancel
Save