1.修复微信应用登录时,昵称重复base64加密的问题
Showing
11 changed files
with
303 additions
and
2 deletions
member-service-impl/src/main/java/com/topdraw/business/module/contact/domain/MemberContacts.java
0 → 100644
| 1 | package com.topdraw.business.module.contact.domain; | ||
| 2 | |||
| 3 | import com.topdraw.business.module.common.validated.CreateGroup; | ||
| 4 | import lombok.Data; | ||
| 5 | import lombok.experimental.Accessors; | ||
| 6 | import cn.hutool.core.bean.BeanUtil; | ||
| 7 | import cn.hutool.core.bean.copier.CopyOptions; | ||
| 8 | import javax.persistence.*; | ||
| 9 | import javax.validation.constraints.NotEmpty; | ||
| 10 | import javax.validation.constraints.NotNull; | ||
| 11 | |||
| 12 | import org.springframework.data.annotation.CreatedDate; | ||
| 13 | import org.springframework.data.annotation.LastModifiedDate; | ||
| 14 | import org.springframework.data.jpa.domain.support.AuditingEntityListener; | ||
| 15 | import java.sql.Timestamp; | ||
| 16 | |||
| 17 | import java.io.Serializable; | ||
| 18 | |||
| 19 | /** | ||
| 20 | * @author XiangHan | ||
| 21 | * @date 2022-09-01 | ||
| 22 | */ | ||
| 23 | @Entity | ||
| 24 | @Data | ||
| 25 | @EntityListeners(AuditingEntityListener.class) | ||
| 26 | @Accessors(chain = true) | ||
| 27 | @Table(name="uc_member_contacts") | ||
| 28 | public class MemberContacts implements Serializable { | ||
| 29 | |||
| 30 | // 主键 | ||
| 31 | @Id | ||
| 32 | @GeneratedValue(strategy = GenerationType.IDENTITY) | ||
| 33 | @Column(name = "id") | ||
| 34 | private Long id; | ||
| 35 | |||
| 36 | // 会员id | ||
| 37 | @Column(name = "member_id", nullable = false) | ||
| 38 | @NotNull(groups = CreateGroup.class, message = "会员id不的为空") | ||
| 39 | private Long memberId; | ||
| 40 | |||
| 41 | // 用户id | ||
| 42 | @Column(name = "user_id") | ||
| 43 | private Long userId; | ||
| 44 | |||
| 45 | // 实体id | ||
| 46 | @Column(name = "entity_id") | ||
| 47 | private Long entityId; | ||
| 48 | |||
| 49 | // 实体类型 1:订单;2:商品;3:活动;99:其他 | ||
| 50 | @Column(name = "entity_type") | ||
| 51 | private Long entityType; | ||
| 52 | |||
| 53 | // 实体code | ||
| 54 | @Column(name = "entity_code") | ||
| 55 | private String entityCode; | ||
| 56 | |||
| 57 | // 设备类型 1:大屏;2:微信;3:app;99:其他 | ||
| 58 | @Column(name = "device_type") | ||
| 59 | @NotNull(groups = CreateGroup.class, message = "设备类型不的为空") | ||
| 60 | private Long deviceType; | ||
| 61 | |||
| 62 | // 姓名 | ||
| 63 | @Column(name = "realname") | ||
| 64 | @NotNull(groups = CreateGroup.class, message = "姓名不的为空") | ||
| 65 | @NotEmpty(groups = CreateGroup.class, message = "姓名不的为空") | ||
| 66 | private String realname; | ||
| 67 | |||
| 68 | // 生日 | ||
| 69 | @Column(name = "birthday") | ||
| 70 | private String birthday; | ||
| 71 | |||
| 72 | // 手机号 | ||
| 73 | @Column(name = "phone") | ||
| 74 | @NotNull(groups = CreateGroup.class, message = "手机号不的为空") | ||
| 75 | private String phone; | ||
| 76 | |||
| 77 | // 创建时间 | ||
| 78 | @CreatedDate | ||
| 79 | @Column(name = "create_time") | ||
| 80 | private Timestamp createTime; | ||
| 81 | |||
| 82 | // 更新时间 | ||
| 83 | @LastModifiedDate | ||
| 84 | @Column(name = "update_time") | ||
| 85 | private Timestamp updateTime; | ||
| 86 | |||
| 87 | public void copy(MemberContacts source){ | ||
| 88 | BeanUtil.copyProperties(source,this, CopyOptions.create().setIgnoreNullValue(true)); | ||
| 89 | } | ||
| 90 | } |
| 1 | package com.topdraw.business.module.contact.repository; | ||
| 2 | |||
| 3 | import com.topdraw.business.module.contact.domain.MemberContacts; | ||
| 4 | import org.springframework.data.jpa.repository.JpaRepository; | ||
| 5 | import org.springframework.data.jpa.repository.JpaSpecificationExecutor; | ||
| 6 | |||
| 7 | import java.util.Optional; | ||
| 8 | |||
| 9 | /** | ||
| 10 | * @author XiangHan | ||
| 11 | * @date 2022-09-01 | ||
| 12 | */ | ||
| 13 | public interface MemberContactsRepository extends JpaRepository<MemberContacts, Long>, JpaSpecificationExecutor<MemberContacts> { | ||
| 14 | |||
| 15 | } |
| 1 | package com.topdraw.business.module.contact.rest; | ||
| 2 | |||
| 3 | import com.topdraw.common.ResultInfo; | ||
| 4 | import com.topdraw.business.module.contact.domain.MemberContacts; | ||
| 5 | import com.topdraw.business.module.contact.service.MemberContactsService; | ||
| 6 | import org.springframework.beans.factory.annotation.Autowired; | ||
| 7 | import org.springframework.validation.annotation.Validated; | ||
| 8 | import org.springframework.web.bind.annotation.*; | ||
| 9 | import io.swagger.annotations.*; | ||
| 10 | |||
| 11 | /** | ||
| 12 | * @author XiangHan | ||
| 13 | * @date 2022-09-01 | ||
| 14 | */ | ||
| 15 | @Api(tags = "MemberContacts管理") | ||
| 16 | @RestController | ||
| 17 | @RequestMapping("/api/MemberContacts") | ||
| 18 | public class MemberContactsController { | ||
| 19 | |||
| 20 | @Autowired | ||
| 21 | private MemberContactsService MemberContactsService; | ||
| 22 | |||
| 23 | @PostMapping | ||
| 24 | @ApiOperation("新增MemberContacts") | ||
| 25 | public ResultInfo create(@Validated @RequestBody MemberContacts resources) { | ||
| 26 | MemberContactsService.create(resources); | ||
| 27 | return ResultInfo.success(); | ||
| 28 | } | ||
| 29 | |||
| 30 | } |
| 1 | package com.topdraw.business.module.contact.service; | ||
| 2 | |||
| 3 | import com.topdraw.business.module.contact.domain.MemberContacts; | ||
| 4 | import com.topdraw.business.module.contact.service.dto.MemberContactsDTO; | ||
| 5 | |||
| 6 | /** | ||
| 7 | * @author XiangHan | ||
| 8 | * @date 2022-09-01 | ||
| 9 | */ | ||
| 10 | public interface MemberContactsService { | ||
| 11 | |||
| 12 | /** | ||
| 13 | * 根据ID查询 | ||
| 14 | * @param id ID | ||
| 15 | * @return MemberContactsDTO | ||
| 16 | */ | ||
| 17 | MemberContactsDTO findById(Long id); | ||
| 18 | |||
| 19 | MemberContacts create(MemberContacts resources); | ||
| 20 | |||
| 21 | } |
| 1 | package com.topdraw.business.module.contact.service.dto; | ||
| 2 | |||
| 3 | import lombok.Data; | ||
| 4 | import java.sql.Timestamp; | ||
| 5 | import java.io.Serializable; | ||
| 6 | |||
| 7 | |||
| 8 | /** | ||
| 9 | * @author XiangHan | ||
| 10 | * @date 2022-09-01 | ||
| 11 | */ | ||
| 12 | @Data | ||
| 13 | public class MemberContactsDTO implements Serializable { | ||
| 14 | |||
| 15 | // 主键 | ||
| 16 | private Long id; | ||
| 17 | |||
| 18 | // 会员id | ||
| 19 | private Long memberId; | ||
| 20 | |||
| 21 | // 用户id | ||
| 22 | private Long userId; | ||
| 23 | |||
| 24 | // 实体id | ||
| 25 | private Long entityId; | ||
| 26 | |||
| 27 | // 实体类型 1:订单;2:商品;3:活动;99:其他 | ||
| 28 | private Long entityType; | ||
| 29 | |||
| 30 | // 实体code | ||
| 31 | private String entityCode; | ||
| 32 | |||
| 33 | // 设备类型 1:大屏;2:微信;3:app;99:其他 | ||
| 34 | private Long deviceType; | ||
| 35 | |||
| 36 | // 姓名 | ||
| 37 | private String realname; | ||
| 38 | |||
| 39 | // 生日 | ||
| 40 | private String birthday; | ||
| 41 | |||
| 42 | // 手机号 | ||
| 43 | private String phone; | ||
| 44 | |||
| 45 | // 创建时间 | ||
| 46 | private Timestamp createTime; | ||
| 47 | |||
| 48 | // 更新时间 | ||
| 49 | private Timestamp updateTime; | ||
| 50 | } |
| 1 | package com.topdraw.business.module.contact.service.impl; | ||
| 2 | |||
| 3 | import com.topdraw.base.modules.utils.ValidationUtil; | ||
| 4 | import com.topdraw.business.module.contact.domain.MemberContacts; | ||
| 5 | import com.topdraw.business.module.contact.repository.MemberContactsRepository; | ||
| 6 | import com.topdraw.business.module.contact.service.MemberContactsService; | ||
| 7 | import com.topdraw.business.module.contact.service.dto.MemberContactsDTO; | ||
| 8 | import com.topdraw.business.module.contact.service.mapper.MemberContactsMapper; | ||
| 9 | import org.springframework.beans.factory.annotation.Autowired; | ||
| 10 | import org.springframework.stereotype.Service; | ||
| 11 | import org.springframework.transaction.annotation.Propagation; | ||
| 12 | import org.springframework.transaction.annotation.Transactional; | ||
| 13 | |||
| 14 | /** | ||
| 15 | * @author XiangHan | ||
| 16 | * @date 2022-09-01 | ||
| 17 | */ | ||
| 18 | @Service | ||
| 19 | @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) | ||
| 20 | public class MemberContactsServiceImpl implements MemberContactsService { | ||
| 21 | |||
| 22 | @Autowired | ||
| 23 | private MemberContactsRepository MemberContactsRepository; | ||
| 24 | |||
| 25 | @Autowired | ||
| 26 | private MemberContactsMapper MemberContactsMapper; | ||
| 27 | |||
| 28 | @Override | ||
| 29 | public MemberContactsDTO findById(Long id) { | ||
| 30 | MemberContacts MemberContacts = MemberContactsRepository.findById(id).orElseGet(MemberContacts::new); | ||
| 31 | ValidationUtil.isNull(MemberContacts.getId(),"MemberContacts","id",id); | ||
| 32 | return MemberContactsMapper.toDto(MemberContacts); | ||
| 33 | } | ||
| 34 | |||
| 35 | @Override | ||
| 36 | @Transactional(rollbackFor = Exception.class) | ||
| 37 | public MemberContacts create(MemberContacts resources) { | ||
| 38 | return MemberContactsRepository.save(resources); | ||
| 39 | } | ||
| 40 | |||
| 41 | } |
| 1 | package com.topdraw.business.module.contact.service.mapper; | ||
| 2 | |||
| 3 | import com.topdraw.base.modules.base.BaseMapper; | ||
| 4 | import com.topdraw.business.module.contact.domain.MemberContacts; | ||
| 5 | import com.topdraw.business.module.contact.service.dto.MemberContactsDTO; | ||
| 6 | import org.mapstruct.Mapper; | ||
| 7 | import org.mapstruct.ReportingPolicy; | ||
| 8 | |||
| 9 | /** | ||
| 10 | * @author XiangHan | ||
| 11 | * @date 2022-09-01 | ||
| 12 | */ | ||
| 13 | @Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE) | ||
| 14 | public interface MemberContactsMapper extends BaseMapper<MemberContactsDTO, MemberContacts> { | ||
| 15 | |||
| 16 | } |
| ... | @@ -3,13 +3,17 @@ package com.topdraw.business.process.rest; | ... | @@ -3,13 +3,17 @@ package com.topdraw.business.process.rest; |
| 3 | import com.topdraw.base.modules.annotation.AnonymousAccess; | 3 | import com.topdraw.base.modules.annotation.AnonymousAccess; |
| 4 | import com.topdraw.base.modules.common.IResultInfo; | 4 | import com.topdraw.base.modules.common.IResultInfo; |
| 5 | import com.topdraw.base.modules.common.ResultInfo; | 5 | import com.topdraw.base.modules.common.ResultInfo; |
| 6 | import com.topdraw.business.module.common.validated.CreateGroup; | ||
| 6 | import com.topdraw.business.module.common.validated.UpdateGroup; | 7 | import com.topdraw.business.module.common.validated.UpdateGroup; |
| 8 | import com.topdraw.business.module.contact.domain.MemberContacts; | ||
| 9 | import com.topdraw.business.module.contact.service.MemberContactsService; | ||
| 7 | import com.topdraw.business.module.member.address.domain.MemberAddress; | 10 | import com.topdraw.business.module.member.address.domain.MemberAddress; |
| 8 | import com.topdraw.business.module.member.address.service.dto.MemberAddressDTO; | 11 | import com.topdraw.business.module.member.address.service.dto.MemberAddressDTO; |
| 9 | import com.topdraw.business.module.member.profile.service.dto.MemberProfileDTO; | 12 | import com.topdraw.business.module.member.profile.service.dto.MemberProfileDTO; |
| 10 | import com.topdraw.business.module.member.service.dto.MemberDTO; | 13 | import com.topdraw.business.module.member.service.dto.MemberDTO; |
| 11 | import com.topdraw.business.process.domian.member.MemberOperationBean; | 14 | import com.topdraw.business.process.domian.member.MemberOperationBean; |
| 12 | import com.topdraw.business.process.service.member.MemberOperationService; | 15 | import com.topdraw.business.process.service.member.MemberOperationService; |
| 16 | import com.topdraw.util.RegexUtil; | ||
| 13 | import io.swagger.annotations.Api; | 17 | import io.swagger.annotations.Api; |
| 14 | import io.swagger.annotations.ApiOperation; | 18 | import io.swagger.annotations.ApiOperation; |
| 15 | import lombok.extern.slf4j.Slf4j; | 19 | import lombok.extern.slf4j.Slf4j; |
| ... | @@ -87,6 +91,19 @@ public class MemberOperationController { | ... | @@ -87,6 +91,19 @@ public class MemberOperationController { |
| 87 | MemberProfileDTO memberProfileDTO = this.memberOperationService.getMemberProfileAndCheckVip(memberId, appId); | 91 | MemberProfileDTO memberProfileDTO = this.memberOperationService.getMemberProfileAndCheckVip(memberId, appId); |
| 88 | return ResultInfo.success(memberProfileDTO); | 92 | return ResultInfo.success(memberProfileDTO); |
| 89 | } | 93 | } |
| 94 | |||
| 95 | @PostMapping("/createMemberContacts") | ||
| 96 | @ApiOperation("新增会员联络信息") | ||
| 97 | @AnonymousAccess | ||
| 98 | public ResultInfo createMemberContacts(@Validated(value = {CreateGroup.class}) @RequestBody MemberContacts resources) { | ||
| 99 | log.info("新增会员联络信息,参数 createMemberContacts# ==>> {}", resources); | ||
| 100 | |||
| 101 | if (!RegexUtil.mobileRegex(resources.getPhone())) { | ||
| 102 | return ResultInfo.failure("手机号格式不正确,请确认"); | ||
| 103 | } | ||
| 104 | |||
| 105 | return this.memberOperationService.createMemberContacts(resources); | ||
| 106 | } | ||
| 90 | } | 107 | } |
| 91 | 108 | ||
| 92 | 109 | ... | ... |
| ... | @@ -2,6 +2,9 @@ package com.topdraw.business.process.service.impl.member; | ... | @@ -2,6 +2,9 @@ package com.topdraw.business.process.service.impl.member; |
| 2 | 2 | ||
| 3 | import cn.hutool.core.util.ObjectUtil; | 3 | import cn.hutool.core.util.ObjectUtil; |
| 4 | import com.topdraw.aspect.AsyncMqSend; | 4 | import com.topdraw.aspect.AsyncMqSend; |
| 5 | import com.topdraw.base.modules.common.ResultInfo; | ||
| 6 | import com.topdraw.business.module.contact.domain.MemberContacts; | ||
| 7 | import com.topdraw.business.module.contact.service.MemberContactsService; | ||
| 5 | import com.topdraw.business.module.member.address.service.MemberAddressService; | 8 | import com.topdraw.business.module.member.address.service.MemberAddressService; |
| 6 | import com.topdraw.business.module.member.address.service.dto.MemberAddressDTO; | 9 | import com.topdraw.business.module.member.address.service.dto.MemberAddressDTO; |
| 7 | import com.topdraw.business.module.member.domain.Member; | 10 | import com.topdraw.business.module.member.domain.Member; |
| ... | @@ -25,6 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired; | ... | @@ -25,6 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired; |
| 25 | import org.springframework.cache.annotation.CacheConfig; | 28 | import org.springframework.cache.annotation.CacheConfig; |
| 26 | import org.springframework.stereotype.Service; | 29 | import org.springframework.stereotype.Service; |
| 27 | 30 | ||
| 31 | import javax.validation.constraints.NotNull; | ||
| 28 | import java.sql.Timestamp; | 32 | import java.sql.Timestamp; |
| 29 | import java.util.List; | 33 | import java.util.List; |
| 30 | import java.util.Objects; | 34 | import java.util.Objects; |
| ... | @@ -44,10 +48,13 @@ public class MemberOperationServiceImpl implements MemberOperationService { | ... | @@ -44,10 +48,13 @@ public class MemberOperationServiceImpl implements MemberOperationService { |
| 44 | @Autowired | 48 | @Autowired |
| 45 | private MemberAddressService memberAddressService; | 49 | private MemberAddressService memberAddressService; |
| 46 | @Autowired | 50 | @Autowired |
| 51 | private MemberContactsService memberContactsService; | ||
| 52 | @Autowired | ||
| 47 | private MemberVipHistoryService memberVipHistoryService; | 53 | private MemberVipHistoryService memberVipHistoryService; |
| 48 | 54 | ||
| 49 | 55 | ||
| 50 | 56 | ||
| 57 | |||
| 51 | @Override | 58 | @Override |
| 52 | public MemberDTO findByCode(String code) { | 59 | public MemberDTO findByCode(String code) { |
| 53 | return this.memberService.findByCode(code); | 60 | return this.memberService.findByCode(code); |
| ... | @@ -157,6 +164,11 @@ public class MemberOperationServiceImpl implements MemberOperationService { | ... | @@ -157,6 +164,11 @@ public class MemberOperationServiceImpl implements MemberOperationService { |
| 157 | return null; | 164 | return null; |
| 158 | } | 165 | } |
| 159 | 166 | ||
| 167 | @Override | ||
| 168 | public ResultInfo createMemberContacts(MemberContacts resources) { | ||
| 169 | return ResultInfo.success(this.memberContactsService.create(resources)); | ||
| 170 | } | ||
| 171 | |||
| 160 | 172 | ||
| 161 | @Override | 173 | @Override |
| 162 | public MemberProfileDTO getMemberProfileAndCheckVip(Long memberId, String appId) { | 174 | public MemberProfileDTO getMemberProfileAndCheckVip(Long memberId, String appId) { | ... | ... |
| 1 | package com.topdraw.business.process.service.member; | 1 | package com.topdraw.business.process.service.member; |
| 2 | 2 | ||
| 3 | import com.topdraw.base.modules.common.ResultInfo; | ||
| 4 | import com.topdraw.business.module.contact.domain.MemberContacts; | ||
| 3 | import com.topdraw.business.module.member.address.service.dto.MemberAddressDTO; | 5 | import com.topdraw.business.module.member.address.service.dto.MemberAddressDTO; |
| 4 | import com.topdraw.business.module.member.domain.Member; | 6 | import com.topdraw.business.module.member.domain.Member; |
| 5 | import com.topdraw.business.module.member.profile.service.dto.MemberProfileDTO; | 7 | import com.topdraw.business.module.member.profile.service.dto.MemberProfileDTO; |
| ... | @@ -87,4 +89,11 @@ public interface MemberOperationService { | ... | @@ -87,4 +89,11 @@ public interface MemberOperationService { |
| 87 | * @return | 89 | * @return |
| 88 | */ | 90 | */ |
| 89 | MemberAddressDTO updateDefaultMemberAddressById(Long memberId); | 91 | MemberAddressDTO updateDefaultMemberAddressById(Long memberId); |
| 92 | |||
| 93 | /** | ||
| 94 | * | ||
| 95 | * @param resources | ||
| 96 | * @return | ||
| 97 | */ | ||
| 98 | ResultInfo createMemberContacts(MemberContacts resources); | ||
| 90 | } | 99 | } | ... | ... |
| ... | @@ -39,14 +39,14 @@ public class GeneratorCode extends BaseTest { | ... | @@ -39,14 +39,14 @@ public class GeneratorCode extends BaseTest { |
| 39 | @Rollback(value = false) | 39 | @Rollback(value = false) |
| 40 | @Transactional(rollbackFor = Exception.class) | 40 | @Transactional(rollbackFor = Exception.class) |
| 41 | public void generator() { | 41 | public void generator() { |
| 42 | var dbName = "uc_growth_report"; | 42 | var dbName = "uc_member_contacts"; |
| 43 | // 表名称,支持多表 | 43 | // 表名称,支持多表 |
| 44 | var tableNames = Arrays.asList(dbName); | 44 | var tableNames = Arrays.asList(dbName); |
| 45 | String[] s = dbName.split("_"); | 45 | String[] s = dbName.split("_"); |
| 46 | 46 | ||
| 47 | var pre = s[0]; | 47 | var pre = s[0]; |
| 48 | var target1 = s[s.length-1]; | 48 | var target1 = s[s.length-1]; |
| 49 | var preRoute = "com.topdraw.business.module.user.iptv.growreport"; | 49 | var preRoute = "com.topdraw.business.module.contact"; |
| 50 | StringBuilder builder = new StringBuilder(preRoute); | 50 | StringBuilder builder = new StringBuilder(preRoute); |
| 51 | // builder.append("wechatshare"); | 51 | // builder.append("wechatshare"); |
| 52 | // builder.append(target); | 52 | // builder.append(target); | ... | ... |
-
Please register or sign in to post a comment