MemberOperationController.java
4.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
package com.topdraw.business.process.rest;
import cn.hutool.core.util.ObjectUtil;
import com.topdraw.annotation.AnonymousAccess;
import com.topdraw.business.module.member.profile.service.dto.MemberProfileDTO;
import com.topdraw.business.module.member.service.MemberService;
import com.topdraw.business.module.member.service.dto.MemberDTO;
import com.topdraw.business.module.member.viphistory.domain.MemberVipHistory;
import com.topdraw.business.module.member.viphistory.service.MemberVipHistoryService;
import com.topdraw.business.module.user.weixin.service.UserWeixinService;
import com.topdraw.business.module.user.weixin.service.dto.UserWeixinDTO;
import com.topdraw.business.process.domian.weixin.BuyVipBean;
import com.topdraw.business.process.service.MemberOperationService;
import com.topdraw.common.IResultInfo;
import com.topdraw.common.ResultInfo;
import com.topdraw.exception.BadRequestException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.util.Objects;
@Api("会员处理")
@RestController
@RequestMapping(value = "/ucEngine/api/memberOperation")
public class MemberOperationController {
@Autowired
private MemberOperationService memberOperationService;
@Autowired
private MemberVipHistoryService memberVipHistoryService;
@Autowired
private UserWeixinService userWeixinService;
@Autowired
private MemberService memberService;
@GetMapping("/getMemberProfileAndCheckVip/{appId}/{memberId}")
@ApiOperation("获取会员基本信息并且检查vip状态")
@AnonymousAccess
public IResultInfo getMemberProfileAndCheckVip(@PathVariable(value = "appId") String appId, @PathVariable(value = "memberId") Long memberId) {
MemberProfileDTO memberProfileDTO = this.memberOperationService.getMemberProfileAndCheckVip(memberId, appId);
return ResultInfo.success(memberProfileDTO);
}
@PutMapping("/buyVip")
@ApiOperation("购买vip")
@AnonymousAccess
public ResultInfo buyVip(@RequestBody BuyVipBean buyVipBean) {
// 小程序账户id
Long id = buyVipBean.getId();
if (Objects.isNull(id))
throw new BadRequestException("参数异常: id is null !");
// vip等级
Integer vip = buyVipBean.getVip();
if (Objects.isNull(vip) || vip <= 0)
throw new BadRequestException("vip 等级有误");
MemberDTO memberDTO = memberOperationService.buyVip(buyVipBean);
LocalDateTime vipExpireTime = buyVipBean.getVipExpireTime();
this.doInsertVipHistory(id,vip,vipExpireTime);
return ResultInfo.success(memberDTO);
}
private void doInsertVipHistory(Long id,Integer vip,LocalDateTime vipExpireTime) {
UserWeixinDTO userWeixinDTO = this.userWeixinService.findById(id);
Long memberId = userWeixinDTO.getMemberId();
MemberDTO member = this.memberService.findById(memberId);
LocalDateTime now = LocalDateTime.now();
MemberVipHistory memberVipHistory = new MemberVipHistory();
if (ObjectUtil.isNull(vipExpireTime)) {
LocalDateTime localDateTime = now.plusYears(1L);
member.setVipExpireTime(localDateTime);
} else {
//购买过 判断当前时间有没有过vip过期时间,没有过,失效时间加一年; 过了,当前时间加一年
//区分是当前vip续费 还是买新的vip
if (ObjectUtil.equal(vip, member.getVip())) {
if (now.isBefore(vipExpireTime)) {
LocalDateTime localDateTime = vipExpireTime.plusYears(1L);
member.setVipExpireTime(localDateTime);
} else {
LocalDateTime localDateTime = now.plusYears(1L);
member.setVipExpireTime(localDateTime);
}
} else {
LocalDateTime localDateTime = now.plusYears(1L);
member.setVipExpireTime(localDateTime);
}
}
memberVipHistory.setVipExpireTime(member.getVipExpireTime());
memberVipHistoryService.create(memberVipHistory);
}
}