Commit fbcd180f authored by hezhen's avatar hezhen

添加会员模块

parent 8964e1c4
package com.github.wxiaoqi.security.admin.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 用户会员
*
* @author zjw
* @email nishijjo@qq.com
* @date 2019-06-18 19:38:56
*/
@Data
public class UserMemberDTO {
/**
* 用户id
*/
@ApiModelProperty(value = "用户id")
private Integer userId;
/**
* 会员等级
*/
@ApiModelProperty(value = "会员等级")
private Integer memberLevel;
/**
* 0:未支付 1:绑定 2:解绑
*/
@ApiModelProperty(value = "0:未支付 1:绑定 2:解绑")
private Integer isBind;
/**
* 赠送总天数
*/
@ApiModelProperty(value = "赠送总天数")
private Integer totalNumber;
/**
* 剩余天数
*/
@ApiModelProperty(value = "剩余天数")
private Integer rentFreeDays;
//折扣
@ApiModelProperty(value = "折扣")
private Integer discount;
}
...@@ -69,13 +69,35 @@ public class BaseUserMember implements Serializable { ...@@ -69,13 +69,35 @@ public class BaseUserMember implements Serializable {
@ApiModelProperty(value = "赠送总天数") @ApiModelProperty(value = "赠送总天数")
private Integer totalNumber; private Integer totalNumber;
/** /**
* 剩余天数 * 剩余天数
*/ */
@Column(name = "rent_free_days") @Column(name = "rent_free_days")
@ApiModelProperty(value = "剩余天数") @ApiModelProperty(value = "剩余天数")
private Integer rentFreeDays; private Integer rentFreeDays;
/**
* 会员消费次数
*/
@Column(name = "pay_count")
@ApiModelProperty(value = "会员消费次数")
private Integer payCount;
/**
* 购买会员次数
*/
@Column(name = "buy_count")
@ApiModelProperty(value = "购买会员次数")
private Integer buyCount;
/**
* 下单锁住天数
*/
@Column(name = "lock_days")
@ApiModelProperty(value = "下单锁住天数")
private Integer lockDays;
//折扣 //折扣
@Column(name = "discount") @Column(name = "discount")
......
package com.github.wxiaoqi.security.admin.feign; package com.github.wxiaoqi.security.admin.feign;
import com.github.wxiaoqi.security.admin.dto.UserMemberDTO;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel; import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO; import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.admin.feign.dto.UserDTO; import com.github.wxiaoqi.security.admin.feign.dto.UserDTO;
import com.github.wxiaoqi.security.admin.vo.AppUserVo; import com.github.wxiaoqi.security.admin.vo.AppUserVo;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List; import java.util.List;
...@@ -64,4 +62,30 @@ public interface UserFeign { ...@@ -64,4 +62,30 @@ public interface UserFeign {
*/ */
@RequestMapping(value = "/public/getByUserIds", method = RequestMethod.GET) @RequestMapping(value = "/public/getByUserIds", method = RequestMethod.GET)
public ObjectRestResponse<List<AppUserVo>> getByUserIds(@RequestParam("ids")List<Integer> ids); public ObjectRestResponse<List<AppUserVo>> getByUserIds(@RequestParam("ids")List<Integer> ids);
/**
* 购买会员
* @param userMemberDTO
* @return
* @throws Exception
*/
@RequestMapping(value = "/user/buyMember", method = RequestMethod.POST)
public ObjectRestResponse buyMember(@RequestBody UserMemberDTO userMemberDTO) throws Exception;
/**
* 订单更改会员
* @param userId
* @param days
* @param type 1-用户锁定下单;2-购买下单;3-取消订单
* @return
* @throws Exception
*/
@RequestMapping(value = "/user/buyMember", method = RequestMethod.POST)
public int buyMember(
@RequestParam(value = "userId",defaultValue = "0")Integer userId,
@RequestParam(value = "days",defaultValue = "0")Integer days,
@RequestParam(value = "type",defaultValue = "1")Integer type
) throws Exception;
} }
...@@ -27,6 +27,9 @@ public class AppUserDTO { ...@@ -27,6 +27,9 @@ public class AppUserDTO {
private Integer certificationStatus; private Integer certificationStatus;
private Integer rentFreeDays; private Integer rentFreeDays;
private Integer totalNumber; private Integer totalNumber;
private Integer payCount;
private Integer buyCount;
private Integer lockDays;
private Integer discount; private Integer discount;
private Integer memberLevel; private Integer memberLevel;
private Integer memberNo; private Integer memberNo;
......
...@@ -57,12 +57,31 @@ public class UserMemberVo { ...@@ -57,12 +57,31 @@ public class UserMemberVo {
@ApiModelProperty(value = "赠送总天数") @ApiModelProperty(value = "赠送总天数")
private Integer totalNumber; private Integer totalNumber;
/** /**
* 剩余天数 * 剩余天数
*/ */
@ApiModelProperty(value = "剩余天数") @ApiModelProperty(value = "剩余天数")
private Integer rentFreeDays; private Integer rentFreeDays;
/**
* 会员消费次数
*/
@ApiModelProperty(value = "会员消费次数")
private Integer payCount;
/**
* 购买会员次数
*/
@ApiModelProperty(value = "购买会员次数")
private Integer buyCount;
/**
* 下单锁住天数
*/
@ApiModelProperty(value = "下单锁住天数")
private Integer lockDays;
//折扣 //折扣
@ApiModelProperty(value = "折扣") @ApiModelProperty(value = "折扣")
private Integer discount; private Integer discount;
......
...@@ -2,7 +2,12 @@ package com.github.wxiaoqi.security.admin.biz; ...@@ -2,7 +2,12 @@ package com.github.wxiaoqi.security.admin.biz;
import com.ace.cache.annotation.Cache; import com.ace.cache.annotation.Cache;
import com.ace.cache.annotation.CacheClear; import com.ace.cache.annotation.CacheClear;
import com.github.wxiaoqi.security.admin.dto.UserMemberDTO;
import com.github.wxiaoqi.security.admin.vo.AppUserVo;
import com.github.wxiaoqi.security.admin.vo.UserMemberVo; import com.github.wxiaoqi.security.admin.vo.UserMemberVo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.github.wxiaoqi.security.admin.entity.BaseUserMember; import com.github.wxiaoqi.security.admin.entity.BaseUserMember;
import com.github.wxiaoqi.security.admin.mapper.BaseUserMemberMapper; import com.github.wxiaoqi.security.admin.mapper.BaseUserMemberMapper;
...@@ -17,9 +22,13 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -17,9 +22,13 @@ import org.springframework.transaction.annotation.Transactional;
* @date 2019-06-18 19:38:56 * @date 2019-06-18 19:38:56
*/ */
@Service @Service
@Slf4j
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper,BaseUserMember> { public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper,BaseUserMember> {
@Autowired
AppUserDetailBiz detailBiz;
//获取用户会员信息 //获取用户会员信息
@Cache(key = "user:member{1}") @Cache(key = "user:member{1}")
public UserMemberVo getMemberInfoByUserId(Integer userId){ public UserMemberVo getMemberInfoByUserId(Integer userId){
...@@ -32,11 +41,87 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper,BaseUserMemb ...@@ -32,11 +41,87 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper,BaseUserMemb
public void updateSelectiveById(BaseUserMember userMember){ super.updateSelectiveById(userMember);} public void updateSelectiveById(BaseUserMember userMember){ super.updateSelectiveById(userMember);}
//用户会员信息更新 //用户购买会员信息更新
public void updUserMemberByUserId(){ public void updUserMemberByUserId(UserMemberDTO userMemberDTO)throws Exception{
if(userMemberDTO==null){
log.error("updUserMemberByUserId----参数为空");
return;
}
Integer userId=userMemberDTO.getUserId();
UserMemberVo userMemberVo=getMemberInfoByUserId(userId);
BaseUserMember baseUserMember=new BaseUserMember();
BeanUtils.copyProperties(baseUserMember,userMemberDTO);
Integer freeDays= baseUserMember.getRentFreeDays();
Integer totalNumber=baseUserMember.getTotalNumber()==null?0:baseUserMember.getTotalNumber();
if(freeDays==null||freeDays==0){
freeDays=totalNumber;
}
if(userMemberVo==null){
baseUserMember.setRentFreeDays(freeDays);
baseUserMember.setBuyCount(1);
insertSelective(baseUserMember);
}else {
baseUserMember.setId(userMemberVo.getId());
totalNumber+=userMemberVo.getTotalNumber()==null?0:userMemberVo.getTotalNumber();
freeDays+=userMemberVo.getRentFreeDays()==null?0:userMemberVo.getRentFreeDays();
baseUserMember.setBuyCount(userMemberVo.getBuyCount()+1);
baseUserMember.setTotalNumber(totalNumber);
baseUserMember.setRentFreeDays(freeDays);
updateSelectiveById(baseUserMember);
}
AppUserVo userVo= detailBiz.getUserInfoById(userId);
if(userVo!=null&&(userVo.getIsMember()==null||userVo.getIsMember()==0)){
AppUserVo userVo1=new AppUserVo();
userVo1.setId(userVo.getId());
userVo1.setIsMember(1);
detailBiz.updUuserInfoById(userVo1);
}
}
/**
* //
* @param userId
* @param days
* @param type;1-用户锁定下单;2-购买下单;3-取消订单
* @return
*/
public int upMemberDays(Integer userId,Integer days,Integer type){
int num=-1;
UserMemberVo userMemberVo=getMemberInfoByUserId(userId);
if(userMemberVo!=null){
days=days==null?0:days;
Integer freeDays=userMemberVo.getRentFreeDays()==null?userMemberVo.getRentFreeDays():0;
Integer lockDays=userMemberVo.getLockDays()==null?userMemberVo.getLockDays():0;
BaseUserMember baseUserMember=new BaseUserMember();
baseUserMember.setId(userMemberVo.getId());
if(type==1){
if((freeDays-lockDays)>0&&(freeDays-lockDays)>=days){
baseUserMember.setLockDays(lockDays+days);
updateSelectiveById(baseUserMember);
num=freeDays-(lockDays+days);
}
}else if(type==2){
Integer payCount=userMemberVo.getPayCount()==null?0:userMemberVo.getPayCount();
payCount=payCount+1;
freeDays=(freeDays-days)>0?(freeDays-days):0;
lockDays=lockDays>0?(lockDays-days)>0?(lockDays-days):0:0;
baseUserMember.setRentFreeDays(freeDays);
baseUserMember.setPayCount(payCount);
baseUserMember.setLockDays(lockDays);
updateSelectiveById(baseUserMember);
num=freeDays-lockDays;
}else {
lockDays=lockDays>0?(lockDays-days)>0?(lockDays-days):0:0;
baseUserMember.setLockDays(lockDays);
updateSelectiveById(baseUserMember);
num=freeDays-lockDays;
}
}
return num;
} }
} }
\ No newline at end of file
package com.github.wxiaoqi.security.admin.rest;
import com.github.wxiaoqi.security.admin.biz.BaseUserMemberBiz;
import com.github.wxiaoqi.security.admin.dto.UserMemberDTO;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* ${DESCRIPTION}
*
* @author wanghaobin
* @create 2017-06-08 11:51
*/
@RestController
@RequestMapping("member")
public class UserMemberController {
@Autowired
private BaseUserMemberBiz memberBiz;
/**
* 购买会员
* @param userMemberDTO
* @return
* @throws Exception
*/
@RequestMapping(value = "/user/buyMember", method = RequestMethod.POST)
public ObjectRestResponse buyMember(@RequestBody UserMemberDTO userMemberDTO) throws Exception {
memberBiz.updUserMemberByUserId(userMemberDTO);
return ObjectRestResponse.succ();
}
/**
* 订单更改会员
* @param userId
* @param days
* @param type 1-用户锁定下单;2-购买下单;3-取消订单
* @return
* @throws Exception
*/
@RequestMapping(value = "/user/buyMember", method = RequestMethod.POST)
public int buyMember(
@RequestParam(value = "userId",defaultValue = "0")Integer userId,
@RequestParam(value = "days",defaultValue = "0")Integer days,
@RequestParam(value = "type",defaultValue = "1")Integer type
) throws Exception {
return memberBiz.upMemberDays(userId,days,type);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment