Commit 818dc09f by giaogiao

微信登陆相关.短信验证码, 用户微信id绑定

parent 40fd4f56
package io.geekidea.springbootplus.test;
import com.sien.common.factory.PushFactory;
import com.sien.common.service.DonationRecordService;
import com.sien.common.vo.DonationRankAndTotal;
import me.chanjar.weixin.common.bean.WxOAuth2UserInfo;
import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
import me.chanjar.weixin.mp.api.WxMpService;
......@@ -20,6 +22,10 @@ public class SpiringPlusTest {
@Autowired
private WxMpService wxMpService;
@Autowired
private DonationRecordService donationRecordService;
/**
* app推送:1.您有一条新消息(客服回复推送)
* 2.您的订单已报价(商家端报价完后推送)
......@@ -50,5 +56,13 @@ public class SpiringPlusTest {
}
@Test
public void donationTest() throws Exception {
DonationRankAndTotal donationRankAndTotal = donationRecordService.getDonationRankAndTotal(1L);
int ii = 1;
};
}
......@@ -7,6 +7,7 @@ import com.sien.common.service.AppUserApiService;
import com.sien.common.service.AppUserService;
import com.sien.common.vo.AppUserQueryVo;
import com.sien.common.vo.app.LoginAppUserTokenVo;
import com.sien.common.vo.app.MyInfoVo;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController;
import io.geekidea.springbootplus.framework.log.annotation.Module;
......@@ -43,20 +44,19 @@ public class AppUserController extends BaseController {
@Autowired
private AppUserApiService appUserApiService;
/**
* 获取自己的信息详情
*/
@GetMapping("/myInfo/")
@OperationLog(name = "APP用户详情", type = OperationLogType.INFO)
@ApiOperation(value = "获取APP用户详情", response = AppUserQueryVo.class)
public ApiResult<AppUserQueryVo> getAppUser() throws Exception {
AppUserQueryVo appUserQueryVo = appUserService.getMyInfo();
public ApiResult<MyInfoVo> getAppUser() throws Exception {
MyInfoVo appUserQueryVo = appUserService.getMyInfo();
return ApiResult.ok(appUserQueryVo);
}
@PostMapping("/registerOrLogin")
@Validated
@ApiOperation(value = "手机号注册+登陆", notes = "app用户注册+登陆", response = LoginAppUserTokenVo.class)
public ApiResult<LoginAppUserTokenVo> registerOrLogin(@Validated @RequestBody AppSmsRegisterParam appSmsRegisterParam, @RequestHeader(required = false) String language) throws Exception {
return appUserApiService.register(appSmsRegisterParam, language);
......
/*
* Copyright 2019-2029 geekidea(https://github.com/geekidea)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.sien.common.convert;
import com.sien.common.entity.SysDepartment;
import com.sien.common.vo.SysDepartmentTreeVo;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import java.util.List;
/**
* 部门对象属性转换器
*
* @author geekidea
* @date 2019-11-01
**/
@Mapper
public interface SysDepartmentConvert {
SysDepartmentConvert INSTANCE = Mappers.getMapper(SysDepartmentConvert.class);
/**
* SysDepartment转换成SysDepartmentTreeVo对象
*
* @param sysDepartment
* @return
*/
SysDepartmentTreeVo entityToTreeVo(SysDepartment sysDepartment);
/**
* SysDepartment列表转换成SysDepartmentTreeVo列表
*
* @param list
* @return
*/
List<SysDepartmentTreeVo> listToTreeVoList(List<SysDepartment> list);
}
/*
* Copyright 2019-2029 geekidea(https://github.com/geekidea)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.sien.common.convert;
import com.sien.common.entity.SysPermission;
import com.sien.common.vo.SysPermissionTreeVo;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
/**
* SysPermission类对象转换器
*
* @author geekidea
* @date 2019-10-26
**/
@Mapper
public interface SysPermissionConvert {
SysPermissionConvert INSTANCE = Mappers.getMapper(SysPermissionConvert.class);
/**
* SysPermission对象转换成SysPermissionTreeVo对象
*
* @param sysPermission
* @return
*/
SysPermissionTreeVo permissionToTreeVo(SysPermission sysPermission);
}
......@@ -19,6 +19,7 @@ package com.sien.common.param.app;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.validation.annotation.Validated;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
......@@ -30,7 +31,8 @@ import java.io.Serializable;
* @date 2019-05-15
**/
@Data
@ApiModel("app手机验证码注册参数AppSmsRegisterParam")
@ApiModel("AppSmsRegisterParam")
@Validated
public class AppSmsRegisterParam implements Serializable {
@NotBlank(message = "请输入手机区号")
......@@ -42,11 +44,13 @@ public class AppSmsRegisterParam implements Serializable {
private String phone;
@ApiModelProperty(value = "短信验证码", example = "666666", required = true)
@NotBlank(message = "请输入手机号")
private String smsCode;
@ApiModelProperty(value = "微信重定向地址中的code", example = "adfadlsfadsf", required = false)
private String code;
@ApiModelProperty(value = "check接口中返回的openId", example = "adfadlsfadsf")
@NotBlank(message = "请输入openId")
private String openId;
@ApiModelProperty("姓名")
private String nickname;
// @ApiModelProperty("姓名")
// private String nickname;
}
......@@ -6,9 +6,11 @@ import com.sien.common.param.app.AppSmsRegisterParam;
import com.sien.common.param.app.DeviceTokenParam;
import com.sien.common.vo.AppUserQueryVo;
import com.sien.common.vo.app.LoginAppUserTokenVo;
import com.sien.common.vo.app.MyInfoVo;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.service.BaseService;
import io.geekidea.springbootplus.framework.core.pagination.Paging;
import me.chanjar.weixin.common.error.WxErrorException;
;
......@@ -97,13 +99,13 @@ public interface AppUserService extends BaseService<AppUser> {
/**
* 获取自己的信息详情
*/
AppUserQueryVo getMyInfo() throws Exception;
MyInfoVo getMyInfo() throws Exception;
/**
* 查询用户是否绑定微信
*/
ApiResult<LoginAppUserTokenVo> checkWechatUserBinding(String code) ;
ApiResult<LoginAppUserTokenVo> checkWechatUserBinding(String code) throws WxErrorException;
/**
......
......@@ -13,8 +13,6 @@ import io.geekidea.springbootplus.config.properties.WxMpProperties;
import io.geekidea.springbootplus.framework.common.api.ApiCode;
import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.shiro.jwt.JwtToken;
import me.chanjar.weixin.common.bean.WxOAuth2UserInfo;
import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
......@@ -83,7 +81,6 @@ public class AppUserApiServiceImpl implements AppUserApiService {
return ApiResult.fail(ApiCode.BUSINESS_EXCEPTION);
}
AppUser appUser = new AppUser();
appUser.setPhoneArea(phoneArea);
appUser.setPhone(phone);
......@@ -121,19 +118,13 @@ public class AppUserApiServiceImpl implements AppUserApiService {
return appUserService.login(loginParam, language, true);
}
WxOAuth2AccessToken accessToken = getWxMpService().getOAuth2Service().getAccessToken(loginParam.getCode());
// 从微信获取用户信息
WxOAuth2UserInfo wechatUserInfo = getWxMpService().getOAuth2Service().getUserInfo(accessToken, null);
// 没注册则先保存到数据库
AppUser appUser = new AppUser();
appUser.setNickname(wechatUserInfo.getNickname());
appUser.setHead(wechatUserInfo.getHeadImgUrl());
appUser.setLocation(wechatUserInfo.getCountry() + wechatUserInfo.getProvince() + wechatUserInfo.getCity());
appUser.setPhoneArea(loginParam.getPhoneArea());
appUser.setPhone(loginParam.getPhone());
appUser.setWechatOpenId(wechatUserInfo.getOpenid());
boolean isDbOk = appUserService.saveAppUser(appUser);
AppUser appUserByOpenId = appUserService.getOne(new QueryWrapper<AppUser>().lambda().eq(AppUser::getWechatOpenId, loginParam.getOpenId()));
appUserByOpenId.setPhoneArea(loginParam.getPhoneArea());
appUserByOpenId.setPhone(loginParam.getPhone());
boolean isDbOk = appUserService.updateById(appUserByOpenId);
if (!isDbOk) {
return ApiResult.fail(ApiCode.SPRING_BOOT_PLUS_EXCEPTION, new LoginAppUserTokenVo());
}
......
......@@ -11,8 +11,11 @@ import com.sien.common.param.AppUserPageParam;
import com.sien.common.param.app.AppSmsRegisterParam;
import com.sien.common.param.app.DeviceTokenParam;
import com.sien.common.service.AppUserService;
import com.sien.common.service.DonationRecordService;
import com.sien.common.vo.AppUserQueryVo;
import com.sien.common.vo.DonationRankAndTotal;
import com.sien.common.vo.app.LoginAppUserTokenVo;
import com.sien.common.vo.app.MyInfoVo;
import io.geekidea.springbootplus.config.properties.JwtProperties;
import io.geekidea.springbootplus.config.properties.SpringBootPlusProperties;
import io.geekidea.springbootplus.config.properties.WxMpProperties;
......@@ -28,6 +31,7 @@ import io.geekidea.springbootplus.framework.shiro.util.JwtUtil;
import io.geekidea.springbootplus.framework.shiro.util.SaltUtil;
import io.geekidea.springbootplus.framework.shiro.vo.LoginUserVo;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.bean.WxOAuth2UserInfo;
import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.mp.api.WxMpService;
......@@ -42,6 +46,7 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import java.time.Duration;
import java.util.List;
......@@ -80,6 +85,9 @@ public class AppUserServiceImpl extends BaseServiceImpl<AppUserMapper, AppUser>
@Autowired
private AppUserMapper appUserMapper;
@Autowired
private DonationRecordService donationRecordService;
@Override
public boolean hasUserByPhoneNumer(String phoneArea, String phone) {
......@@ -208,12 +216,17 @@ public class AppUserServiceImpl extends BaseServiceImpl<AppUserMapper, AppUser>
}
@Override
public AppUserQueryVo getMyInfo() throws Exception {
public MyInfoVo getMyInfo() throws Exception {
JwtToken jwtToken = (JwtToken) SecurityUtils.getSubject().getPrincipal();
AppUserQueryVo appUserById = appUserMapper.getAppUserById(jwtToken.getUserId());
return appUserById;
}
DonationRankAndTotal donationRankAndTotal = donationRecordService.getDonationRankAndTotal(jwtToken.getUserId());
MyInfoVo myInfoVo = new MyInfoVo();
myInfoVo.setAppUserQueryVo(appUserById);
myInfoVo.setDonationRankAndTotal(donationRankAndTotal);
return myInfoVo;
}
private WxMpService getWxMpService() {
// 代码里 getConfigs()处报错的同学,请注意仔细阅读项目说明,你的IDE需要引入lombok插件!!!!
......@@ -243,22 +256,60 @@ public class AppUserServiceImpl extends BaseServiceImpl<AppUserMapper, AppUser>
try {
accessToken = getWxMpService().getOAuth2Service().getAccessToken(code);
} catch (WxErrorException e) {
e.printStackTrace();
// e.printStackTrace();
log.debug(e.getMessage());
return ApiResult.result(ApiCode.USER_WECHAT_CODE, null);
}
// 查询openId是否被绑定
String openId = accessToken.getOpenId();
AppUser appUser = super.getOne(new QueryWrapper<AppUser>().lambda().eq(AppUser::getWechatOpenId, openId));
if (appUser == null) {
AppUser appUserByOpenId = super.getOne(new QueryWrapper<AppUser>().lambda().eq(AppUser::getWechatOpenId, openId));
// 第一次点击 没有绑定的情况
if (appUserByOpenId == null) {
AppUser appUsernew = new AppUser();
// 从微信获取用户信息
WxOAuth2UserInfo wechatUserInfo = null;
try {
wechatUserInfo = getWxMpService().getOAuth2Service().getUserInfo(accessToken, null);
} catch (WxErrorException e) {
log.debug(e.getMessage());
return ApiResult.result(ApiCode.USER_WECHAT_CODE, null);
}
appUsernew.setWechatOpenId(openId);
appUsernew.setNickname(wechatUserInfo.getNickname());
appUsernew.setHead(wechatUserInfo.getHeadImgUrl());
appUsernew.setLocation(wechatUserInfo.getCountry() + wechatUserInfo.getProvince() + wechatUserInfo.getCity());
appUsernew.setWechatOpenId(wechatUserInfo.getOpenid());
// 先保存至数据库
super.save(appUsernew);
// 返回告诉前端没有绑定过
return ApiResult.ok(new LoginAppUserTokenVo().setHasRegister(Boolean.FALSE));
} else {
// 有绑定直接返回用户token
LoginAppUserTokenVo loginAppUserTokenVo = getLoginAppUserTokenVo(Boolean.TRUE, appUser);
LoginAppUserTokenVo loginAppUserTokenVo = new LoginAppUserTokenVo();
loginAppUserTokenVo.setHasRegister(Boolean.FALSE);
loginAppUserTokenVo.setOpenId(openId);
return ApiResult.ok(loginAppUserTokenVo);
}
// 点击过 但没有绑定手机
LoginAppUserTokenVo loginAppUserTokenVo;
if (StringUtils.isEmpty(appUserByOpenId.getPhone())) {
// 返回告诉前端没有绑定过
loginAppUserTokenVo = new LoginAppUserTokenVo();
loginAppUserTokenVo.setHasRegister(Boolean.FALSE);
loginAppUserTokenVo.setOpenId(openId);
return ApiResult.ok(loginAppUserTokenVo);
} else {
// 有绑定直接返回用户token
loginAppUserTokenVo = getLoginAppUserTokenVo(Boolean.TRUE, appUserByOpenId);
}
return ApiResult.ok(loginAppUserTokenVo);
}
......
package com.sien.common.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import com.sien.common.entity.base.ImgJson;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.List;
/**
* <pre>
* 公务机出售/托管表 查询结果对象
* </pre>
*
* @author giao
* @date 2020-10-14
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "BusinessPlainQueryForAppVo对象")
@TableName(autoResultMap = true)
public class BusinessPlainQueryForAppVo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("商家name")
private String mcName;
@ApiModelProperty("机型介绍")
private String introduction;
@ApiModelProperty("销售员姓名")
private String name;
@ApiModelProperty("销售联系电话")
private String phone;
@ApiModelProperty("微信号")
private String wechat;
@ApiModelProperty("商家头像")
private String mcHead;
@ApiModelProperty("推荐: 0不推荐 1推荐")
private Integer recommend;
@TableField(typeHandler = FastjsonTypeHandler.class)
@ApiModelProperty("图片相关数据json (包括:路径,宽和高)")
private List<ImgJson> imgList;
}
package com.sien.common.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import com.sien.common.entity.base.ImgJson;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.sql.Timestamp;
import java.util.List;
/**
* <pre>
* 公务机出售/托管表 查询结果对象
* </pre>
*
* @author giao
* @date 2020-10-14
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "BusinessPlainQueryVo对象")
@TableName(autoResultMap = true)
public class BusinessPlainQueryVo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("主键ID")
private Long id;
@ApiModelProperty("商家ID")
private Long mcId;
@ApiModelProperty("业务类型,0-出售,1-托管")
private Integer businessType;
@ApiModelProperty("机型介绍")
private String introduction;
@ApiModelProperty("销售员姓名")
private String name;
@ApiModelProperty("销售联系电话")
private String phone;
@ApiModelProperty("微信号")
private String wechat;
@ApiModelProperty("状态,0-正常,1-禁用,99-删除")
private Integer status;
@ApiModelProperty("创建时间(时间戳)")
private Timestamp createTime;
@ApiModelProperty("更新时间(时间戳)")
private Timestamp updateTime;
@TableField(typeHandler = FastjsonTypeHandler.class)
@ApiModelProperty("图片相关数据json (包括:路径,宽和高)")
private List<ImgJson> imgList;
}
package com.sien.common.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* <pre>
* 包机介绍 查询结果对象
* </pre>
*
* @author giao
* @date 2020-10-14
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "CharterIntroductionImgForAppVo")
public class CharterIntroductionImgForAppVo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("url")
private String url;
@ApiModelProperty("高")
private Integer height;
@ApiModelProperty("宽")
private Integer width;
}
\ No newline at end of file
package com.sien.common.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.List;
/**
* <pre>
* 包机介绍 查询结果对象
* </pre>
*
* @author giao
* @date 2020-10-14
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "CharterIntroductionQueryForAppVo对象")
public class CharterIntroductionQueryForAppVo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("商家name")
private String mcName;
@ApiModelProperty("商家头像")
private String mcHead;
@ApiModelProperty("图片")
private List<CharterIntroductionImgForAppVo> imgList;
private String imgUrl;
@ApiModelProperty("包机文字")
private String text;
@ApiModelProperty("包机标题")
private String title;
@ApiModelProperty("推荐: 0不推荐 1推荐")
private Integer recommend;
}
\ No newline at end of file
package com.sien.common.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* <pre>
* 包机介绍 查询结果对象
* </pre>
*
* @author giao
* @date 2020-10-14
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "CharterIntroductionQueryVo对象")
public class CharterIntroductionQueryVo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("主键ID")
private Long id;
@ApiModelProperty("商家ID")
private Long mcId;
// @ApiModelProperty("图片高")
// private Integer imageListHeight;
// @ApiModelProperty("图片宽")
// private Integer imageListWidth;
@ApiModelProperty("状态,0-正常,1-取消,99-删除")
private Integer status;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("更新时间")
private Date updateTime;
}
\ No newline at end of file
package com.sien.common.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
......@@ -18,24 +19,24 @@ import java.util.Date;
@Data
@Accessors(chain = true)
@ApiModel(value = "DonationAgentQueryVo对象")
public class DonationAgentQueryVo implements Serializable{
private static final long serialVersionUID=1L;
public class DonationAgentQueryVo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("主键")
private Long id;
private Long id;
@ApiModelProperty("外键_捐款人_用户表id")
private Long fkUserId;
private Long fkUserId;
@ApiModelProperty("外键_捐款表id")
private Long fkRecordId;
private Long fkRecordId;
@ApiModelProperty("备注")
private String remark;
private String remark;
@ApiModelProperty("创建时间")
private Date createTime;
private Date createTime;
@ApiModelProperty("修改时间")
private Date updateTime;
private Date updateTime;
}
\ No newline at end of file
......@@ -20,33 +20,33 @@ import java.util.Date;
@Data
@Accessors(chain = true)
@ApiModel(value = "DonationRecordQueryVo对象")
public class DonationRecordQueryVo implements Serializable{
private static final long serialVersionUID=1L;
public class DonationRecordQueryVo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("主键")
private Long id;
private Long id;
@ApiModelProperty("外键_捐款人_用户表id")
private Long fkUserId;
private Long fkUserId;
@ApiModelProperty("捐款金额")
private BigDecimal money;
private BigDecimal money;
@ApiModelProperty("捐款用途;直接录入字符串: 助学助教,资助病残;慰问孤老,其他")
private String purpose;
private String purpose;
@ApiModelProperty("捐款方式;1正常.2匿名,替他人捐款记录在donation_r agent表")
private Integer way;
private Integer way;
@ApiModelProperty("备注")
private String remark;
private String remark;
@ApiModelProperty("创建时间")
private Date createTime;
private Date createTime;
@ApiModelProperty("修改时间")
private Date updateTime;
private Date updateTime;
@ApiModelProperty("是否为别人替我捐款")
private Integer isReplace;
private Integer isReplace;
}
\ No newline at end of file
package com.sien.common.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* <pre>
* 商家用户权限关系 查询结果对象
* </pre>
*
* @author giao
* @date 2020-10-19
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "MerchantUserPermissionDetailVo对象")
public class MerchantUserPermissionDetailVo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("权限id")
private Long permissionId;
@ApiModelProperty("权限code")
private String permissionCode;
@ApiModelProperty("权限中文名")
private String permissionName;
@ApiModelProperty("0:没有该权限,1:有该权限")
private Integer isHasPermission;
}
\ No newline at end of file
package com.sien.common.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import com.sien.common.entity.base.ImgJson;
import io.geekidea.springbootplus.framework.core.validator.groups.Update;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.List;
/**
* <pre>
* 行程表 查询结果对象
* </pre>
*
* @author wei
* @date 2020-09-29
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "StrokeDetailVo对象")
@TableName(autoResultMap = true)
public class StrokeDetailVo implements Serializable {
private static final long serialVersionUID = 1L;
@NotNull(message = "id不能为空", groups = {Update.class})
@ApiModelProperty("主键ID")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@NotNull(message = "出发城市id不能为空")
@ApiModelProperty("出发城市id")
private Long cityOutsetId;
@ApiModelProperty("逻辑删除,0:未删除,1:已删除")
@TableLogic
private Integer deleted;
@NotBlank(message = "出发城市名称不能为空")
@ApiModelProperty("出发城市名称")
private String cityOutsetName;
@NotNull(message = "到达城市id不能为空")
@ApiModelProperty("到达城市id")
private Long cityArriveId;
@NotBlank(message = "到达城市名称不能为空")
@ApiModelProperty("到达城市名称")
private String cityArriveName;
@NotNull(message = "人数不能为空")
@ApiModelProperty("人数")
private Integer peopleNum;
@NotNull(message = "飞机型号ID不能为空")
@ApiModelProperty("飞机型号ID")
private Long plainTypeId;
@NotNull(message = "出发时间不能为空")
@ApiModelProperty("出发时间")
private Timestamp outsetTime;
@ApiModelProperty("返程时间")
private Timestamp returnTime;
@NotNull(message = "行程类型,0-单程,1-往返行程,2-货运,3-医疗不能为空")
@ApiModelProperty("行程类型,0-单程,1-往返行程,2-货运,3-医疗")
private Integer type;
@NotNull(message = "状态,0-审核中,1-进行中,2-已完成,99-取消不能为空")
@ApiModelProperty("状态,0-审核中,1-进行中,2-已完成,99-取消")
private Integer status;
@NotNull(message = "创建时间不能为空")
@ApiModelProperty("创建时间")
private Timestamp createTime;
@ApiModelProperty("更新时间")
private Timestamp updateTime;
@ApiModelProperty("货物名称")
private String goodsName;
@ApiModelProperty("货物体积(长*宽*高) 单位:CM,例如:100*102*120")
private String goodsSize;
@ApiModelProperty("货物重量,单位:吨")
private Double goodsWeight;
@ApiModelProperty("病人疾病名称")
private String diseaseName;
@TableField(typeHandler = FastjsonTypeHandler.class)
@ApiModelProperty("病人病情诊断书")
private List<ImgJson> medicalCertificateUrl;
@ApiModelProperty("配备器械(格式:1,2,3)逗号分隔")
private String instruments;
@ApiModelProperty("医护人员,0-医生,1-护士,2-护工(格式:0,1,2)逗号分隔")
private String medicalPersons;
@ApiModelProperty("备注")
private String remarks;
@ApiModelProperty("价格")
private BigDecimal money;
@NotNull(message = "用户ID不能为空")
@ApiModelProperty("用户ID")
private Long userId;
@NotNull(message = "商家id不能为空")
@ApiModelProperty("商家id")
private Long mcId;
@NotNull(message = "用户选择机型不能为空")
@ApiModelProperty("用户选择机型")
private Long choosePlainType;
@NotBlank(message = "出发机场名称不能为空")
@ApiModelProperty("出发机场名称")
private String outsetAirportName;
@NotBlank(message = "到达机场名称不能为空")
@ApiModelProperty("到达机场名称")
private String arriveAirportName;
@ApiModelProperty("商家名称")
private String merchantName;
@NotNull(message = "付款状态不能为空")
@ApiModelProperty("付款状态,0-未付款,1-付款中,2-已付款,3-退款中,99-已退款")
private Integer paymentStatus;
@NotNull(message = "审核状态不能为空")
@ApiModelProperty("审核状态,0审核中,1审核通过,2审核未通过")
private Integer auditStatus;
}
package com.sien.common.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
import java.sql.Timestamp;
/**
* <pre>
* 优惠行程表 查询结果对象
* </pre>
*
* @author xxx
* @date 2020-10-14
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "StrokeDiscountQueryVo对象")
public class StrokeDiscountQueryVo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("主键ID")
private Long id;
@ApiModelProperty("出发城市id")
private Long cityOutsetId;
@ApiModelProperty("出发城市名称")
private String cityOutsetName;
@ApiModelProperty("到达城市id")
private Long cityArriveId;
@ApiModelProperty("到达城市名称")
private String cityArriveName;
@ApiModelProperty("座位数")
private Integer seatNum;
@ApiModelProperty("飞机型号ID")
private Long plainTypeId;
@ApiModelProperty("飞机型号名称")
private String plainTypeName;
@ApiModelProperty("出发时间")
private Timestamp outsetTime;
@ApiModelProperty("返程时间")
private Timestamp returnTime;
@ApiModelProperty("状态,0-正常,1-完成,99-删除")
private Integer status;
@ApiModelProperty("创建时间")
private Timestamp createTime;
@ApiModelProperty("更新时间")
private Timestamp updateTime;
@ApiModelProperty("备注")
private String remarks;
@ApiModelProperty("价格")
private BigDecimal money;
@ApiModelProperty("商家ID")
private Long mcId;
@ApiModelProperty("行程类型,0-单程,1-往返行程,2-货运,3-医疗")
private Integer type;
}
package com.sien.common.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.sql.Timestamp;
/**
* <pre>
* 行程表 查询结果对象
* </pre>
*
* @author wei
* @date 2020-09-29
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "StrokeQueryVo对象")
public class StrokeQueryVo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("主键ID")
private Long id;
@ApiModelProperty("商家ID")
private Long merchantId;
@ApiModelProperty("出发城市名称")
private String cityOutsetName;
@ApiModelProperty("到达城市名称")
private String cityArriveName;
@ApiModelProperty("飞机型号名称")
private String plainTypeName;
@ApiModelProperty("出发时间")
private Timestamp outsetTime;
@ApiModelProperty("返程时间")
private Timestamp returnTime;
@ApiModelProperty("行程类型,0-单程,1-往返行程,2-货运,3-医疗")
private Integer type;
@ApiModelProperty("付款状态,0-未付款,1-用户已付款,待审核,2-用户已付款,审核通过,3-退款中,99-已退款")
private Integer status;
@ApiModelProperty("价格")
private BigDecimal money;
@ApiModelProperty("用户ID")
private Long userId;
@ApiModelProperty("商家名称")
private String merchantName;
@NotBlank(message = "出发机场名称不能为空")
@ApiModelProperty("出发机场名称")
private String outsetAirportName;
@NotBlank(message = "到达机场名称不能为空")
@ApiModelProperty("到达机场名称")
private String arriveAirportName;
@NotNull(message = "付款状态不能为空")
@ApiModelProperty("付款状态,0-未付款,1-付款中,2-已付款,3-退款中,99-已退款")
private Integer paymentStatus;
@NotNull(message = "审核状态不能为空")
@ApiModelProperty("审核状态,0审核中,1审核通过,2审核未通过")
private Integer auditStatus;
@NotBlank(message = "商家开户银行不能为空")
@ApiModelProperty("商家开户银行")
private String rechargeBank;
@NotBlank(message = "商家开户名称不能为空")
@ApiModelProperty("商家开户名称")
private String rechargeName;
@NotBlank(message = "商家银行卡号")
@ApiModelProperty("商家银行卡号")
private String rechargeBankNumber;
@NotBlank(message = "是否是优惠调机不能为空")
@ApiModelProperty("是否是优惠调机,0-否,1-是")
private Boolean isDiscount;
}
/*
* Copyright 2019-2029 geekidea(https://github.com/geekidea)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.sien.common.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* <pre>
* 部门 查询结果对象
* </pre>
*
* @author geekidea
* @date 2019-10-24
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "SysDepartmentQueryVo对象", description = "部门查询参数")
public class SysDepartmentQueryVo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("主键")
private Long id;
@ApiModelProperty("部门名称")
private String name;
@ApiModelProperty("父id")
private Long parentId;
@ApiModelProperty("状态,0:禁用,1:启用")
private Integer state;
@ApiModelProperty("排序")
private Integer sort;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("版本")
private Integer version;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("修改时间")
private Date updateTime;
}
\ No newline at end of file
/*
* Copyright 2019-2029 geekidea(https://github.com/geekidea)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.sien.common.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* <pre>
* 部门TreeVo
* </pre>
*
* @author geekidea
* @since 2019-11-1
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "SysDepartmentTreeVo对象", description = "部门")
public class SysDepartmentTreeVo implements Serializable {
private static final long serialVersionUID = -2250233632748939400L;
@ApiModelProperty("主键")
private Long id;
@ApiModelProperty("部门名称")
private String name;
@ApiModelProperty("父id")
private Long parentId;
@ApiModelProperty("状态,0:禁用,1:启用")
private Integer state;
@ApiModelProperty("排序")
private Integer sort;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("版本")
private Integer version;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("修改时间")
private Date updateTime;
private List<SysDepartmentTreeVo> children;
}
/*
* Copyright 2019-2029 geekidea(https://github.com/geekidea)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.sien.common.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* <pre>
* 系统权限 查询结果对象
* </pre>
*
* @author geekidea
* @date 2019-10-24
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "SysPermissionQueryVo对象", description = "系统权限查询参数")
public class SysPermissionQueryVo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("主键")
private Long id;
@ApiModelProperty("权限名称")
private String name;
@ApiModelProperty("父id")
private Long parentId;
@ApiModelProperty("路径")
private String url;
@ApiModelProperty("唯一编码")
private String code;
@ApiModelProperty("图标")
private String icon;
@ApiModelProperty("类型,1:菜单,2:按钮")
private Integer type;
@ApiModelProperty("层级,1:第一级,2:第二级,N:第N级")
private Integer level;
@ApiModelProperty("状态,0:禁用,1:启用")
private Integer state;
@ApiModelProperty("排序")
private Integer sort;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("版本")
private Integer version;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("修改时间")
private Date updateTime;
}
\ No newline at end of file
/*
* Copyright 2019-2029 geekidea(https://github.com/geekidea)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.sien.common.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* 系统权限树形列表VO
*
* @author geekidea
* @date 2019-10-26
**/
@Data
@Accessors(chain = true)
@ApiModel(value = "SysPermissionTreeVo对象", description = "系统权限树形列表")
public class SysPermissionTreeVo implements Serializable {
private static final long serialVersionUID = 2738804574228359190L;
@ApiModelProperty("主键")
private Long id;
@ApiModelProperty("权限名称")
private String name;
@ApiModelProperty("父id")
private Long parentId;
@ApiModelProperty("路径")
private String url;
@ApiModelProperty("唯一编码")
private String code;
@ApiModelProperty("图标")
private String icon;
@ApiModelProperty("类型,1:菜单,2:按钮")
private Integer type;
@ApiModelProperty("层级,1:第一级,2:第二级,N:第N级")
private Integer level;
@ApiModelProperty("状态,0:禁用,1:启用")
private Integer state;
@ApiModelProperty("排序")
private Integer sort;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("版本")
private Integer version;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("修改时间")
private Date updateTime;
@ApiModelProperty("子节点集合")
private List<SysPermissionTreeVo> children;
}
\ No newline at end of file
/*
* Copyright 2019-2029 geekidea(https://github.com/geekidea)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.sien.common.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* <pre>
* 角色权限关系 查询结果对象
* </pre>
*
* @author geekidea
* @date 2019-10-24
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "SysRolePermissionQueryVo对象", description = "角色权限关系查询参数")
public class SysRolePermissionQueryVo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("主键")
private Long id;
@ApiModelProperty("角色id")
private Long roleId;
@ApiModelProperty("权限id")
private Long permissionId;
@ApiModelProperty("状态,0:禁用,1:启用")
private Integer state;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("版本")
private Integer version;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("修改时间")
private Date updateTime;
}
\ No newline at end of file
/*
* Copyright 2019-2029 geekidea(https://github.com/geekidea)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.sien.common.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
import java.util.Set;
/**
* <pre>
* 系统角色 查询结果对象
* </pre>
*
* @author geekidea
* @date 2019-10-24
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "SysRoleQueryVo对象", description = "系统角色查询参数")
public class SysRoleQueryVo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("主键")
private Long id;
@ApiModelProperty("角色名称")
private String name;
@ApiModelProperty("角色唯一编码")
private String code;
@ApiModelProperty("角色类型")
private Integer type;
@ApiModelProperty("角色状态,0:禁用,1:启用")
private Integer state;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("版本")
private Integer version;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("修改时间")
private Date updateTime;
@ApiModelProperty("权限集合")
private Set<Long> permissions;
}
\ No newline at end of file
/*
* Copyright 2019-2029 geekidea(https://github.com/geekidea)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.sien.common.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* <pre>
* 系统用户 查询结果对象
* </pre>
*
* @author geekidea
* @date 2019-10-24
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "SysUserQueryVo对象", description = "系统用户查询参数")
public class SysUserQueryVo implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("主键")
private Long id;
@ApiModelProperty("用户名")
private String username;
@ApiModelProperty("昵称")
private String nickname;
@ApiModelProperty("手机号码")
private String phone;
@ApiModelProperty("性别,0:女,1:男,默认1")
private Integer gender;
@ApiModelProperty("头像")
private String head;
@ApiModelProperty("remark")
private String remark;
@ApiModelProperty("状态,0:禁用,1:启用,2:锁定")
private Integer state;
@ApiModelProperty("部门id")
private Long departmentId;
@ApiModelProperty("角色id")
private Long roleId;
@ApiModelProperty("逻辑删除,0:未删除,1:已删除")
private Integer deleted;
@ApiModelProperty("版本")
private Integer version;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("修改时间")
private Date updateTime;
@ApiModelProperty("部门名称")
private String departmentName;
@ApiModelProperty("角色名称")
private String roleName;
}
\ No newline at end of file
......@@ -28,13 +28,13 @@ import lombok.experimental.Accessors;
**/
@Data
@Accessors(chain = true)
@ApiModel("登录用户信息LoginAppUserTokenVo")
@ApiModel("LoginAppUserTokenVo")
public class LoginAppUserTokenVo implements LoginToken {
@ApiModelProperty("token")
private String token;
@ApiModelProperty("是否已经注册, true = 已经绑定, false = 没有绑定,需要跳转到注册页")
@ApiModelProperty(value = "是否已经注册", notes = "true = 已经绑定,直接跳转个人中心, false = 没有绑定,需要跳转到注册页")
private Boolean hasRegister;
@ApiModelProperty("用户名")
......@@ -94,4 +94,7 @@ public class LoginAppUserTokenVo implements LoginToken {
@ApiModelProperty("紧急电话")
private String emergencyPhone;
@ApiModelProperty("openId")
private String openId;
}
......@@ -14,20 +14,26 @@
* limitations under the License.
*/
package com.sien.common.convert;
package com.sien.common.vo.app;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import com.sien.common.vo.AppUserQueryVo;
import com.sien.common.vo.DonationRankAndTotal;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* 系统角色对象属性转换器
*
* @author geekidea
* @date 2019-10-05
* @date 2019-10-26
**/
@Mapper
public interface SysRoleConvert {
@Data
@Accessors(chain = true)
@ApiModel("LoginAppUserTokenVo2")
public class MyInfoVo implements Serializable {
SysRoleConvert INSTANCE = Mappers.getMapper(SysRoleConvert.class);
private AppUserQueryVo appUserQueryVo;
private DonationRankAndTotal donationRankAndTotal;
}
......@@ -21,10 +21,11 @@
from donation_record
</select>
<select id="getDonationRankAndTotal" resultType="com.sien.common.vo.DonationRankAndTotal">
SELECT tb.*,
SELECT
tb.*,
@curRank := @curRank + 1 AS rank
FROM
( SELECT fk_user_id, sum ( money ) AS dr_total FROM donation_record GROUP BY fk_user_id ORDER BY dr_total DESC ) AS tb,
( SELECT fk_user_id, sum( money ) AS drTotal FROM donation_record GROUP BY fk_user_id ORDER BY drTotal DESC ) AS tb,
( SELECT @curRank := 0 ) r
WHERE
fk_user_id = #{userId}
......
......@@ -78,6 +78,4 @@ api.response.code.HTTP_REQUEST_METHOD_NOT_SUPPORTED_EXCEPTION=默认的异常处
api.response.code.user.PWD_OR_USERNAME_ERROR=账号或密码错误
api.response.code.user.SMS_CODE_ERROR=验证码错误
api.response.code.user.USER_NOT_FOUND=用户不存在
api.response.code.user.PLAIN_TYPE_NOT_FOUND=飞机类型不存在
api.response.code.user.MC_PLANE_NOT_AVAILABLE=此机型飞机暂无空闲
api.response.code.user.MC_PLANE_EXISTED=商家此机型飞机已存在
api.response.code.user.USER_WECHAT_CODE=微信code错误
......@@ -117,18 +117,12 @@ public enum ApiCode {
* 用户不存在
*/
USER_NOT_FOUND(6003, "api.response.code.user.USER_NOT_FOUND"),
/**
* 飞机类型不存在
*/
PLAIN_TYPE_NOT_FOUND(6004, "api.response.code.user.PLAIN_TYPE_NOT_FOUND"),
/**
* 此机型飞机暂无空闲
*/
MC_PLANE_NOT_AVAILABLE(6005, "api.response.code.user.MC_PLANE_NOT_AVAILABLE"),
/**
* 商家此机型飞机已存在
* 微信code错误
*/
MC_PLANE_EXISTED(6006, "api.response.code.user.MC_PLANE_EXISTED"),
USER_WECHAT_CODE(6004, "api.response.code.user.USER_WECHAT_CODE"),
;
private final int code;
......
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