Commit 1164b8c8 authored by hanfeng's avatar hanfeng

修改用户会员后台管理(19/7/06)

parent 7c7ad9e3
package com.github.wxiaoqi.security.admin.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* 用户信息表
*/
@Data
public class AppUserManageDTO {
/**
* 每页条数
*/
private Integer limit;
/**
* 当前页数
*/
private Integer page;
/**
* 手机号
*/
private Integer mobile;
/**
* 注册终端
*/
private Integer channel;
/**
* 会员等级
*/
private Integer memberLevel;
/**
* 注册时间(开始)
*/
@JsonFormat(pattern = "yyyy-MM-DD HH:mm", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-DD HH:mm")
private Date registrationTimeBegin;
/**
* 注册时间(结束)
*/
@JsonFormat(pattern = "yyyy-MM-DD HH:mm", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-DD HH:mm")
private Date registrationTimeEnd;
public Long getRegistrationTimeBegin() {
return registrationTimeBegin.getTime();
}
public Long getRegistrationTimeEnd() {
return registrationTimeEnd.getTime();
}
}
package com.github.wxiaoqi.security.admin.dto;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 用户会员信息
*/
@Data
public class BaseUserMemberVO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
@Id
@GeneratedValue(generator = "JDBC")
@ApiModelProperty("主键id")
private Integer id;
/**
* 用户id
*/
@Column(name = "user_id")
@ApiModelProperty(value = "用户id")
private Integer userId;
/**
* 会员等级
*/
@Column(name = "member_level")
@ApiModelProperty(value = "会员等级")
private Integer memberLevel;
/**
* 赠送总天数
*/
@Column(name = "total_number")
@ApiModelProperty(value = "赠送总天数")
private Integer totalNumber;
/**
* 剩余天数
*/
@Column(name = "rent_free_days")
@ApiModelProperty(value = "剩余天数")
private Integer rentFreeDays;
/**
* 购买会员次数
*/
@Column(name = "buy_count")
@ApiModelProperty(value = "购买会员次数")
private Integer buyCount;
/**
* 有效期;0代表永久
*/
@Column(name = "valid_time")
@ApiModelProperty(value = "有效期;0代表永久")
private Long validTime;
}
......@@ -132,6 +132,9 @@ public class BaseUserMember implements Serializable {
@Column(name = "is_del")
@ApiModelProperty(value = "是否删除;0-正常;1-删除")
private Integer isDel;
@Column(name = "recent_recharge")
private Long recentRecharge;
}
package com.github.wxiaoqi.security.admin.vo;
import lombok.Data;
import javax.persistence.Column;
/**
* 用户信息表
*/
@Data
public class AppUserManageVo {
/**
* 用户id
*/
@Column(name = "userid")
private Integer userId;
/**
* 注册终端
*/
@Column(name = "channel")
private String channel;
/**
* 是否是会员:0-不是;1-会员
*/
@Column(name = "is_member")
private Integer isMember;
/**
* 真实姓名
*/
@Column(name = "realname")
private String realName;
/**
* 状态:0-正常,1-禁用
*/
@Column(name = "isdel")
private Integer isDel;
/**
* 昵称
*/
@Column(name = "nickname")
private String nickName;
/**
* 用户来源:0-自来,1-公司人员推荐,2-用户推荐
*/
@Column(name = "source")
private Integer source;
/**
* 邀请人id
*/
@Column(name = "Inviter_account")
private Integer InviterAccount;
/**
* 账号申请所在地
*/
@Column(name = "address")
private String address;
/**
* 用户性别
*/
@Column(name = "sex")
private Integer sex;
/**
* 用户邮箱
*/
@Column(name = "email")
private String email;
/**
* 用户名(手机号码)
*/
@Column(name = "username")
private String username;
/**
* 实名认证状态:0-未认证,1-已认证
*/
@Column(name = "certification_status")
private String certification_status;
/**
* 身份证号
*/
@Column(name = "id_number")
private String idNumber;
/**
* 会员等级
*/
@Column(name = "member_level")
private Integer memberLevel;
/**
* 有效期;0代表永久
*/
@Column(name = "valid_time")
private Integer validTime;
/**
* 创建时间
*/
@Column(name = "createtime")
private Long createTime;
/**
* 最后的登录时间
*/
@Column(name = "last_time")
private Long lastTime;
/**
* 购买会员次数
*/
@Column(name = "buy_count")
private String buyCount;
/**
* 赠送总天数
*/
@Column(name = "total_number")
private String totalNumber;
/**
* 剩余天数
*/
@Column(name = "rent_free_days")
private String rentFreeDays;
/**
* 加入会员时间
*/
private Long timeOfMembership;
/**
* 最近充值时间
*/
@Column(name = "recent_recharge")
private Long recentRecharge;
/**
* 会员名称
*/
private String memberName;
}
package com.github.wxiaoqi.security.admin.biz;
import com.github.wxiaoqi.security.admin.dto.AppUserManageDTO;
import com.github.wxiaoqi.security.admin.entity.*;
import com.github.wxiaoqi.security.admin.mapper.*;
import com.github.wxiaoqi.security.admin.vo.AppUserManageVo;
import com.github.wxiaoqi.security.admin.vo.AppUserVo;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import org.apache.commons.beanutils.BeanUtilsBean;
......@@ -24,42 +26,58 @@ public class AppUserManageBiz extends BaseBiz<AppUserDetailMapper, AppUserDetail
@Autowired
private AppUserLoginMapper appUserLoginMapper;
@Autowired
private BaseUserMemberMapper baseUserMemberMapper;
/**
* 根据条件查询
*
* @param appUserVo
* @param appUserManageDTO 查询条件
* @return
*/
public AppUserVo findAllByQuery(AppUserVo appUserVo) {
return mapper.selectAppUserManage(appUserVo);
public AppUserManageVo findAllByQuery(AppUserManageDTO appUserManageDTO) {
return mapper.selectAppUserManage(appUserManageDTO);
}
@Transactional
public void deleteAppUser(Integer id) {
/**
* 禁用账户
* @param id
*/
@Transactional(rollbackFor =Exception.class)
public void deleteAppUser(Integer id,Integer isDel) {
AppUserLogin appUserLogin = new AppUserLogin();
appUserLogin.setIsdel(1);
//修改为禁用并设置修改时间
appUserLogin.setIsdel(isDel);
appUserLogin.setUpdatetime(System.currentTimeMillis());
Example example = new Example(AppUserLogin.class);
Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("id", id);
appUserLogin.setUpdatetime(System.currentTimeMillis());
appUserLoginMapper.updateByExampleSelective(appUserLogin, example);
//设置
AppUserDetail appUserDetail = new AppUserDetail();
appUserDetail.setIsdel(1);
appUserDetail.setIsdel(isDel);
appUserDetail.setUpdatetime(System.currentTimeMillis());
Example detailExample = new Example(AppUserLogin.class);
Example.Criteria detailCriteria = detailExample.createCriteria();
criteria.andEqualTo("id", id);
mapper.updateByExampleSelective(appUserDetail, detailCriteria);
}
/**
* 查询一条
* @param id
* @return
*/
public AppUserVo findOneById(Integer id) {
return mapper.getUserInfo(id);
}
@Transactional
/**
*
* @param appUserVo
*/
@Transactional(rollbackFor =Exception.class)
public void save(AppUserVo appUserVo) {
AppUserLogin appUserLogin = new AppUserLogin();
AppUserDetail appUserDetail = new AppUserDetail();
......
......@@ -2,18 +2,28 @@ package com.github.wxiaoqi.security.admin.biz;
import com.ace.cache.annotation.Cache;
import com.ace.cache.annotation.CacheClear;
import com.github.wxiaoqi.security.admin.dto.BaseUserMemberVO;
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.common.exception.BaseException;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.BeanUtilsBean;
import org.springframework.aop.framework.AopContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.task.TaskExecutor;
import org.springframework.integration.amqp.dsl.Amqp;
import org.springframework.stereotype.Service;
import com.github.wxiaoqi.security.admin.entity.BaseUserMember;
import com.github.wxiaoqi.security.admin.mapper.BaseUserMemberMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.weekend.WeekendSqls;
import java.lang.reflect.InvocationTargetException;
import java.util.List;
/**
* 用户会员表
......@@ -30,6 +40,9 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper,BaseUserMemb
@Autowired
AppUserDetailBiz detailBiz;
@Autowired
private TaskExecutor taskExecutor;
//获取用户会员信息
@Cache(key = "user:member{1}")
public UserMemberVo getMemberInfoByUserId(Integer userId){
......@@ -155,5 +168,56 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper,BaseUserMemb
return AopContext.currentProxy() != null ? (BaseUserMemberBiz) AopContext.currentProxy() : this;
}
/**
* 获取用户会员信息
* @param userId
* @return
*/
public BaseUserMember findOneByUserId(Integer userId) {
Example exa = new Example(BaseUserMember.class);
Example.Criteria criteria = exa.createCriteria();
criteria.andEqualTo("userId",userId);
List<BaseUserMember> baseUserMembers = mapper.selectByExample(exa);
if (baseUserMembers.size()>1) {
throw new BaseException("Member purchase repeat!");
}
return baseUserMembers!=null&&baseUserMembers.size()!=0 ? baseUserMembers.get(0): null;
}
/**
* 设置用户会员
* @param baseUserMemberVO
*/
@Transactional(rollbackFor = Exception.class)
public void setUserMember(BaseUserMemberVO baseUserMemberVO) throws InvocationTargetException, IllegalAccessException {
Example exa = Example.builder(BaseUserMember.class).where(
WeekendSqls.<BaseUserMember>custom()
.andEqualTo(BaseUserMember::getUserId, baseUserMemberVO.getUserId())
).build();
List<BaseUserMember> baseUserMembers = mapper.selectByExample(exa);
BaseUserMember baseUserMember = new BaseUserMember();
BeanUtilsBean.getInstance().copyProperties(baseUserMember,baseUserMemberVO);
if (baseUserMembers==null||baseUserMembers.size()==0) {
baseUserMember.setCrtTime(System.currentTimeMillis());
baseUserMember.setIsDel(0);
baseUserMember.setPayCount(0);
baseUserMember.setCardLeave(0);
baseUserMember.setRecentRecharge(System.currentTimeMillis());
insertSelective(baseUserMember);
return;
}else if (baseUserMembers.size()==1){
baseUserMember.setUpdTime(System.currentTimeMillis());
updateSelectiveById(baseUserMember);
}else {
throw new BaseException("Member purchase repeat!");
}
}
}
\ No newline at end of file
package com.github.wxiaoqi.security.admin.mapper;
import com.github.wxiaoqi.security.admin.dto.AppUserManageDTO;
import com.github.wxiaoqi.security.admin.entity.AppUserDetail;
import com.github.wxiaoqi.security.admin.entity.AppUserManage;
import com.github.wxiaoqi.security.admin.vo.AppUserManageVo;
import com.github.wxiaoqi.security.admin.vo.AppUserVo;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;
......@@ -11,5 +12,5 @@ public interface AppUserDetailMapper extends Mapper<AppUserDetail> {
//查询用户信息
public AppUserVo getUserInfo(@Param("userId") Integer userId);
AppUserVo selectAppUserManage(AppUserVo appUserVo);
AppUserManageVo selectAppUserManage(AppUserManageDTO appUserManageDTO);
}
\ No newline at end of file
package com.github.wxiaoqi.security.admin.rest;
import com.github.wxiaoqi.security.admin.biz.AppUserManageBiz;
import com.github.wxiaoqi.security.admin.dto.AppUserManageDTO;
import com.github.wxiaoqi.security.admin.dto.BaseUserMemberVO;
import com.github.wxiaoqi.security.admin.entity.AppUserManage;
import com.github.wxiaoqi.security.admin.vo.AppUserManageVo;
import com.github.wxiaoqi.security.admin.vo.AppUserVo;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController;
......@@ -20,18 +23,18 @@ public class AppUsersManageController extends BaseController<AppUserManageBiz,Ap
* @return
*/
@GetMapping("/findAll")
public ObjectRestResponse<AppUserVo> findAllByQuery(@RequestBody AppUserVo appUserVo){
return ObjectRestResponse.succ(baseBiz.findAllByQuery(appUserVo));
public ObjectRestResponse<AppUserManageVo> findAllByQuery(@RequestBody AppUserManageDTO appUserManageDTO){
return ObjectRestResponse.succ(baseBiz.findAllByQuery(appUserManageDTO));
}
/**
* 删除
* 禁用
* @param id
* @return
*/
@DeleteMapping("/deleteById/{id}")
public ObjectRestResponse deleteById(@PathVariable Integer id){
baseBiz.deleteAppUser(id);
@DeleteMapping("/deleteById/{id}/{isDel}")
public ObjectRestResponse deleteById(@PathVariable Integer id,@PathVariable Integer isDel){
baseBiz.deleteAppUser(id,isDel);
return ObjectRestResponse.succ();
}
......@@ -45,6 +48,11 @@ public class AppUsersManageController extends BaseController<AppUserManageBiz,Ap
return ObjectRestResponse.succ(baseBiz.findOneById(id));
}
/**
* 保存
* @param appUserVo
* @return
*/
@PostMapping("/save")
public ObjectRestResponse save(@RequestBody AppUserVo appUserVo){
baseBiz.save(appUserVo);
......
package com.github.wxiaoqi.security.admin.rest;
import com.github.wxiaoqi.security.admin.biz.BaseUserMemberBiz;
import com.github.wxiaoqi.security.admin.dto.BaseUserMemberVO;
import com.github.wxiaoqi.security.admin.entity.AppUserManage;
import com.github.wxiaoqi.security.admin.entity.BaseUserMember;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController;
import org.springframework.web.bind.annotation.*;
import java.lang.reflect.InvocationTargetException;
/**
* 用户会员
* @author Administrator
*/
@RestController
@RequestMapping("baseUserMember")
public class BaseUserMemberController extends BaseController<BaseUserMemberBiz, BaseUserMember> {
@RequestMapping("/findOne/{userId}")
public ObjectRestResponse<AppUserManage> findOneByUserId(@PathVariable Integer userId){
BaseUserMember oneByUserId = baseBiz.findOneByUserId(userId);
if (oneByUserId==null) {
return ObjectRestResponse.succ();
}
return ObjectRestResponse.succ(oneByUserId);
}
/**
* 设置用户会员
* @param baseUserMemberVO
* @return
*/
@PostMapping("/setUserMember")
public ObjectRestResponse setUserMember(@RequestBody BaseUserMemberVO baseUserMemberVO)
throws InvocationTargetException, IllegalAccessException {
baseBiz.setUserMember(baseUserMemberVO);
return ObjectRestResponse.succ();
}
}
......@@ -32,85 +32,69 @@
where d.userid = #{userId} limit 1
</select>
<select id="selectAppUserManage" parameterType="Integer" resultMap="AppUserVoMap">
select l.im_userid,l.username,l.wx_openid,l.unionid,l.openid,l.status,l.id_number,l.certification_status,d.* from app_user_login l
left join app_user_detail d
on d.userid = l.id where 1=1
<if test="id != null">
and d.id =#{id}
</if>
<if test="userid != null" >
and d.userid = #{userId}
</if>
<if test="username != null" >
and l.username=#{username}
</if>
<if test="imUserd != null" >
and l.im_userid=#{imUserid}
</if>
<if test="wxOpenid != null" >
and l.wx_openid=#{wxOpenid}
</if>
<if test="unionid != null" >
and l.unionid=#{unionid}
</if>
<if test="openid != null" >
and l.openid=#{openid}
</if>
<if test="status != null" >
and l.status=#{status}
</if>
<if test="idNumber != null" >
and l.id_number=#{idNumber}
</if>
<if test="certificationStatus != null" >
and l.certification_status=#{certificationStatus}
</if>
<if test="isMember != null" >
and d.is member=#{isMember}
</if>
<if test="nickname != null" >
and d.nickname=#{nickname}
</if>
<if test="realname != null" >
and d.realname=#{realname}
</if>
<if test="email != null" >
and d.email=#{email}
</if>
<if test="sex != null" >
and d.sex=#{sex}
</if>
<if test="birthday != null" >
and d.birthday=#{birthday}
</if>
<if test="personSign != null" >
and d.person_sign=#{personSign}
</if>
<if test="remark != null" >
and d.remark=#{remark}
</if>
<select id="selectAppUserManage" parameterType="com.github.wxiaoqi.security.admin.dto.AppUserDTO"
resultType="com.github.wxiaoqi.security.admin.vo.AppUserManageVo">
select
d.userid,
d.channel,
d.is_member,
d.realname,
d.isdel,
d.nickname,
d.source,
d.Inviter_account,
d.address,
d.sex,
d.email,
l.username,
l.certification_status,
l.id_number,
l.createtime,
l.last_time,
m.member_level,
m.valid_time,
m.buy_count,
m.total_number,
m.rent_free_days,
m.crt_time AS timeOfMembership,
m.recent_recharge,
m.name as memberName
from
app_user_login l
left join
app_user_detail d
on d.userid = l.id
left join
(
select
b.*,
ml.name
from
base_user_member b
left join
base_user_member_level ml
on
ml.id = b.member_level
) m
on
l.id = m.user_id
where 1=1
<if test="mobile !=null || mobile ! = ''">
and l.username=#{mobile}
</if>
<if test="channel !=null || channel != ''">
and d.channel=#{channel}
</if>
<if test="memberLevel !=null || memberLevel != ''">
and m.member_level = #{memberLevel}
</if>
<if test="registrationTimeBegin !=null || registrationTimeBegin != ''">
and l.createtime &gt;= #{registrationTimeBegin}
</if>
<if test="registrationTimeEnd!=null || registrationTimeEnd != ''">
and l.createtime &lt;= #{registrationTimeEn}
</if>
</select>
......
......@@ -50,6 +50,7 @@ public class AppVersionBiz extends BaseBiz<AppVersionMapper,AppVersion> {
private String uploadPath;
@Autowired
private RedisTemplate redisTemplate;
public static final DateTimeFormatter DEFAULT_DATE_TIME_FORMATTER = DateTimeFormat.forPattern("yyyy-MM-dd");
......
......@@ -103,7 +103,7 @@ public class AppVersionController extends BaseController<AppVersionBiz,AppVersio
@IgnoreUserToken
@GetMapping(value = "/download/installationPackage") //匹配的是href中的download请求
@GetMapping(value = "/download/installationPackage/{realFileRelPath}") //匹配的是href中的download请求
@ApiOperation(value = "下载app安装包")
public ResponseEntity<byte[]> downloadInstallationPackage(@RequestParam("realFileRelPath") String realFileRelPath) throws Exception {
return baseBiz.downloadInstallationPackage(realFileRelPath);
......
......@@ -3,7 +3,6 @@ package com.xxfc.platform.universal.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
......@@ -12,8 +11,6 @@ import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
......
package com.xxfc.platform.vehicle;
import org.junit.Test;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.List;
public class ListTest {
@Test
public void ListTest(){
List<Object> objects = Arrays.asList();
System.out.println("objects.size()"+objects.get(0));
}
}
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