MemberOperationController.java
5.67 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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
package com.topdraw.business.process.rest;
import cn.hutool.core.util.ObjectUtil;
import com.topdraw.annotation.AnonymousAccess;
import com.topdraw.aop.log.Log;
import com.topdraw.business.module.common.validated.CreateGroup;
import com.topdraw.business.module.common.validated.UpdateGroup;
import com.topdraw.business.module.member.domain.Member;
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.iptv.domain.UserTv;
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 lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.util.Objects;
@Api("会员处理")
@RestController
@RequestMapping(value = "/ucEngine/api/memberOperation")
@CrossOrigin
@Slf4j
public class MemberOperationController {
@Autowired
private MemberOperationService memberOperationService;
@Autowired
private MemberVipHistoryService memberVipHistoryService;
@Autowired
private UserWeixinService userWeixinService;
@Autowired
private MemberService memberService;
@Log("查询会员")
@GetMapping(value = "/findById/{id}")
@ApiOperation("查询会员")
@AnonymousAccess
public ResultInfo findById(@PathVariable(value = "id") Long id) {
log.info("memberOperation ==>> findById ==>> param ==>> [{}]",id);
MemberDTO memberDTO = this.memberOperationService.findById(id);
log.info("memberOperation ==>> findById ==>> result ==>> [{}]",memberDTO);
return ResultInfo.success(memberDTO);
}
@Log("手动修改vip")
@RequestMapping(value = "/doUpdateVipByCode")
@ApiOperation("手动修改vip")
@AnonymousAccess
public ResultInfo doUpdateVipByCode(@Validated(value = {UpdateGroup.class}) @RequestBody Member resources) {
log.info("member ==>> doUpdateVipByCode ==>> param ==>> [{}]",resources);
MemberDTO memberDTO = this.memberService.findByCode(resources.getCode());
resources.setId(memberDTO.getId());
this.memberOperationService.update(resources);
log.info("member ==>> doUpdateVipByCode ==>> result ==>> [{}]",resources);
return ResultInfo.success();
}
@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);
}
}