Commit e22a7fed authored by jiaorz's avatar jiaorz

Merge branch 'base-modify' of http://113.105.137.151:22280/youjj/cloud-platform into base-modify

parents 06189874 12968aca
package com.github.wxiaoqi.security.common.util; package com.github.wxiaoqi.security.common.util;
import java.util.UUID; import java.util.*;
/** /**
* Created by ace on 2017/9/27. * Created by ace on 2017/9/27.
...@@ -35,13 +35,40 @@ public class UUIDUtils { ...@@ -35,13 +35,40 @@ public class UUIDUtils {
public static String genCodes(int length) { public static String genCodes(int length) {
StringBuffer shortBuffer = new StringBuffer(); StringBuffer shortBuffer = new StringBuffer();
String uuid = UUID.randomUUID().toString().replace("-", ""); String uuid = UUID.randomUUID().toString().replace("-", "");
//System.out.println(uuid);
for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) {
String str = uuid.substring(i * 4, i * 4 + 4); String str = uuid.substring(i * 4, i * 4 + 4);
int x = Integer.parseInt(str, 16); int x = Integer.parseInt(str, 16);
shortBuffer.append(chars1[x % 0x3E]); // chars1[x % 0x3B]chars[x % 0x3E]
shortBuffer.append(chars1[x % 0x3B]);
} }
return shortBuffer.toString(); return shortBuffer.toString();
} }
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<String, Integer>();
for(int i = 0; i < 100000000; i++) {
//System.out.println(UUIDUtils.genCodes(6));
String key = UUIDUtils.genCodes(8);
if(null == map.get(key)) {
map.put(key, 1);
}else {
System.out.println("重复"+ key+ ":"+ i);
map.put(key, map.get(key) + 1);
}
}
int flag = 0;
Set<Map.Entry<String, Integer>> list = map.entrySet();
for(Map.Entry<String, Integer> e : list) {
if(e.getValue() > 1) {
flag++;
System.out.println(e.getKey()+ ":"+ e.getValue());
}
}
System.out.println("flag : "+ flag);
}
} }
...@@ -18,8 +18,7 @@ ACCESSKEYSECRET=OCKDEiwKGjePCZgPeWMEUFGwGbKYLA ...@@ -18,8 +18,7 @@ ACCESSKEYSECRET=OCKDEiwKGjePCZgPeWMEUFGwGbKYLA
TEMPLATECODE=SMS_170070101 TEMPLATECODE=SMS_170070101
SIGNNAME=滴房车 SIGNNAME=滴房车
#微信支付配置 #微信支付配置
WINXIN_AppID=wxcc2c9b7c87439a6d WINXIN_AppID=wx425608b69a34736f
WINXIN_AppSecret=279796e8c2963c8a5ddc8270ef642b29
WINXIN_PARTNER_KEY=xxfcXXDfangche74upyuns3AD4334533 WINXIN_PARTNER_KEY=xxfcXXDfangche74upyuns3AD4334533
WINXIN_PARTNER=1539689201 WINXIN_PARTNER=1539689201
#ios #ios
......
...@@ -39,23 +39,12 @@ public class AppUserManageDTO { ...@@ -39,23 +39,12 @@ public class AppUserManageDTO {
/** /**
* 注册时间(开始) * 注册时间(开始)
*/ */
@JsonFormat(pattern = "yyyy-MM-DD HH:mm", timezone = "GMT+8") private Long registrationTimeBegin;
@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() { private Long registrationTimeEnd;
return registrationTimeBegin.getTime();
}
public Long getRegistrationTimeEnd() {
return registrationTimeEnd.getTime();
}
} }
package com.github.wxiaoqi.security.admin.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Column;
import javax.persistence.Table;
import java.io.Serializable;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/7/8 16:08
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "base_user_member_export")
public class BaseUserMemberExportDTO implements Serializable {
private static final long serialVersionUID = 1L;
private String username;
private Integer memberLevel;
private Integer totalNumber;
private Integer rentFreeDays;
private Integer discount;
private Integer status;
}
package com.github.wxiaoqi.security.admin.entity;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 用户身份职位表
*
* @author libin
* @email 18178966185@163.com
* @date 2019-07-09 10:00:42
*/
@Data
@Table(name = "app_user_position")
public class AppUserPosition implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
@Id
@GeneratedValue(generator = "JDBC")
@ApiModelProperty("主键id")
private Integer id;
/**
* 角色名称
*/
@Column(name = "name")
@ApiModelProperty(value = "角色名称")
private String name;
/**
* 等级
*/
@Column(name = "level")
@ApiModelProperty(value = "等级")
private Integer level;
/**
* 每年赠送的天数
*/
@Column(name = "number")
@ApiModelProperty(value = "每年赠送的天数")
private Integer number;
/**
* 提成比例
*/
@Column(name = "extract")
@ApiModelProperty(value = "提成比例")
private Integer extract;
/**
* 状态:0-正常;1-禁用
*/
@Column(name = "status")
@ApiModelProperty(value = "状态:0-正常;1-禁用")
private Integer status;
/**
* 创建时间
*/
@Column(name = "crt_time")
@ApiModelProperty(value = "创建时间", hidden = true )
private Long crtTime;
/**
* 更新时间
*/
@Column(name = "upd_time")
@ApiModelProperty(value = "更新时间", hidden = true )
private Long updTime;
/**
* 是否删除:0-正常;1-删除
*/
@Column(name = "is_del")
@ApiModelProperty(value = "是否删除:0-正常;1-删除")
private Integer isDel;
}
package com.github.wxiaoqi.security.admin.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.Column;
import javax.persistence.Table;
import java.io.Serializable;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/7/8 16:08
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "base_user_member_export")
public class BaseUserMemberExport implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private String username;
@Column(name = "member_level")
private Integer memberLevel;
@Column(name = "total_number")
private Integer totalNumber;
@Column(name = "rent_free_days")
private Integer rentFreeDays;
private Integer discount;
private Integer status;
@Column(name = "is_del")
private Integer isDel;
}
...@@ -46,6 +46,9 @@ public class AppUserDTO { ...@@ -46,6 +46,9 @@ public class AppUserDTO {
@ApiModelProperty(value = "用户职位") @ApiModelProperty(value = "用户职位")
private Integer positionId; private Integer positionId;
@ApiModelProperty(value = "用户职位名称")
private String positionName;
@ApiModelProperty(value = "用户来源:0-自来,1-用户邀请") @ApiModelProperty(value = "用户来源:0-自来,1-用户邀请")
private Integer source; private Integer source;
...@@ -59,7 +62,7 @@ public class AppUserDTO { ...@@ -59,7 +62,7 @@ public class AppUserDTO {
private String wxOpenid; private String wxOpenid;
private String unionid; private String unionid;
private String openid; private String openid;
private String status; private Integer status;
private String idNumber; private String idNumber;
private Integer certificationStatus; private Integer certificationStatus;
private Integer rentFreeDays; private Integer rentFreeDays;
......
...@@ -46,7 +46,7 @@ public class AppUserManageVo { ...@@ -46,7 +46,7 @@ public class AppUserManageVo {
private String nickName; private String nickName;
/** /**
* 用户来源:0-自来,1-公司人员推荐,2-用户推荐 * 用户来源:0-自来,1-用户邀请
*/ */
@Column(name = "source") @Column(name = "source")
private Integer source; private Integer source;
...@@ -57,13 +57,17 @@ public class AppUserManageVo { ...@@ -57,13 +57,17 @@ public class AppUserManageVo {
@Column(name = "inviter_account") @Column(name = "inviter_account")
private Integer inviterAccount; private Integer inviterAccount;
/** /**
* * 省代码
*/ */
@Column(name = "province_code") @Column(name = "province_code")
private String provinceCode; private String provinceCode;
/**
* 市代码
*/
@Column(name = "city_code") @Column(name = "city_code")
private String cityCode; private String cityCode;
/** /**
* 用户性别 * 用户性别
*/ */
......
...@@ -77,10 +77,4 @@ public class AppUserDetailBiz extends BaseBiz<AppUserDetailMapper, AppUserDetail ...@@ -77,10 +77,4 @@ public class AppUserDetailBiz extends BaseBiz<AppUserDetailMapper, AppUserDetail
} }
} }
...@@ -2,27 +2,23 @@ package com.github.wxiaoqi.security.admin.biz; ...@@ -2,27 +2,23 @@ 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.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.wxiaoqi.security.admin.entity.AppUserLogin; import com.github.wxiaoqi.security.admin.entity.AppUserLogin;
import com.github.wxiaoqi.security.admin.entity.User;
import com.github.wxiaoqi.security.admin.mapper.AppUserLoginMapper; import com.github.wxiaoqi.security.admin.mapper.AppUserLoginMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.constant.UserConstant; import com.github.wxiaoqi.security.common.constant.UserConstant;
import com.github.wxiaoqi.security.common.msg.TableResultResponse; import org.apache.commons.collections.CollectionUtils;
import com.github.wxiaoqi.security.common.util.Query;
import org.apache.commons.lang3.StringUtils;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example;
import java.time.Instant; import java.time.Instant;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional;
import static com.github.wxiaoqi.security.auth.common.constatns.CommonConstants.DATA_ALL_TRUE; import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
/** /**
* ${DESCRIPTION} * ${DESCRIPTION}
...@@ -35,6 +31,7 @@ import static com.github.wxiaoqi.security.auth.common.constatns.CommonConstants. ...@@ -35,6 +31,7 @@ import static com.github.wxiaoqi.security.auth.common.constatns.CommonConstants.
public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> { public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> {
@Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
@Override @Override
public void insertSelective(AppUserLogin entity) { public void insertSelective(AppUserLogin entity) {
String password = new BCryptPasswordEncoder(UserConstant.PW_ENCORDER_SALT).encode(entity.getPassword()); String password = new BCryptPasswordEncoder(UserConstant.PW_ENCORDER_SALT).encode(entity.getPassword());
...@@ -43,12 +40,12 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> { ...@@ -43,12 +40,12 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> {
} }
@Override @Override
@CacheClear(pre="user{1.username}") @CacheClear(pre = "user{1.username}")
public void updateSelectiveById(AppUserLogin entity) { public void updateSelectiveById(AppUserLogin entity) {
super.updateSelectiveById(entity); super.updateSelectiveById(entity);
} }
@CacheClear(pre="user{1.username}") @CacheClear(pre = "user{1.username}")
public void updatePasswordById(AppUserLogin entity) { public void updatePasswordById(AppUserLogin entity) {
String password = new BCryptPasswordEncoder(UserConstant.PW_ENCORDER_SALT).encode(entity.getPassword()); String password = new BCryptPasswordEncoder(UserConstant.PW_ENCORDER_SALT).encode(entity.getPassword());
entity.setPassword(password); entity.setPassword(password);
...@@ -58,11 +55,12 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> { ...@@ -58,11 +55,12 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> {
/** /**
* 根据用户名获取用户信息 * 根据用户名获取用户信息
*
* @param username * @param username
* @return * @return
*/ */
@Cache(key="user{1}") @Cache(key = "user{1}")
public AppUserLogin getUserByUsername(String username){ public AppUserLogin getUserByUsername(String username) {
AppUserLogin user = new AppUserLogin(); AppUserLogin user = new AppUserLogin();
user.setUsername(username); user.setUsername(username);
return mapper.selectOne(user); return mapper.selectOne(user);
...@@ -101,7 +99,7 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> { ...@@ -101,7 +99,7 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> {
public AppUserLogin checkeUserLogin(String username) { public AppUserLogin checkeUserLogin(String username) {
Example example = new Example(AppUserLogin.class); Example example = new Example(AppUserLogin.class);
example.createCriteria().andEqualTo("username", username).andEqualTo("isdel", 0).andEqualTo("status",0); example.createCriteria().andEqualTo("username", username).andEqualTo("isdel", 0).andEqualTo("status", 0);
List<AppUserLogin> userLoginList = mapper.selectByExample(example); List<AppUserLogin> userLoginList = mapper.selectByExample(example);
if (userLoginList != null && userLoginList.size() != 0) { if (userLoginList != null && userLoginList.size() != 0) {
return userLoginList.get(0); return userLoginList.get(0);
...@@ -111,14 +109,15 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> { ...@@ -111,14 +109,15 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> {
/** /**
* 根据微信号判断是否存在用户 * 根据微信号判断是否存在用户
*
* @param openid * @param openid
* @return * @return
*/ */
public AppUserLogin getUserByOpenid(String openid,Integer isQQ) { public AppUserLogin getUserByOpenid(String openid, Integer isQQ) {
Example example = new Example(AppUserLogin.class); Example example = new Example(AppUserLogin.class);
if(isQQ==1){ if (isQQ == 1) {
example.createCriteria().andEqualTo("openid", openid).andEqualTo("isdel", 0); example.createCriteria().andEqualTo("openid", openid).andEqualTo("isdel", 0);
}else { } else {
example.createCriteria().andEqualTo("wxOpenid", openid).andEqualTo("isdel", 0); example.createCriteria().andEqualTo("wxOpenid", openid).andEqualTo("isdel", 0);
} }
List<AppUserLogin> userLoginList = mapper.selectByExample(example); List<AppUserLogin> userLoginList = mapper.selectByExample(example);
...@@ -138,8 +137,8 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> { ...@@ -138,8 +137,8 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> {
boolean flag = true; boolean flag = true;
if (null != userLogin) { if (null != userLogin) {
Integer userid = userLogin.getId(); Integer userid = userLogin.getId();
userLogin= mapper.selectByPrimaryKey(userid); userLogin = mapper.selectByPrimaryKey(userid);
if (userLogin==null) { if (userLogin == null) {
flag = false; flag = false;
} }
} }
...@@ -147,16 +146,26 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> { ...@@ -147,16 +146,26 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> {
} }
//获取用户信息 //获取用户信息
public AppUserLogin getUserById(Integer userId){ public AppUserLogin getUserById(Integer userId) {
return mapper.selectByPrimaryKey(userId); return mapper.selectByPrimaryKey(userId);
} }
/** /**
* 登录信息更改 * 登录信息更改
*
* @param userId * @param userId
* @param ip * @param ip
*/ */
public void updateLoginInfo(Integer userId,String ip){ public void updateLoginInfo(Integer userId, String ip) {
mapper.updateLoginUserInfoById(userId,ip, Instant.now().toEpochMilli()); mapper.updateLoginUserInfoById(userId, ip, Instant.now().toEpochMilli());
}
public Map<String, Integer> findPhoneAndUserIdMapByPhones(List<String> phones) {
List<AppUserLogin> appUserLogins = mapper.selectbyPhones(phones);
Map<String, Integer> phoneAndUserIdMap = null;
if (CollectionUtils.isNotEmpty(appUserLogins)) {
phoneAndUserIdMap = appUserLogins.stream().collect(Collectors.toMap(AppUserLogin::getUsername, AppUserLogin::getId));
}
return phoneAndUserIdMap;
} }
} }
package com.github.wxiaoqi.security.admin.biz; package com.github.wxiaoqi.security.admin.biz;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.github.wxiaoqi.security.admin.dto.AppUserManageDTO; import com.github.wxiaoqi.security.admin.dto.AppUserManageDTO;
import com.github.wxiaoqi.security.admin.entity.*; import com.github.wxiaoqi.security.admin.entity.*;
import com.github.wxiaoqi.security.admin.mapper.*; import com.github.wxiaoqi.security.admin.mapper.*;
...@@ -13,6 +16,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -13,6 +16,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.transaction.interceptor.TransactionAspectSupport;
import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example;
import java.util.List;
/** /**
...@@ -35,8 +39,11 @@ public class AppUserManageBiz extends BaseBiz<AppUserDetailMapper, AppUserDetail ...@@ -35,8 +39,11 @@ public class AppUserManageBiz extends BaseBiz<AppUserDetailMapper, AppUserDetail
* @param appUserManageDTO 查询条件 * @param appUserManageDTO 查询条件
* @return * @return
*/ */
public AppUserManageVo findAllByQuery(AppUserManageDTO appUserManageDTO) { public List<AppUserManageVo> findAllByQuery(AppUserManageDTO appUserManageDTO) {
return mapper.selectAppUserManage(appUserManageDTO); Page<AppUserManageVo> page = PageHelper.startPage(appUserManageDTO.getPage(), appUserManageDTO.getLimit());
List<AppUserManageVo> appUserManageVos = mapper.selectAppUserManage(appUserManageDTO);
return PageInfo.of(appUserManageVos).getList();
} }
/** /**
......
package com.github.wxiaoqi.security.admin.biz;
import org.springframework.stereotype.Service;
import com.github.wxiaoqi.security.admin.entity.AppUserPosition;
import com.github.wxiaoqi.security.admin.mapper.AppUserPositionMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
/**
* 用户身份职位表
*
* @author libin
* @email 18178966185@163.com
* @date 2019-07-09 10:00:42
*/
@Service
public class AppUserPositionBiz extends BaseBiz<AppUserPositionMapper,AppUserPosition> {
}
\ No newline at end of file
...@@ -18,6 +18,7 @@ import org.springframework.stereotype.Service; ...@@ -18,6 +18,7 @@ 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;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.weekend.WeekendSqls; import tk.mybatis.mapper.weekend.WeekendSqls;
...@@ -56,6 +57,7 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper,BaseUserMemb ...@@ -56,6 +57,7 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper,BaseUserMemb
//用户购买会员信息更新 //用户购买会员信息更新
@Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
public void updUserMemberByUserId(UserMemberDTO userMemberDTO)throws Exception{ public void updUserMemberByUserId(UserMemberDTO userMemberDTO)throws Exception{
if(userMemberDTO==null){ if(userMemberDTO==null){
log.error("updUserMemberByUserId----参数为空"); log.error("updUserMemberByUserId----参数为空");
......
package com.github.wxiaoqi.security.admin.biz;
import com.github.wxiaoqi.security.admin.dto.BaseUserMemberExportDTO;
import com.github.wxiaoqi.security.admin.dto.UserMemberDTO;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberExport;
import com.github.wxiaoqi.security.admin.mapper.BaseUserMemberExportMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.exception.BaseException;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/7/8 16:19
*/
@Service
@Transactional
@Slf4j
public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper, BaseUserMemberExport> {
@Autowired
private UserMemberLevelBiz userMemberLevelBiz;
@Autowired
private BaseUserMemberBiz baseUserMemberBiz;
@Autowired
private AppUserLoginBiz appUserLoginBiz;
@Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
public void importUserMember(List<String[]> userMemberData){
List<BaseUserMemberExport> baseUserMemberExports = new ArrayList<>();
List<Integer> levels = userMemberData.stream().map(x -> x[1]).map(Integer::valueOf).collect(Collectors.toList());
Map<Integer, Integer> levelAndDisCountMap= userMemberLevelBiz.getUserMemberLevelAndDisCountMapByLevels(levels);
List<String> phones = userMemberData.stream().map(x -> x[0]).collect(Collectors.toList());
Map<String,Integer> phoneAndUserIdMap = appUserLoginBiz.findPhoneAndUserIdMapByPhones(phones);
for (String[] data : userMemberData) {
String phone = data[0];
String memberLevel = data[1];
String totalNumber = data[2];
String rentFreeDays = data[3];
if (phoneAndUserIdMap!=null && phoneAndUserIdMap.get(phone)!=null){
UserMemberDTO userMemberDTO = new UserMemberDTO();
userMemberDTO.setUserId(phoneAndUserIdMap.get(phone));
userMemberDTO.setMemberLevel(Integer.valueOf(memberLevel));
userMemberDTO.setDiscount(levelAndDisCountMap==null?0:(levelAndDisCountMap.get(Integer.valueOf(memberLevel))==null?0:levelAndDisCountMap.get(Integer.valueOf(memberLevel))));
userMemberDTO.setTotalNumber(Integer.valueOf(totalNumber));
userMemberDTO.setRentFreeDays(Integer.valueOf(rentFreeDays));
userMemberDTO.setIsBind(1);
try {
baseUserMemberBiz.updUserMemberByUserId(userMemberDTO);
} catch (Exception e) {
log.error("会员更新错误:【{}】",e.getMessage());
throw new BaseException(e);
}
}
BaseUserMemberExport memberExport = BaseUserMemberExport
.builder()
.username(phone)
.memberLevel(Integer.valueOf(memberLevel))
.totalNumber(Integer.valueOf(totalNumber))
.rentFreeDays(Integer.valueOf(rentFreeDays))
.discount(levelAndDisCountMap==null?0:(levelAndDisCountMap.get(Integer.valueOf(memberLevel))==null?0:levelAndDisCountMap.get(Integer.valueOf(memberLevel))))
.status(phoneAndUserIdMap == null ? 0 : (phoneAndUserIdMap.get(phone) == null ? 0 : 1))
.isDel(0)
.build();
if (log.isDebugEnabled()){
log.debug("当前组装的数据:【{}】",memberExport);
}
baseUserMemberExports.add(memberExport);
}
InsertBatch(baseUserMemberExports);
}
@Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
public void InsertBatch(List<BaseUserMemberExport> baseUserMemberExports) {
mapper.insertList(baseUserMemberExports);
}
public List<BaseUserMemberExportDTO> findUserMemberExportDataByPhoneAndHashEffective(String phone){
List<BaseUserMemberExportDTO> baseUserMemberExportDTOS = new ArrayList<>();
Example example = new Example(BaseUserMemberExport.class);
Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("username",phone);
criteria.andEqualTo("status",0);
List<BaseUserMemberExport> baseUserMemberExports = mapper.selectByExample(example);
if (CollectionUtils.isNotEmpty(baseUserMemberExports)){
BaseUserMemberExportDTO baseUserMemberExportDTO;
for (BaseUserMemberExport userMemberExport : baseUserMemberExports) {
baseUserMemberExportDTO = new BaseUserMemberExportDTO();
BeanUtils.copyProperties(userMemberExport,baseUserMemberExportDTO);
baseUserMemberExportDTOS.add(baseUserMemberExportDTO);
}
}
return baseUserMemberExportDTOS;
}
@Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
public void updateUserMemberExportDataToLoseEfficacyByPhone(String phone){
mapper.updateUserMemberExportDataToLoseEfficacyByPhone(phone);
}
}
...@@ -4,11 +4,15 @@ import com.ace.cache.annotation.Cache; ...@@ -4,11 +4,15 @@ import com.ace.cache.annotation.Cache;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel; import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
import com.github.wxiaoqi.security.admin.mapper.BaseUserMemberLevelMapper; import com.github.wxiaoqi.security.admin.mapper.BaseUserMemberLevelMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/** /**
* @author keliii * @author keliii
...@@ -26,5 +30,13 @@ public class UserMemberLevelBiz extends BaseBiz<BaseUserMemberLevelMapper,BaseUs ...@@ -26,5 +30,13 @@ public class UserMemberLevelBiz extends BaseBiz<BaseUserMemberLevelMapper,BaseUs
return mapper.selectByExample(example); return mapper.selectByExample(example);
} }
@Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
public Map<Integer,Integer> getUserMemberLevelAndDisCountMapByLevels(List<Integer> levels){
List<BaseUserMemberLevel> baseUserMemberLevels = mapper.selectUserMembersLevelByLevels(levels);
Map<Integer,Integer> levelAndDiscountMap = null;
if (CollectionUtils.isNotEmpty(baseUserMemberLevels)){
levelAndDiscountMap = baseUserMemberLevels.stream().collect(Collectors.toMap(BaseUserMemberLevel::getLevel,BaseUserMemberLevel::getDiscount));
}
return levelAndDiscountMap;
}
} }
...@@ -7,10 +7,14 @@ import com.github.wxiaoqi.security.admin.vo.AppUserVo; ...@@ -7,10 +7,14 @@ import com.github.wxiaoqi.security.admin.vo.AppUserVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
import java.util.List;
public interface AppUserDetailMapper extends Mapper<AppUserDetail> { public interface AppUserDetailMapper extends Mapper<AppUserDetail> {
//查询用户信息 //查询用户信息
public AppUserVo getUserInfo(@Param("userId") Integer userId); public AppUserVo getUserInfo(@Param("userId") Integer userId);
AppUserManageVo selectAppUserManage(AppUserManageDTO appUserManageDTO); List<AppUserManageVo> selectAppUserManage(AppUserManageDTO appUserManageDTO);
void updateUserMemberStatusByUserId(@Param("userId") Integer userId,@Param("status") Integer status);
} }
\ No newline at end of file
...@@ -6,6 +6,8 @@ import org.apache.ibatis.annotations.Param; ...@@ -6,6 +6,8 @@ import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update; import org.apache.ibatis.annotations.Update;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
import java.util.List;
public interface AppUserLoginMapper extends Mapper<AppUserLogin> { public interface AppUserLoginMapper extends Mapper<AppUserLogin> {
...@@ -17,4 +19,6 @@ public interface AppUserLoginMapper extends Mapper<AppUserLogin> { ...@@ -17,4 +19,6 @@ public interface AppUserLoginMapper extends Mapper<AppUserLogin> {
*/ */
@Update("update `app_user_login` set `last_host`=#{ip},`last_time`=#{lastTime} where `id`=#{userId}") @Update("update `app_user_login` set `last_host`=#{ip},`last_time`=#{lastTime} where `id`=#{userId}")
void updateLoginUserInfoById(@Param("userId") Integer userId,@Param("ip") String ip, @Param("lastTime") long lastTime); void updateLoginUserInfoById(@Param("userId") Integer userId,@Param("ip") String ip, @Param("lastTime") long lastTime);
List<AppUserLogin> selectbyPhones(@Param("phones") List<String> phones);
} }
\ No newline at end of file
package com.github.wxiaoqi.security.admin.mapper;
import com.github.wxiaoqi.security.admin.entity.AppUserPosition;
import tk.mybatis.mapper.common.Mapper;
/**
* 用户身份职位表
*
* @author libin
* @email 18178966185@163.com
* @date 2019-07-09 10:00:42
*/
public interface AppUserPositionMapper extends Mapper<AppUserPosition> {
}
package com.github.wxiaoqi.security.admin.mapper;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberExport;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.special.InsertListMapper;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/7/8 16:21
*/
public interface BaseUserMemberExportMapper extends Mapper<BaseUserMemberExport>, InsertListMapper<BaseUserMemberExport> {
void updateUserMemberExportDataToLoseEfficacyByPhone(@Param("phone") String phone);
}
package com.github.wxiaoqi.security.admin.mapper; package com.github.wxiaoqi.security.admin.mapper;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel; import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
import java.util.List;
/** /**
* 会员等级表 * 会员等级表
* *
...@@ -11,4 +15,5 @@ import tk.mybatis.mapper.common.Mapper; ...@@ -11,4 +15,5 @@ import tk.mybatis.mapper.common.Mapper;
*/ */
public interface BaseUserMemberLevelMapper extends Mapper<BaseUserMemberLevel> { public interface BaseUserMemberLevelMapper extends Mapper<BaseUserMemberLevel> {
List<BaseUserMemberLevel> selectUserMembersLevelByLevels(@Param("levels") List<Integer> levels);
} }
package com.github.wxiaoqi.security.admin.rest; package com.github.wxiaoqi.security.admin.rest;
import com.ace.cache.annotation.Cache; import com.ace.cache.annotation.Cache;
import com.github.wxiaoqi.security.admin.biz.AppUserBiz; import com.github.wxiaoqi.security.admin.biz.*;
import com.github.wxiaoqi.security.admin.biz.AppUserDetailBiz;
import com.github.wxiaoqi.security.admin.biz.AppUserLoginBiz;
import com.github.wxiaoqi.security.admin.biz.BaseUserMemberBiz;
import com.github.wxiaoqi.security.admin.entity.*; import com.github.wxiaoqi.security.admin.entity.*;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO; import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.admin.vo.AppUserGroups; import com.github.wxiaoqi.security.admin.vo.AppUserGroups;
...@@ -50,6 +47,9 @@ public class AppUserController extends CommonBaseController { ...@@ -50,6 +47,9 @@ public class AppUserController extends CommonBaseController {
@Autowired @Autowired
private BaseUserMemberBiz userMemberBiz; private BaseUserMemberBiz userMemberBiz;
@Autowired
AppUserPositionBiz positionBiz;
@GetMapping("page") @GetMapping("page")
public TableResultResponse list(@RequestParam Map<String, Object> params) { public TableResultResponse list(@RequestParam Map<String, Object> params) {
Query query = new Query(params); Query query = new Query(params);
...@@ -118,6 +118,8 @@ public class AppUserController extends CommonBaseController { ...@@ -118,6 +118,8 @@ public class AppUserController extends CommonBaseController {
if (userVo == null) { if (userVo == null) {
throw new Exception(); throw new Exception();
} }
Integer id= userVo.getId();
Integer positionId=userVo.getPositionId();
BeanUtils.copyProperties(userDTO,userVo); BeanUtils.copyProperties(userDTO,userVo);
if(userVo.getIsMember()!=null&&userVo.getIsMember()>0){ if(userVo.getIsMember()!=null&&userVo.getIsMember()>0){
//获取用户会员信息 //获取用户会员信息
...@@ -126,6 +128,11 @@ public class AppUserController extends CommonBaseController { ...@@ -126,6 +128,11 @@ public class AppUserController extends CommonBaseController {
BeanUtils.copyProperties(userDTO,memberVo); BeanUtils.copyProperties(userDTO,memberVo);
} }
} }
AppUserPosition userPosition=positionBiz.selectById(positionId);
if (userPosition!=null){
userDTO.setPositionName(userPosition.getName());
}
userDTO.setId(id);
return ObjectRestResponse.succ(userDTO); return ObjectRestResponse.succ(userDTO);
} }
......
package com.github.wxiaoqi.security.admin.rest; package com.github.wxiaoqi.security.admin.rest;
import com.github.pagehelper.PageInfo;
import com.github.wxiaoqi.security.admin.biz.AppUserManageBiz; import com.github.wxiaoqi.security.admin.biz.AppUserManageBiz;
import com.github.wxiaoqi.security.admin.dto.AppUserManageDTO; import com.github.wxiaoqi.security.admin.dto.AppUserManageDTO;
import com.github.wxiaoqi.security.admin.dto.BaseUserMemberVO; import com.github.wxiaoqi.security.admin.dto.BaseUserMemberVO;
...@@ -10,6 +11,8 @@ import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; ...@@ -10,6 +11,8 @@ import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController; import com.github.wxiaoqi.security.common.rest.BaseController;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List;
/** /**
* app用户管理类 * app用户管理类
* @author Administrator * @author Administrator
...@@ -22,8 +25,8 @@ public class AppUsersManageController extends BaseController<AppUserManageBiz,Ap ...@@ -22,8 +25,8 @@ public class AppUsersManageController extends BaseController<AppUserManageBiz,Ap
* 查询所有 * 查询所有
* @return * @return
*/ */
@GetMapping("/findAll") @PostMapping("/findAll")
public ObjectRestResponse<AppUserManageVo> findAllByQuery(@RequestBody AppUserManageDTO appUserManageDTO){ public ObjectRestResponse<List<AppUserManageVo>> findAllByQuery(@RequestBody AppUserManageDTO appUserManageDTO){
return ObjectRestResponse.succ(baseBiz.findAllByQuery(appUserManageDTO)); return ObjectRestResponse.succ(baseBiz.findAllByQuery(appUserManageDTO));
} }
......
...@@ -17,6 +17,12 @@ import java.lang.reflect.InvocationTargetException; ...@@ -17,6 +17,12 @@ import java.lang.reflect.InvocationTargetException;
@RestController @RestController
@RequestMapping("baseUserMember") @RequestMapping("baseUserMember")
public class BaseUserMemberController extends BaseController<BaseUserMemberBiz, BaseUserMember> { public class BaseUserMemberController extends BaseController<BaseUserMemberBiz, BaseUserMember> {
/**
* 获取用户会员
* @param userId
* @return
*/
@RequestMapping("/findOne/{userId}") @RequestMapping("/findOne/{userId}")
public ObjectRestResponse<AppUserManage> findOneByUserId(@PathVariable Integer userId){ public ObjectRestResponse<AppUserManage> findOneByUserId(@PathVariable Integer userId){
BaseUserMember oneByUserId = baseBiz.findOneByUserId(userId); BaseUserMember oneByUserId = baseBiz.findOneByUserId(userId);
......
package com.github.wxiaoqi.security.admin.rest;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/7/8 16:20
*/
public class BaseUserMemberExportController {
}
package com.github.wxiaoqi.security.admin.rest; package com.github.wxiaoqi.security.admin.rest;
import com.github.wxiaoqi.security.admin.biz.AppUserDetailBiz; import com.github.wxiaoqi.security.admin.biz.*;
import com.github.wxiaoqi.security.admin.biz.BaseUserMemberBiz; import com.github.wxiaoqi.security.admin.entity.*;
import com.github.wxiaoqi.security.admin.biz.MenuBiz;
import com.github.wxiaoqi.security.admin.biz.UserBiz;
import com.github.wxiaoqi.security.admin.entity.AppUserDetail;
import com.github.wxiaoqi.security.admin.entity.Group;
import com.github.wxiaoqi.security.admin.entity.Menu;
import com.github.wxiaoqi.security.admin.entity.User;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO; import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.admin.rpc.service.PermissionService; import com.github.wxiaoqi.security.admin.rpc.service.PermissionService;
import com.github.wxiaoqi.security.admin.vo.AppUserVo; import com.github.wxiaoqi.security.admin.vo.AppUserVo;
...@@ -54,6 +48,9 @@ public class PublicController { ...@@ -54,6 +48,9 @@ public class PublicController {
@Autowired @Autowired
private UserAuthUtil userAuthUtil; private UserAuthUtil userAuthUtil;
@Autowired
AppUserPositionBiz positionBiz;
@RequestMapping(value = "/userinfo-by-token", method = RequestMethod.GET) @RequestMapping(value = "/userinfo-by-token", method = RequestMethod.GET)
public @ResponseBody public @ResponseBody
ObjectRestResponse userinfoByToken(String token) throws Exception { ObjectRestResponse userinfoByToken(String token) throws Exception {
...@@ -82,6 +79,8 @@ public class PublicController { ...@@ -82,6 +79,8 @@ public class PublicController {
if (userVo == null) { if (userVo == null) {
throw new BaseException(ResultCode.NOTEXIST_CODE); throw new BaseException(ResultCode.NOTEXIST_CODE);
} }
Integer id= userVo.getId();
Integer positionId=userVo.getPositionId();
BeanUtils.copyProperties(userDTO,userVo); BeanUtils.copyProperties(userDTO,userVo);
if(userVo.getIsMember()!=null&&userVo.getIsMember()>0){ if(userVo.getIsMember()!=null&&userVo.getIsMember()>0){
//获取用户会员信息 //获取用户会员信息
...@@ -90,6 +89,11 @@ public class PublicController { ...@@ -90,6 +89,11 @@ public class PublicController {
BeanUtils.copyProperties(userDTO,memberVo); BeanUtils.copyProperties(userDTO,memberVo);
} }
} }
AppUserPosition userPosition=positionBiz.selectById(positionId);
if (userPosition!=null){
userDTO.setPositionName(userPosition.getName());
}
userDTO.setId(id);
return new ObjectRestResponse<AppUserDetail>().rel(true).data(userDTO); return new ObjectRestResponse<AppUserDetail>().rel(true).data(userDTO);
} }
......
package com.github.wxiaoqi.security.admin.rest; package com.github.wxiaoqi.security.admin.rest;
import com.github.wxiaoqi.security.admin.biz.BaseUserMemberBiz; import com.github.wxiaoqi.security.admin.biz.BaseUserMemberBiz;
import com.github.wxiaoqi.security.admin.biz.BaseUserMemberExportBiz;
import com.github.wxiaoqi.security.admin.dto.UserMemberDTO; 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.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.excel.ExcelImport;
import com.xxfc.platform.vehicle.common.RestResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.List; import java.util.List;
...@@ -22,8 +27,12 @@ public class UserMemberController { ...@@ -22,8 +27,12 @@ public class UserMemberController {
@Autowired @Autowired
private BaseUserMemberBiz memberBiz; private BaseUserMemberBiz memberBiz;
@Autowired
private BaseUserMemberExportBiz baseUserMemberExportBiz;
/** /**
* 购买会员 * 购买会员
*
* @param userMemberDTO * @param userMemberDTO
* @return * @return
* @throws Exception * @throws Exception
...@@ -36,6 +45,7 @@ public class UserMemberController { ...@@ -36,6 +45,7 @@ public class UserMemberController {
/** /**
* 订单更改会员 * 订单更改会员
*
* @param userId * @param userId
* @param days * @param days
* @param type 1-用户锁定下单;2-购买下单;3-取消订单 * @param type 1-用户锁定下单;2-购买下单;3-取消订单
...@@ -44,11 +54,26 @@ public class UserMemberController { ...@@ -44,11 +54,26 @@ public class UserMemberController {
*/ */
@RequestMapping(value = "/user/memberDays", method = RequestMethod.POST) @RequestMapping(value = "/user/memberDays", method = RequestMethod.POST)
public int memberDays( public int memberDays(
@RequestParam(value = "userId",defaultValue = "0")Integer userId, @RequestParam(value = "userId", defaultValue = "0") Integer userId,
@RequestParam(value = "days",defaultValue = "0")Integer days, @RequestParam(value = "days", defaultValue = "0") Integer days,
@RequestParam(value = "type",defaultValue = "1")Integer type @RequestParam(value = "type", defaultValue = "1") Integer type
) throws Exception { ) throws Exception {
return memberBiz.upMemberDays(userId,days,type); return memberBiz.upMemberDays(userId, days, type);
} }
@PostMapping("/user/export")
public ObjectRestResponse importUserMember(MultipartFile userMemberExcel) {
List<String[]> userMemberData = ExcelImport.getExcelData(userMemberExcel);
if (userMemberData.size() < 1) {
return ObjectRestResponse.createFailedResult(1001, "导入不能没数据!!!");
}
for (String[] userMemberDatum : userMemberData) {
if (userMemberDatum.length!=4){
return ObjectRestResponse.createFailedResult(1002, "数据不完整!!!");
}
}
userMemberData.remove(0);
baseUserMemberExportBiz.importUserMember(userMemberData);
return ObjectRestResponse.succ();
}
} }
...@@ -8,6 +8,8 @@ import com.github.wxiaoqi.security.admin.biz.AppUserLoginBiz; ...@@ -8,6 +8,8 @@ import com.github.wxiaoqi.security.admin.biz.AppUserLoginBiz;
import com.github.wxiaoqi.security.admin.biz.ElementBiz; import com.github.wxiaoqi.security.admin.biz.ElementBiz;
import com.github.wxiaoqi.security.admin.constant.RedisKey; import com.github.wxiaoqi.security.admin.constant.RedisKey;
import com.github.wxiaoqi.security.admin.constant.enumerate.UserSourceEnum; import com.github.wxiaoqi.security.admin.constant.enumerate.UserSourceEnum;
import com.github.wxiaoqi.security.admin.dto.BaseUserMemberExportDTO;
import com.github.wxiaoqi.security.admin.dto.UserMemberDTO;
import com.github.wxiaoqi.security.admin.entity.*; import com.github.wxiaoqi.security.admin.entity.*;
import com.github.wxiaoqi.security.admin.vo.AppUserVo; import com.github.wxiaoqi.security.admin.vo.AppUserVo;
import com.github.wxiaoqi.security.api.vo.authority.PermissionInfo; import com.github.wxiaoqi.security.api.vo.authority.PermissionInfo;
...@@ -26,19 +28,19 @@ import com.xxfc.platform.universal.dto.RegionDTO; ...@@ -26,19 +28,19 @@ import com.xxfc.platform.universal.dto.RegionDTO;
import com.xxfc.platform.universal.feign.RegionFeign; import com.xxfc.platform.universal.feign.RegionFeign;
import com.xxfc.platform.universal.feign.ThirdFeign; import com.xxfc.platform.universal.feign.ThirdFeign;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.context.request.ServletRequestAttributes;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
...@@ -49,6 +51,7 @@ import java.util.concurrent.TimeUnit; ...@@ -49,6 +51,7 @@ import java.util.concurrent.TimeUnit;
* @author keliii * @author keliii
*/ */
@Service @Service
@Transactional
@Slf4j @Slf4j
public class AppPermissionService { public class AppPermissionService {
...@@ -84,7 +87,11 @@ public class AppPermissionService { ...@@ -84,7 +87,11 @@ public class AppPermissionService {
@Autowired @Autowired
private RestTemplate restTemplate; private RestTemplate restTemplate;
@Autowired
private BaseUserMemberExportBiz baseUserMemberExportBiz;
@Autowired
private BaseUserMemberBiz baseUserMemberBiz;
public AppUserInfo validate(String username, String password) { public AppUserInfo validate(String username, String password) {
...@@ -194,7 +201,7 @@ public class AppPermissionService { ...@@ -194,7 +201,7 @@ public class AppPermissionService {
* @param headimgurl * @param headimgurl
* @param mobilecode * @param mobilecode
*/ */
@Transactional @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
public JSONObject register(String username, String password, String headimgurl, public JSONObject register(String username, String password, String headimgurl,
String nickname, String mobilecode, String openId, String unionid, Integer type) { String nickname, String mobilecode, String openId, String unionid, Integer type) {
// 判断参数和验证码 // 判断参数和验证码
...@@ -249,31 +256,33 @@ public class AppPermissionService { ...@@ -249,31 +256,33 @@ public class AppPermissionService {
rsUserDetail.setIsdel(0); rsUserDetail.setIsdel(0);
rsUserDetail.setCrtHost(getIp()); rsUserDetail.setCrtHost(getIp());
setCreateIPInfo(rsUserDetail); setCreateIPInfo(rsUserDetail);
//生成邀请码 //生成邀请码 长度改为8 不然重复率太高
rsUserDetail.setCode(UUIDUtils.genCodes(6)); rsUserDetail.setCode(UUIDUtils.genCodes(8));
appUserDetailBiz.insertSelective(rsUserDetail); appUserDetailBiz.insertSelective(rsUserDetail);
log.error("注册:新增用户详情: " + userid); log.error("注册:新增用户详情: " + userid);
//临时会员绑定
insertUserMemberByUserIdAndPhone(userid, username);
//自动登录获取优惠卷 //自动登录获取优惠卷
authCoupn(userid); authCoupn(userid);
// 登录结果要做做统一处理 // 登录结果要做做统一处理
JSONObject data = autoLogin(userid, username, headimgurl, nickname); JSONObject data = autoLogin(userid, username, headimgurl, nickname);
// 到im注册,获取返回结果 // 到im注册,获取返回结果
Map<String,Object> map=registerIm(username,appUserLogin.getPassword(),nickname); Map<String, Object> map = registerIm(username, appUserLogin.getPassword(), nickname);
if(map!=null){ if (map != null) {
Integer imUserId=Integer.parseInt(map.get("userId").toString()); Integer imUserId = Integer.parseInt(map.get("userId").toString());
//String access_token=map.get("access_token").toString(); //String access_token=map.get("access_token").toString();
String imPassword=map.get("password").toString(); String imPassword = map.get("password").toString();
if(imUserId!=null&&imUserId>0&&StringUtils.isNotBlank(imPassword)){ if (imUserId != null && imUserId > 0 && StringUtils.isNotBlank(imPassword)) {
AppUserLogin userLogin = new AppUserLogin(); AppUserLogin userLogin = new AppUserLogin();
userLogin.setId(userid); userLogin.setId(userid);
userLogin.setImPassword(imPassword); userLogin.setImPassword(imPassword);
userLogin.setImUserid(imUserId); userLogin.setImUserid(imUserId);
userLogin.setUsername(username); userLogin.setUsername(username);
appUserLoginBiz.updateSelectiveById(userLogin); appUserLoginBiz.updateSelectiveById(userLogin);
log.info(username+"----userLogin updateSelectiveById---username====="+username+"----imPassword===="+imPassword); log.info(username + "----userLogin updateSelectiveById---username=====" + username + "----imPassword====" + imPassword);
} }
//data.put("imToken",access_token); //data.put("imToken",access_token);
data.put("imUserId",imUserId); data.put("imUserId", imUserId);
} }
if (data != null) { if (data != null) {
return JsonResultUtil.createSuccessResultWithObj(data); return JsonResultUtil.createSuccessResultWithObj(data);
...@@ -309,12 +318,12 @@ public class AppPermissionService { ...@@ -309,12 +318,12 @@ public class AppPermissionService {
//userRedisTemplate.opsForValue().set("imtoken_" + userid,imtoken_,SystemConfig.REDISTOKENTIME, TimeUnit.SECONDS); //userRedisTemplate.opsForValue().set("imtoken_" + userid,imtoken_,SystemConfig.REDISTOKENTIME, TimeUnit.SECONDS);
// 返回结果 // 返回结果
// data.put("token", token); // data.put("token", token);
data.put("username", StringUtils.isNotEmpty(username)?username:userVo.getUsername()); data.put("username", StringUtils.isNotEmpty(username) ? username : userVo.getUsername());
data.put("userId", userid); data.put("userId", userid);
data.put("imUserId", userVo.getImUserid()); data.put("imUserId", userVo.getImUserid());
//更新登录时间 和 ip //更新登录时间 和 ip
String clientIp = getIp(); String clientIp = getIp();
appUserLoginBiz.updateLoginInfo(userid,clientIp); appUserLoginBiz.updateLoginInfo(userid, clientIp);
} }
...@@ -401,6 +410,7 @@ public class AppPermissionService { ...@@ -401,6 +410,7 @@ public class AppPermissionService {
userDetail.setCrtHost(getIp()); userDetail.setCrtHost(getIp());
setCreateIPInfo(userDetail); setCreateIPInfo(userDetail);
appUserDetailBiz.insertSelective(userDetail); appUserDetailBiz.insertSelective(userDetail);
} /*else { } /*else {
userDetail.setId(userVo.getId()); userDetail.setId(userVo.getId());
userDetail.setHeadimgurl(headimgurl); userDetail.setHeadimgurl(headimgurl);
...@@ -599,9 +609,9 @@ public class AppPermissionService { ...@@ -599,9 +609,9 @@ public class AppPermissionService {
//实名认证 //实名认证
@Transactional @Transactional
public ObjectRestResponse upAuthentication(Integer userid, String name,String idNumber, Integer status) { public ObjectRestResponse upAuthentication(Integer userid, String name, String idNumber, Integer status) {
log.error("userid===="+userid+"-----name===="+name+"----idNumber==="+idNumber+"---status==="+status); log.error("userid====" + userid + "-----name====" + name + "----idNumber===" + idNumber + "---status===" + status);
if (userid == null || userid == 0 || (status == 1 && StringUtils.isBlank(idNumber)&& StringUtils.isBlank(name))) { if (userid == null || userid == 0 || (status == 1 && StringUtils.isBlank(idNumber) && StringUtils.isBlank(name))) {
return ObjectRestResponse.createFailedResult(ResultCode.NULL_CODE, "参数为空"); return ObjectRestResponse.createFailedResult(ResultCode.NULL_CODE, "参数为空");
} }
try { try {
...@@ -613,16 +623,16 @@ public class AppPermissionService { ...@@ -613,16 +623,16 @@ public class AppPermissionService {
return ObjectRestResponse.createFailedResultWithObj(ResultCode.EXIST_CODE, "用户已认证", userVo.getIdNumber()); return ObjectRestResponse.createFailedResultWithObj(ResultCode.EXIST_CODE, "用户已认证", userVo.getIdNumber());
} }
if (status == 1) { if (status == 1) {
String username=userVo.getUsername(); String username = userVo.getUsername();
AppUserLogin user = new AppUserLogin(); AppUserLogin user = new AppUserLogin();
user.setId(userid); user.setId(userid);
user.setUsername(username); user.setUsername(username);
user.setIdNumber(idNumber); user.setIdNumber(idNumber);
user.setCertificationStatus(1); user.setCertificationStatus(1);
appUserLoginBiz.updateSelectiveById(user); appUserLoginBiz.updateSelectiveById(user);
if(StringUtils.isBlank(userVo.getRealname())){ if (StringUtils.isBlank(userVo.getRealname())) {
Integer id=userVo.getId(); Integer id = userVo.getId();
userVo=new AppUserVo(); userVo = new AppUserVo();
userVo.setId(id); userVo.setId(id);
userVo.setUserid(userid); userVo.setUserid(userid);
userVo.setRealname(name); userVo.setRealname(name);
...@@ -640,7 +650,7 @@ public class AppPermissionService { ...@@ -640,7 +650,7 @@ public class AppPermissionService {
//注册im //注册im
public Map<String, Object> registerIm(String username, String password, String nickname) { public Map<String, Object> registerIm(String username, String password, String nickname) {
log.error("------注册registerIm----username====="+username+"-----password==="+password+"---nickname==="+nickname); log.error("------注册registerIm----username=====" + username + "-----password===" + password + "---nickname===" + nickname);
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("telephone", username); map.put("telephone", username);
map.put("password", password); map.put("password", password);
...@@ -649,7 +659,7 @@ public class AppPermissionService { ...@@ -649,7 +659,7 @@ public class AppPermissionService {
log.error("registerIm->response:{}", response); log.error("registerIm->response:{}", response);
if (response.getStatus() == ResultCode.SUCCESS_CODE) { if (response.getStatus() == ResultCode.SUCCESS_CODE) {
String result = response.getMessage(); String result = response.getMessage();
log.error("------im注册----result======"+result); log.error("------im注册----result======" + result);
if (StringUtils.isNotBlank(result)) { if (StringUtils.isNotBlank(result)) {
JSONObject object = JSONObject.parseObject(result); JSONObject object = JSONObject.parseObject(result);
password = object.getString("password"); password = object.getString("password");
...@@ -657,7 +667,7 @@ public class AppPermissionService { ...@@ -657,7 +667,7 @@ public class AppPermissionService {
map.put("password", password); map.put("password", password);
} }
JSONObject data = object.getJSONObject("data"); JSONObject data = object.getJSONObject("data");
log.error("------im注册----data======"+data); log.error("------im注册----data======" + data);
if (data != null) { if (data != null) {
map.put("userId", data.getString("userId")); map.put("userId", data.getString("userId"));
// map.put("access_token", data.getString("access_token")); // map.put("access_token", data.getString("access_token"));
...@@ -674,7 +684,7 @@ public class AppPermissionService { ...@@ -674,7 +684,7 @@ public class AppPermissionService {
//登录im //登录im
public String loginIm(String username, String password, Integer userId) { public String loginIm(String username, String password, Integer userId) {
log.error("------登录loginIm----username====="+username+"-----password==="+password+"---userId==="+userId); log.error("------登录loginIm----username=====" + username + "-----password===" + password + "---userId===" + userId);
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("telephone", username); map.put("telephone", username);
map.put("password", password); map.put("password", password);
...@@ -684,33 +694,40 @@ public class AppPermissionService { ...@@ -684,33 +694,40 @@ public class AppPermissionService {
String access_token = ""; String access_token = "";
if (response.getStatus() == ResultCode.SUCCESS_CODE) { if (response.getStatus() == ResultCode.SUCCESS_CODE) {
String result = response.getMessage(); String result = response.getMessage();
log.error("------im登录----result======"+result); log.error("------im登录----result======" + result);
if (StringUtils.isNotBlank(result)) { if (StringUtils.isNotBlank(result)) {
JSONObject object = JSONObject.parseObject(result); JSONObject object = JSONObject.parseObject(result);
JSONObject data = object.getJSONObject("data"); JSONObject data = object.getJSONObject("data");
log.error("------im登录----data======"+data); log.error("------im登录----data======" + data);
if (data != null) { if (data != null) {
access_token = data.getString("access_token"); access_token = data.getString("access_token");
} }
} }
} }
log.error("------im登录----access_token======"+access_token); log.error("------im登录----access_token======" + access_token);
return access_token; return access_token;
} }
//自动领取新人优惠卷 //自动领取新人优惠卷
public String authCoupn(Integer userId){ public String authCoupn(Integer userId) {
try {
return activityFeign.led(userId); return activityFeign.led(userId);
} catch (Exception e) {
e.printStackTrace();
return null;
}
} }
/** /**
* 通过用户id登录*** Unbelievable! ! ! * 通过用户id登录*** Unbelievable! ! !
*
* @param uid * @param uid
* @return * @return
*/ */
public JSONObject appletLoginByUserId(Integer uid) { public JSONObject appletLoginByUserId(Integer uid) {
JSONObject data = autoLogin(uid, null, null, null); JSONObject data = autoLogin(uid, null, null, null);
if (data.getDate("userId")!=null){ if (data.getDate("userId") != null) {
return JsonResultUtil.createSuccessResultWithObj(data); return JsonResultUtil.createSuccessResultWithObj(data);
} }
return JsonResultUtil.createFailedResult(ResultCode.NOTEXIST_CODE, "用户不存在"); return JsonResultUtil.createFailedResult(ResultCode.NOTEXIST_CODE, "用户不存在");
...@@ -726,7 +743,7 @@ public class AppPermissionService { ...@@ -726,7 +743,7 @@ public class AppPermissionService {
* @param nickname * @param nickname
*/ */
@Transactional @Transactional
public JSONObject applyRegister(String username, String password, String headimgurl,String nickname,Integer small_id) { public JSONObject applyRegister(String username, String password, String headimgurl, String nickname, Integer small_id) {
// 判断参数 // 判断参数
if (StringUtils.isBlank(username) || StringUtils.isBlank(password)) { if (StringUtils.isBlank(username) || StringUtils.isBlank(password)) {
return JsonResultUtil.createFailedResult(ResultCode.NULL_CODE, "参数为空"); return JsonResultUtil.createFailedResult(ResultCode.NULL_CODE, "参数为空");
...@@ -757,37 +774,39 @@ public class AppPermissionService { ...@@ -757,37 +774,39 @@ public class AppPermissionService {
rsUserDetail.setCreatetime(now); rsUserDetail.setCreatetime(now);
rsUserDetail.setUpdatetime(now); rsUserDetail.setUpdatetime(now);
rsUserDetail.setIsdel(0); rsUserDetail.setIsdel(0);
//生成邀请码 //生成邀请码 长度改为8 不然重复率太高
rsUserDetail.setCode(UUIDUtils.genCodes(6)); rsUserDetail.setCode(UUIDUtils.genCodes(8));
//设置来源 //设置来源
rsUserDetail.setChannel(UserSourceEnum.APPLET.getCode()); rsUserDetail.setChannel(UserSourceEnum.APPLET.getCode());
rsUserDetail.setCrtHost(getIp()); rsUserDetail.setCrtHost(getIp());
setCreateIPInfo(rsUserDetail); setCreateIPInfo(rsUserDetail);
appUserDetailBiz.insertSelective(rsUserDetail); appUserDetailBiz.insertSelective(rsUserDetail);
log.error("注册:新增用户详情: " + userid); log.error("注册:新增用户详情: " + userid);
//临时会员绑定
insertUserMemberByUserIdAndPhone(userid, username);
//上线绑定 //上线绑定
relationBiz.bindByUserId(userid,small_id); relationBiz.bindByUserId(userid, small_id);
//发送短信通知用户 //发送短信通知用户
thirdFeign.sendCode(username,password,SystemConfig.TEMPLATECODE); thirdFeign.sendCode(username, password, SystemConfig.TEMPLATECODE);
// 登录结果要做做统一处理 // 登录结果要做做统一处理
JSONObject data = autoLogin(userid, username, headimgurl, nickname); JSONObject data = autoLogin(userid, username, headimgurl, nickname);
// 到im注册,获取返回结果 // 到im注册,获取返回结果
Map<String,Object> map=registerIm(username,appUserLogin.getPassword(),nickname); Map<String, Object> map = registerIm(username, appUserLogin.getPassword(), nickname);
if(map!=null){ if (map != null) {
Integer imUserId=Integer.parseInt(map.get("userId").toString()); Integer imUserId = Integer.parseInt(map.get("userId").toString());
//String access_token=map.get("access_token").toString(); //String access_token=map.get("access_token").toString();
String imPassword=map.get("password").toString(); String imPassword = map.get("password").toString();
if(imUserId!=null&&imUserId>0&&StringUtils.isNotBlank(imPassword)){ if (imUserId != null && imUserId > 0 && StringUtils.isNotBlank(imPassword)) {
AppUserLogin userLogin = new AppUserLogin(); AppUserLogin userLogin = new AppUserLogin();
userLogin.setId(userid); userLogin.setId(userid);
userLogin.setImPassword(imPassword); userLogin.setImPassword(imPassword);
userLogin.setImUserid(imUserId); userLogin.setImUserid(imUserId);
userLogin.setUsername(username); userLogin.setUsername(username);
appUserLoginBiz.updateSelectiveById(userLogin); appUserLoginBiz.updateSelectiveById(userLogin);
log.info(username+"----userLogin updateSelectiveById---username====="+username+"----imPassword===="+imPassword); log.info(username + "----userLogin updateSelectiveById---username=====" + username + "----imPassword====" + imPassword);
} }
//data.put("imToken",access_token); //data.put("imToken",access_token);
data.put("imUserId",imUserId); data.put("imUserId", imUserId);
} }
if (data != null) { if (data != null) {
return JsonResultUtil.createSuccessResultWithObj(data); return JsonResultUtil.createSuccessResultWithObj(data);
...@@ -801,27 +820,28 @@ public class AppPermissionService { ...@@ -801,27 +820,28 @@ public class AppPermissionService {
} }
/** /**
*通过小程序注册 * 通过小程序注册
*
* @param username * @param username
* @return * @return
*/ */
public JSONObject appletRegistry(String username,String headimgurl,String nickname,Integer small_id){ @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
public JSONObject appletRegistry(String username, String headimgurl, String nickname, Integer small_id) {
try { try {
// 是否已存在 // 是否已存在
AppUserLogin user = appUserLoginBiz.checkeUserLogin(username); AppUserLogin user = appUserLoginBiz.checkeUserLogin(username);
JSONObject data=new JSONObject(); JSONObject data = new JSONObject();
if (null == user) { if (null == user) {
String password="12345678"; String password = "12345678";
data=applyRegister(username,password,headimgurl,nickname,small_id); data = applyRegister(username, password, headimgurl, nickname, small_id);
}else{ } else {
Integer userid=user.getId(); Integer userid = user.getId();
//上线绑定 //上线绑定
relationBiz.bindByUserId(userid,small_id); relationBiz.bindByUserId(userid, small_id);
//登录 //登录
data=appletLoginByUserId(userid); data = appletLoginByUserId(userid);
} }
return data; return data;
} catch (Exception e) { } catch (Exception e) {
...@@ -830,40 +850,75 @@ public class AppPermissionService { ...@@ -830,40 +850,75 @@ public class AppPermissionService {
} }
} }
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
public void insertUserMemberByUserIdAndPhone(Integer userId, String phone) throws Exception {
List<BaseUserMemberExportDTO> memberExportDTOS = baseUserMemberExportBiz.findUserMemberExportDataByPhoneAndHashEffective(phone);
if (CollectionUtils.isNotEmpty(memberExportDTOS)) {
insertUserMemberByExistUserMemberExportData(userId, memberExportDTOS);
baseUserMemberExportBiz.updateUserMemberExportDataToLoseEfficacyByPhone(phone);
}
}
private void insertUserMemberByExistUserMemberExportData(Integer userId, List<BaseUserMemberExportDTO> userMemberExportDTOS) throws Exception {
UserMemberDTO userMemberDTO;
for (BaseUserMemberExportDTO userMemberExportDTO : userMemberExportDTOS) {
userMemberDTO = new UserMemberDTO();
userMemberDTO.setUserId(userId);
userMemberDTO.setRentFreeDays(userMemberExportDTO.getRentFreeDays());
userMemberDTO.setMemberLevel(userMemberExportDTO.getMemberLevel());
userMemberDTO.setTotalNumber(userMemberExportDTO.getTotalNumber());
userMemberDTO.setDiscount(userMemberExportDTO.getDiscount());
userMemberDTO.setIsBind(1);
baseUserMemberBiz.updUserMemberByUserId(userMemberDTO);
}
}
/** /**
* ip地址 信息解析 * ip地址 信息解析
*
* @param appUserDetail * @param appUserDetail
*/ */
public void setCreateIPInfo(AppUserDetail appUserDetail){ public void setCreateIPInfo(AppUserDetail appUserDetail) {
String crtHost = appUserDetail.getCrtHost(); String crtHost = appUserDetail.getCrtHost();
String ipAddress = restTemplate.getForObject(String.format("%s%s", IPAddress.BASE_IP_PARSING_URL, crtHost), String.class); if (log.isDebugEnabled()) {
log.info("----setCreateIPInfo--crtHost========"+crtHost); log.debug("解析的地址:【{}】", crtHost);
}
try {
analyticalIPByWebSiteAndIPAddress(IPAddress.BASE_IP_PARSING_URL2, crtHost, appUserDetail);
} catch (Exception e) {
try {
analyticalIPByWebSiteAndIPAddress(IPAddress.BASE_IP_PARSING_URL1, crtHost, appUserDetail);
} catch (Exception ex) {
log.error("解析地址失败:【{}】", ex.getMessage());
}
}
}
private void analyticalIPByWebSiteAndIPAddress(String url, String crtHost, AppUserDetail appUserDetail) {
String ipAddress = restTemplate.getForObject(String.format("%s%s", url, crtHost), String.class);
String data = JSONObject.parseObject(ipAddress).getString(IPAddress.BASE_DATA); String data = JSONObject.parseObject(ipAddress).getString(IPAddress.BASE_DATA);
JSONObject ipJsonObject = JSONObject.parseObject(data); JSONObject ipJsonObject = JSONObject.parseObject(data);
// Integer provinceCode = ipJsonObject.getInteger(IPAddress.PROVINCE_CODE);
// Integer cityCode = ipJsonObject.getInteger(IPAddress.CITY_CODE);
//appUserLogin.setProvinceCode(provinceCode);
//appUserLogin.setCityCode(cityCode);
String cityName = ipJsonObject.getString(IPAddress.CITY_NAME); String cityName = ipJsonObject.getString(IPAddress.CITY_NAME);
RegionDTO regionDTO = regionFeign.getRegionByCityName(cityName); RegionDTO regionDTO = regionFeign.getRegionByCityName(StringUtils.isEmpty(cityName) ? "东莞" : cityName);
if (null!=regionDTO){ if (null != regionDTO) {
appUserDetail.setProvinceCode(Integer.valueOf(String.valueOf(regionDTO.getParentId()))); appUserDetail.setProvinceCode(Integer.valueOf(String.valueOf(regionDTO.getParentId())));
appUserDetail.setCityCode(Integer.valueOf(String.valueOf(regionDTO.getId()))); appUserDetail.setCityCode(Integer.valueOf(String.valueOf(regionDTO.getId())));
} }
} }
/** /**
* @author libin * @author libin
* @version 1.0.0 * @version 1.0.0
* @dec ip 解析返回的地址信息 * @dec ip 解析返回的地址信息
*/ */
private static class IPAddress{ private static class IPAddress {
public static final String BASE_IP_PARSING_URL="http://ip.taobao.com/service/getIpInfo.php?ip="; public static final String BASE_IP_PARSING_URL1 = "http://ip.taobao.com/service/getIpInfo.php?ip=";
public static final String BASE_DATA="data"; public static final String BASE_IP_PARSING_URL2 = "https://www.mxnzp.com/api/ip/aim_ip?ip=";
public static final String PROVINCE_CODE="region_id"; public static final String BASE_DATA = "data";
public static final String CITY_CODE="city_id"; public static final String CITY_NAME = "city";
public static final String CITY_NAME="city";
public static final String PROVINCE_NAME="region";
} }
} }
...@@ -90,24 +90,43 @@ ...@@ -90,24 +90,43 @@
l.id = m.user_id l.id = m.user_id
where 1=1 where 1=1
<if test="mobile !=null || mobile ! = ''"> <!-- <if test="mobile !=null or mobile != ''">-->
<!-- and l.username=#{mobile}-->
<!-- </if>-->
<!-- <if test="channel !=null or channel != ''">-->
<!-- and d.channel=#{channel}-->
<!-- </if>-->
<!-- <if test="memberLevel !=null or memberLevel != ''">-->
<!-- and m.member_level = #{memberLevel}-->
<!-- </if>-->
<!-- <if test="registrationTimeBegin !=null or registrationTimeBegin != ''">-->
<!-- and l.createtime &gt;= #{registrationTimeBegin}-->
<!-- </if>-->
<!-- <if test="registrationTimeEnd!=null or registrationTimeEnd != ''">-->
<!-- and l.createtime &lt;= #{registrationTimeEnd}-->
<!-- </if>-->
<if test="mobile !=null">
and l.username=#{mobile} and l.username=#{mobile}
</if> </if>
<if test="channel !=null || channel != ''"> <if test="channel !=null">
and d.channel=#{channel} and d.channel=#{channel}
</if> </if>
<if test="memberLevel !=null || memberLevel != ''"> <if test="memberLevel !=null">
and m.member_level = #{memberLevel} and m.member_level = #{memberLevel}
</if> </if>
<if test="registrationTimeBegin !=null || registrationTimeBegin != ''"> <if test="registrationTimeBegin !=null">
and l.createtime &gt;= #{registrationTimeBegin} and l.createtime &gt;= #{registrationTimeBegin}
</if> </if>
<if test="registrationTimeEnd!=null || registrationTimeEnd != ''"> <if test="registrationTimeEnd !=null">
and l.createtime &lt;= #{registrationTimeEn} and l.createtime &lt;= #{registrationTimeEnd}
</if> </if>
</select> </select>
<update id="updateUserMemberStatusByUserId">
update `app_user_detail` set `is_member`={status} where `userid`=#{userId}
</update>
</mapper> </mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.github.wxiaoqi.security.admin.mapper.AppUserLoginMapper">
<select id="selectbyPhones" resultType="com.github.wxiaoqi.security.admin.entity.AppUserLogin">
select `id`,`username` from `app_user_login` where `username` in
<foreach collection="phones" item="phone" open="(" close=")" separator=",">
#{phone}
</foreach>
</select>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.github.wxiaoqi.security.admin.mapper.BaseUserMemberExportMapper">
<resultMap type="com.github.wxiaoqi.security.admin.entity.BaseUserMemberExport" id="baseUserMemberExportMap">
<id property="id" column="id"/>
<result property="discount" column="discount"/>
<result property="memberLevel" column="member_level"/>
<result property="rentFreeDays" column="rent_free_days"/>
<result property="totalNumber" column="total_number"/>
<result property="username" column="username"/>
<result property="isDel" column="is_del"/>
<result property="status" column="status"/>
</resultMap>
<update id="updateUserMemberExportDataToLoseEfficacyByPhone">
update `base_user_member_export` set `status`=1 where `username`=#{phone}
</update>
</mapper>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.github.wxiaoqi.security.admin.mapper.BaseUserMemberLevelMapper">
<select id="selectUserMembersLevelByLevels" resultType="com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel">
select `level`,`discount` from `base_user_member_level` where `level` in
<foreach collection="levels" item="level" separator="," open="(" close=")">
#{level}
</foreach>
</select>
</mapper>
\ No newline at end of file
package com.xxfc.platform.campsite.biz; package com.xxfc.platform.campsite.biz;
import com.ace.cache.annotation.Cache;
import com.ace.cache.annotation.CacheClear;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.TypeReference;
import com.github.wxiaoqi.security.common.vo.GoodDataVO; import com.github.wxiaoqi.security.common.vo.GoodDataVO;
...@@ -40,10 +38,6 @@ import java.util.stream.Collectors; ...@@ -40,10 +38,6 @@ import java.util.stream.Collectors;
@Service @Service
@Slf4j @Slf4j
public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper, CampsiteShop> { public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper, CampsiteShop> {
/**
* 地球半径,单位 km
*/
private static final double EARTH_RADIUS = 6378.137;
@Autowired @Autowired
private CampsiteShopTagBiz campsiteShopTagBiz; private CampsiteShopTagBiz campsiteShopTagBiz;
...@@ -60,36 +54,46 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper, CampsiteShop> { ...@@ -60,36 +54,46 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper, CampsiteShop> {
@Resource(name = "customRedisTemplate") @Resource(name = "customRedisTemplate")
ValueOperations<String, String> campsiteValueOperations; ValueOperations<String, String> campsiteValueOperations;
private static final String CAMPSITE_CACHE = "campsite_cache:"; /**
private static final String CAMSITE_DETAIL_CACHE="campsite:detail:cache:"; * 营地缓存前缀
*/
private static final String CAMPSITE_LIST_CACHE_PREKEY = "campsite_cache:";
private static final String CAMSITE_DETAIL_CACHE_PREKEY = "campsite:detail:cache:";
private static final String CAMPSITE_CACHE_ALL = "all"; private static final String CAMPSITE_CACHE_ALL = "all";
private static final long CAMPSITE_EXPIRE_TIME=6000; private static final long CAMPSITE_CACHE_EXPIRE_TIME = 6000;
/** /**
* 根据店铺类型查找列表 * 地球半径,单位 km
*/
private static final double EARTH_RADIUS = 6378.137;
/**
* 首页营地列表
* *
* @param type * @param page
* @param limit
* @return * @return
*/ */
public List<GoodDataVO> getAllByHome(Integer page, Integer limit) {
return mapper.findAllByHome((page - 1) * limit, limit);
}
public PageDataVO<CampsiteShopPageVo> findCampsiteShopPageByType(Integer type, Integer pageNo, Integer pageSize) { public PageDataVO<CampsiteShopPageVo> findCampsiteShopPageByType(Integer type, Integer pageNo, Integer pageSize) {
//根据type类型查找店铺 String result;
String result = null;
if (Objects.isNull(type)) { if (Objects.isNull(type)) {
result = campHashOperations.get(CAMPSITE_CACHE, CAMPSITE_CACHE_ALL); result = campHashOperations.get(CAMPSITE_LIST_CACHE_PREKEY,String.format("%s%d%d",CAMPSITE_CACHE_ALL,pageNo,pageSize));
} else { } else {
result = campHashOperations.get(CAMPSITE_CACHE, String.format("%s%d%d", String.valueOf(type), pageNo, pageSize)); result = campHashOperations.get(CAMPSITE_LIST_CACHE_PREKEY, String.format("%s%d%d", String.valueOf(type), pageNo, pageSize));
} }
if (result != null) { if (result != null) {
return JSONObject.parseObject(result,new TypeReference<PageDataVO<CampsiteShopPageVo>>(){}); return JSONObject.parseObject(result, new TypeReference<PageDataVO<CampsiteShopPageVo>>() {
});
} }
PageDataVO<CampsiteShopPageVo> campsiteShopPageDataVO = new PageDataVO<>();
PageDataVO<CampsiteShopPageDTO> pageDataVO = PageDataVO.pageInfo(pageNo, pageSize, () -> mapper.findAllCampsiteShopsByType(type)); PageDataVO<CampsiteShopPageDTO> pageDataVO = PageDataVO.pageInfo(pageNo, pageSize, () -> mapper.findAllCampsiteShopsByType(type));
List<CampsiteShopPageDTO> campsiteShopPageDTOS = pageDataVO.getData(); List<CampsiteShopPageDTO> campsiteShopPageDTOS = pageDataVO.getData();
PageDataVO<CampsiteShopPageVo> campsiteShopPageDataVO = new PageDataVO<>();
campsiteShopPageDataVO.setTotalPage(pageDataVO.getTotalPage());
campsiteShopPageDataVO.setTotalCount(pageDataVO.getTotalCount());
campsiteShopPageDataVO.setPageSize(pageDataVO.getPageSize());
campsiteShopPageDataVO.setPageNum(pageDataVO.getPageNum());
if (CollectionUtils.isEmpty(campsiteShopPageDTOS)) { if (CollectionUtils.isEmpty(campsiteShopPageDTOS)) {
campsiteShopPageDataVO.setData(new ArrayList<CampsiteShopPageVo>()); campsiteShopPageDataVO.setData(new ArrayList<CampsiteShopPageVo>());
return campsiteShopPageDataVO; return campsiteShopPageDataVO;
...@@ -97,6 +101,7 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper, CampsiteShop> { ...@@ -97,6 +101,7 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper, CampsiteShop> {
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("根据type=【{}】查询到的店铺数据:【{}】", type, campsiteShopPageDTOS); log.debug("根据type=【{}】查询到的店铺数据:【{}】", type, campsiteShopPageDTOS);
} }
List<CampsiteShopPageVo> campsiteShopPageVoList = new ArrayList<>(); List<CampsiteShopPageVo> campsiteShopPageVoList = new ArrayList<>();
campsiteShopPageDTOS = campsiteShopPageDTOS.stream().distinct().collect(Collectors.toList()); campsiteShopPageDTOS = campsiteShopPageDTOS.stream().distinct().collect(Collectors.toList());
for (CampsiteShopPageDTO campsiteShopPageDTO : campsiteShopPageDTOS) { for (CampsiteShopPageDTO campsiteShopPageDTO : campsiteShopPageDTOS) {
...@@ -105,38 +110,44 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper, CampsiteShop> { ...@@ -105,38 +110,44 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper, CampsiteShop> {
campsiteShopPageVoList.add(campsiteShopPageVo); campsiteShopPageVoList.add(campsiteShopPageVo);
} }
campsiteShopPageVoList.sort(Comparator.comparing(CampsiteShopPageVo::getHot).reversed().thenComparing(CampsiteShopPageVo::getCrtTime).reversed()); campsiteShopPageVoList.sort(Comparator.comparing(CampsiteShopPageVo::getHot).reversed().thenComparing(CampsiteShopPageVo::getCrtTime).reversed());
campsiteShopPageDataVO.setTotalPage(pageDataVO.getTotalPage());
campsiteShopPageDataVO.setTotalCount(pageDataVO.getTotalCount());
campsiteShopPageDataVO.setPageSize(pageDataVO.getPageSize());
campsiteShopPageDataVO.setPageNum(pageDataVO.getPageNum());
campsiteShopPageDataVO.setData(campsiteShopPageVoList); campsiteShopPageDataVO.setData(campsiteShopPageVoList);
if (Objects.isNull(type)) { if (Objects.isNull(type)) {
campHashOperations.put(CAMPSITE_CACHE, CAMPSITE_CACHE_ALL, JSONObject.toJSONString(campsiteShopPageDataVO)); campHashOperations.put(CAMPSITE_LIST_CACHE_PREKEY, String.format("%s%d%d",CAMPSITE_CACHE_ALL,pageNo,pageSize), JSONObject.toJSONString(campsiteShopPageDataVO));
} else { } else {
campHashOperations.put(CAMPSITE_CACHE, String.format("%s%d%d", String.valueOf(type), pageNo, pageSize), JSONObject.toJSONString(campsiteShopPageDataVO)); campHashOperations.put(CAMPSITE_LIST_CACHE_PREKEY, String.format("%s%d%d", String.valueOf(type), pageNo, pageSize), JSONObject.toJSONString(campsiteShopPageDataVO));
} }
return campsiteShopPageDataVO; return campsiteShopPageDataVO;
} }
/** /**
* 根据店铺id查询店铺详情
*
* @param id * @param id
* @param longitude 经度
* @param latitude 纬度
* @return * @return
*/ */
public CampsiteShopDetailVo findCampsiteShopDetailById(Integer id, Double longitude, Double latitude) { public CampsiteShopDetailVo findCampsiteShopDetailById(Integer id, Double longitude, Double latitude) {
String result = campsiteValueOperations.get(String.format("%s%d", CAMSITE_DETAIL_CACHE, id)); String result = campsiteValueOperations.get(String.format("%s%d", CAMSITE_DETAIL_CACHE_PREKEY, id));
if (Objects.nonNull(result)){ if (Objects.nonNull(result)) {
return JSONObject.parseObject(result,new TypeReference<CampsiteShopDetailVo>(){}); return JSONObject.parseObject(result, new TypeReference<CampsiteShopDetailVo>() {
});
} }
CampsiteShopDetailVo campsiteShopDetailVo = new CampsiteShopDetailVo(); CampsiteShopDetailVo campsiteShopDetailVo = new CampsiteShopDetailVo();
//从店铺表根据店铺id查询
CampsiteShopDetailDTO campsiteShopDetailDTO = mapper.findCampsiteShopDetailById(id); CampsiteShopDetailDTO campsiteShopDetailDTO = mapper.findCampsiteShopDetailById(id);
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("根据店铺id=【{}】查询出店铺信息【{}】", id, campsiteShopDetailDTO); log.debug("根据店铺id=【{}】查询出店铺信息【{}】", id, campsiteShopDetailDTO);
} }
if (Objects.isNull(campsiteShopDetailDTO)){ if (Objects.isNull(campsiteShopDetailDTO)) {
return campsiteShopDetailVo; return campsiteShopDetailVo;
} }
BeanUtils.copyProperties(campsiteShopDetailDTO, campsiteShopDetailVo); BeanUtils.copyProperties(campsiteShopDetailDTO, campsiteShopDetailVo);
//从轮播表根据店铺id查询
List<CampsiteShopCarouselDetailDTO> campsiteShopCarouselDTOS = campsiteShopCarouselBiz.findByCampsiteShopId(id); List<CampsiteShopCarouselDetailDTO> campsiteShopCarouselDTOS = campsiteShopCarouselBiz.findByCampsiteShopId(id);
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("根据店铺id=【{}】查询出店铺轮播图信息:【{}】", id, campsiteShopCarouselDTOS); log.debug("根据店铺id=【{}】查询出店铺轮播图信息:【{}】", id, campsiteShopCarouselDTOS);
...@@ -150,7 +161,6 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper, CampsiteShop> { ...@@ -150,7 +161,6 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper, CampsiteShop> {
}); });
} }
campsiteShopDetailVo.setCampsiteShopCarouselDetailVos(campsiteShopCarouselDetailVos); campsiteShopDetailVo.setCampsiteShopCarouselDetailVos(campsiteShopCarouselDetailVos);
//从店铺类型表根据店铺id查询 -->类型列表拼接
List<CampsiteShopTagDTO> shopTagDTOS = campsiteShopTagBiz.findByCampsiteShopId(id); List<CampsiteShopTagDTO> shopTagDTOS = campsiteShopTagBiz.findByCampsiteShopId(id);
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("根据店铺id=【{}】查询出店铺类型:【{}】", id, shopTagDTOS); log.debug("根据店铺id=【{}】查询出店铺类型:【{}】", id, shopTagDTOS);
...@@ -162,56 +172,39 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper, CampsiteShop> { ...@@ -162,56 +172,39 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper, CampsiteShop> {
log.debug("根据店铺经度=【{}】,纬度=【{}】和自己所在位置的经度=【{}】,纬度=【{}】计算出的距离:【{}km】", campsiteShopDetailDTO.getLongitude(), campsiteShopDetailDTO.getLatitude(), longitude, latitude, distance); log.debug("根据店铺经度=【{}】,纬度=【{}】和自己所在位置的经度=【{}】,纬度=【{}】计算出的距离:【{}km】", campsiteShopDetailDTO.getLongitude(), campsiteShopDetailDTO.getLatitude(), longitude, latitude, distance);
} }
campsiteShopDetailVo.setDistance(String.format("%.1f", distance)); campsiteShopDetailVo.setDistance(String.format("%.1f", distance));
campsiteValueOperations.set(String.format("%s%d",CAMSITE_DETAIL_CACHE,id),JSONObject.toJSONString(campsiteShopDetailVo)); campsiteValueOperations.set(String.format("%s%d", CAMSITE_DETAIL_CACHE_PREKEY, id), JSONObject.toJSONString(campsiteShopDetailVo));
return campsiteShopDetailVo; return campsiteShopDetailVo;
} }
/**
* 根据创建时间或营地名称来查找营地列表
*
* @param campsiteShopAdminFindDTO
* @return
*/
public PageDataVO<CampsiteShopAdminPageVo> findCampsiteShopPage(CampsiteShopAdminFindDTO campsiteShopAdminFindDTO) { public PageDataVO<CampsiteShopAdminPageVo> findCampsiteShopPage(CampsiteShopAdminFindDTO campsiteShopAdminFindDTO) {
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("查询条件:【{}】", campsiteShopAdminFindDTO); log.debug("查询条件:【{}】", campsiteShopAdminFindDTO);
} }
PageDataVO<CampsiteShopAdminPageVo> campsiteShopAdminPageDataVos = new PageDataVO<>();
//筛选时间处理
/* Long startTime = campsiteShopAdminFindDTO.getStartTime();
Long endTime = campsiteShopAdminFindDTO.getEndTime();
if (startTime==null || endTime ==null){
Long processTime = startTime!=null?startTime:(endTime!=null?endTime:null);
if (processTime!=null){
campsiteShopAdminFindDTO.setStartTime(processStartTime(processTime));
campsiteShopAdminFindDTO.setEndTime(processEndTime(processTime));
}
}else {
campsiteShopAdminFindDTO.setStartTime(processStartTime(startTime));
campsiteShopAdminFindDTO.setEndTime(processEndTime(endTime));
}*/
PageDataVO<CampsiteShopAdminPageDTO> campsiteShopAdminpageDTOPageDataVO = PageDataVO.pageInfo(campsiteShopAdminFindDTO.getPage(), campsiteShopAdminFindDTO.getLimit(), () -> mapper.findAllCampsiteShops(campsiteShopAdminFindDTO)); PageDataVO<CampsiteShopAdminPageDTO> campsiteShopAdminpageDTOPageDataVO = PageDataVO.pageInfo(campsiteShopAdminFindDTO.getPage(), campsiteShopAdminFindDTO.getLimit(), () -> mapper.findAllCampsiteShops(campsiteShopAdminFindDTO));
List<CampsiteShopAdminPageDTO> campsiteShopAdminPageDTOS = campsiteShopAdminpageDTOPageDataVO.getData(); List<CampsiteShopAdminPageDTO> campsiteShopAdminPageDTOS = campsiteShopAdminpageDTOPageDataVO.getData();
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("查询结果:【{}】", campsiteShopAdminPageDTOS); log.debug("查询结果:【{}】", campsiteShopAdminPageDTOS);
} }
PageDataVO<CampsiteShopAdminPageVo> campsiteShopAdminPageDataVos = new PageDataVO<>();
if (CollectionUtils.isEmpty(campsiteShopAdminPageDTOS)) { if (CollectionUtils.isEmpty(campsiteShopAdminPageDTOS)) {
return campsiteShopAdminPageDataVos; return campsiteShopAdminPageDataVos;
} }
//转换成营地ids
List<Integer> campsiteShopIds = campsiteShopAdminPageDTOS.stream().map(CampsiteShopAdminPageDTO::getId).collect(Collectors.toList()); List<Integer> campsiteShopIds = campsiteShopAdminPageDTOS.stream().map(CampsiteShopAdminPageDTO::getId).collect(Collectors.toList());
//根据营地ids查询营地对应的标签 键营地id 值对应的标签列表 //根据营地ids查询营地对应的标签 键营地id 值对应的标签列表
Map<Integer, List<String>> shopTagsMap = campsiteShopTagBiz.findByCampsiteShopIds(campsiteShopIds); Map<Integer, List<String>> shopIdOfTagsMap = campsiteShopTagBiz.findByCampsiteShopIds(campsiteShopIds);
if (log.isDebugEnabled()) { if (log.isDebugEnabled()) {
log.debug("营地id为:【{}】的类型【{}】", campsiteShopIds, shopTagsMap); log.debug("营地id为:【{}】的类型【{}】", campsiteShopIds, shopIdOfTagsMap);
} }
campsiteShopAdminPageDTOS = campsiteShopAdminPageDTOS.stream().peek(campsiteShopAdminPageDTO -> { campsiteShopAdminPageDTOS = campsiteShopAdminPageDTOS.stream().peek(campsiteShopAdminPageDTO -> {
if (Objects.nonNull(shopTagsMap)) { if (Objects.nonNull(shopIdOfTagsMap)) {
List<String> tagNames = shopTagsMap.get(campsiteShopAdminPageDTO.getId()); List<String> tagNames = shopIdOfTagsMap.get(campsiteShopAdminPageDTO.getId());
campsiteShopAdminPageDTO.setStoreTypeName(tagNames == null ? new ArrayList<String>() : tagNames); campsiteShopAdminPageDTO.setStoreTypeName(tagNames == null ? new ArrayList<String>() : tagNames);
} }
}).sorted(Comparator.comparing(CampsiteShopAdminPageDTO::getHot).reversed().thenComparing(CampsiteShopAdminPageDTO::getCrtTime).reversed()).collect(Collectors.toList()); }).sorted(Comparator.comparing(CampsiteShopAdminPageDTO::getHot).reversed().thenComparing(CampsiteShopAdminPageDTO::getCrtTime).reversed()).collect(Collectors.toList());
//组装数据 //组装数据
campsiteShopAdminPageDataVos.setTotalPage(campsiteShopAdminpageDTOPageDataVO.getTotalPage()); campsiteShopAdminPageDataVos.setTotalPage(campsiteShopAdminpageDTOPageDataVO.getTotalPage());
campsiteShopAdminPageDataVos.setTotalCount(campsiteShopAdminpageDTOPageDataVO.getTotalCount()); campsiteShopAdminPageDataVos.setTotalCount(campsiteShopAdminpageDTOPageDataVO.getTotalCount());
...@@ -222,12 +215,7 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper, CampsiteShop> { ...@@ -222,12 +215,7 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper, CampsiteShop> {
return campsiteShopAdminPageDataVos; return campsiteShopAdminPageDataVos;
} }
/**
* 营地保存或更新
*
* @param campsiteShopAdminDTO
* @return
*/
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED) @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
public int saveCampsiteShop(CampsiteShopAdminDTO campsiteShopAdminDTO) { public int saveCampsiteShop(CampsiteShopAdminDTO campsiteShopAdminDTO) {
CampsiteShop campsiteShop = new CampsiteShop(); CampsiteShop campsiteShop = new CampsiteShop();
...@@ -260,17 +248,12 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper, CampsiteShop> { ...@@ -260,17 +248,12 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper, CampsiteShop> {
//保存或更新 * 营地与营地类型信息 //保存或更新 * 营地与营地类型信息
List<Integer> campsiteTagDTOS = campsiteShopAdminDTO.getCampsiteTagDTOS(); List<Integer> campsiteTagDTOS = campsiteShopAdminDTO.getCampsiteTagDTOS();
campsiteShopTagBiz.saveBatch(campsiteTagDTOS, campsiteShop.getId()); campsiteShopTagBiz.saveBatch(campsiteTagDTOS, campsiteShop.getId());
redisTemplate.delete(CAMPSITE_CACHE); redisTemplate.delete(CAMPSITE_LIST_CACHE_PREKEY);
return effectRows; return effectRows;
} }
/**
* 编辑查询 public CampsiteShopAdminVO findCampsiteById(Integer id) {
*
* @param id
* @return
*/
public CampsiteShopAdminVO findByCampsiteId(Integer id) {
CampsiteShopAdminVO campsiteShopAdminVO = new CampsiteShopAdminVO(); CampsiteShopAdminVO campsiteShopAdminVO = new CampsiteShopAdminVO();
CampsiteShop campsiteShop = new CampsiteShop(); CampsiteShop campsiteShop = new CampsiteShop();
campsiteShop.setId(id); campsiteShop.setId(id);
...@@ -301,8 +284,8 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper, CampsiteShop> { ...@@ -301,8 +284,8 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper, CampsiteShop> {
} }
campsiteShopAdminVO.setCarouse(campsiteShopAdminVO.getCarouse() == null ? new ArrayList<CampsiteShopCarouselVo>() : campsiteShopAdminVO.getCarouse()); campsiteShopAdminVO.setCarouse(campsiteShopAdminVO.getCarouse() == null ? new ArrayList<CampsiteShopCarouselVo>() : campsiteShopAdminVO.getCarouse());
campsiteShopAdminVO.setCampsiteTagListVos(campsiteShopAdminVO.getCampsiteTagListVos() == null ? new ArrayList<CampsiteTagListVo>() : campsiteShopAdminVO.getCampsiteTagListVos()); campsiteShopAdminVO.setCampsiteTagListVos(campsiteShopAdminVO.getCampsiteTagListVos() == null ? new ArrayList<CampsiteTagListVo>() : campsiteShopAdminVO.getCampsiteTagListVos());
redisTemplate.delete(String.format("%s%d",CAMSITE_DETAIL_CACHE,id)); redisTemplate.delete(String.format("%s%d", CAMSITE_DETAIL_CACHE_PREKEY, id));
redisTemplate.delete(CAMPSITE_CACHE); redisTemplate.delete(CAMPSITE_LIST_CACHE_PREKEY);
return campsiteShopAdminVO; return campsiteShopAdminVO;
} }
...@@ -314,37 +297,26 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper, CampsiteShop> { ...@@ -314,37 +297,26 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper, CampsiteShop> {
*/ */
public int updateCampsiteSatus(int id) { public int updateCampsiteSatus(int id) {
int effectRows = mapper.updateCampsiteStatusById(id, 1); int effectRows = mapper.updateCampsiteStatusById(id, 1);
if (effectRows>0){ if (effectRows > 0) {
redisTemplate.delete(String.format("%s%d",CAMSITE_DETAIL_CACHE,id)); redisTemplate.delete(String.format("%s%d", CAMSITE_DETAIL_CACHE_PREKEY, id));
redisTemplate.delete(CAMPSITE_CACHE); redisTemplate.delete(CAMPSITE_LIST_CACHE_PREKEY);
} }
return effectRows; return effectRows;
} }
/**
* 上下架
* public int upperOrLowerShelves(Integer id, Integer status) {
* @param id
* @param status
* @return
*/
public int updateCampsiteSaleStatus(Integer id, Integer status) {
int effectRows = mapper.updateCampsiteSaleStatusById(id, status); int effectRows = mapper.updateCampsiteSaleStatusById(id, status);
if (effectRows>0){ if (effectRows > 0) {
redisTemplate.delete(String.format("%s%d",CAMSITE_DETAIL_CACHE,id)); redisTemplate.delete(String.format("%s%d", CAMSITE_DETAIL_CACHE_PREKEY, id));
redisTemplate.delete(CAMPSITE_CACHE); redisTemplate.delete(CAMPSITE_LIST_CACHE_PREKEY);
} }
return effectRows; return effectRows;
} }
/**
* 检验营地名称是否存在 public Boolean checkCampsiteNameExist(Integer id, String name) {
*
* @param id
* @param name
* @return
*/
public Boolean chekcCampsiteNameExist(Integer id, String name) {
int count = mapper.checkNameExist(id, name); int count = mapper.checkNameExist(id, name);
if (count == 0) { if (count == 0) {
return false; return false;
...@@ -352,14 +324,8 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper, CampsiteShop> { ...@@ -352,14 +324,8 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper, CampsiteShop> {
return true; return true;
} }
/** private long transformStartTime(Long startTime) {
* 处理开始时间 return LocalDateTime.ofInstant(new Date(startTime).toInstant(), ZoneOffset.ofHours(+8))
*
* @param time
* @return
*/
private long processStartTime(Long time) {
return LocalDateTime.ofInstant(new Date(time).toInstant(), ZoneOffset.ofHours(+8))
.withHour(0) .withHour(0)
.withMinute(0) .withMinute(0)
.withSecond(0) .withSecond(0)
...@@ -368,14 +334,9 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper, CampsiteShop> { ...@@ -368,14 +334,9 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper, CampsiteShop> {
.toEpochMilli(); .toEpochMilli();
} }
/**
* 处理结束时间 private long transformEndTime(Long endTime) {
* return LocalDateTime.ofInstant(new Date(endTime).toInstant(), ZoneOffset.ofHours(+8))
* @param time
* @return
*/
private long processEndTime(Long time) {
return LocalDateTime.ofInstant(new Date(time).toInstant(), ZoneOffset.ofHours(+8))
.withHour(23) .withHour(23)
.withMinute(59) .withMinute(59)
.withSecond(59) .withSecond(59)
...@@ -411,19 +372,4 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper, CampsiteShop> { ...@@ -411,19 +372,4 @@ public class CampsiteShopBiz extends BaseBiz<CampsiteShopMapper, CampsiteShop> {
s = s * EARTH_RADIUS; s = s * EARTH_RADIUS;
return s; return s;
} }
/**
* 首页营地列表
*
* @param page
* @param limit
* @return
*/
public List<GoodDataVO> getAllByHome(Integer page, Integer limit) {
return mapper.findAllByHome((page - 1) * limit, limit);
}
;
} }
\ No newline at end of file
...@@ -56,8 +56,9 @@ public class CampsiteShopAdminController extends BaseController<CampsiteShopBiz, ...@@ -56,8 +56,9 @@ public class CampsiteShopAdminController extends BaseController<CampsiteShopBiz,
@ApiOperation("营地上下架") @ApiOperation("营地上下架")
@PutMapping("/saleStatus") @PutMapping("/saleStatus")
public ObjectRestResponse<Void> updateSaleStatus(@RequestParam("id") Integer id,@RequestParam("status") Integer status){ public ObjectRestResponse<Void> updateSaleStatus(@RequestParam("id") Integer id,@RequestParam("status") Integer status){
int effectRows = getBaseBiz().updateCampsiteSaleStatus(id,status); int effectRows = getBaseBiz().upperOrLowerShelves(id,status);
if (effectRows>0){ if (effectRows>0){
return ObjectRestResponse.succ(); return ObjectRestResponse.succ();
} }
return ObjectRestResponse.createDefaultFail(); return ObjectRestResponse.createDefaultFail();
...@@ -66,14 +67,14 @@ public class CampsiteShopAdminController extends BaseController<CampsiteShopBiz, ...@@ -66,14 +67,14 @@ public class CampsiteShopAdminController extends BaseController<CampsiteShopBiz,
@ApiOperation("检验营地名称") @ApiOperation("检验营地名称")
@GetMapping("/exist") @GetMapping("/exist")
public ObjectRestResponse<Boolean> checkCampsiteNameExist(@RequestParam(value = "id",required = false) Integer id,@RequestParam("name") String name){ public ObjectRestResponse<Boolean> checkCampsiteNameExist(@RequestParam(value = "id",required = false) Integer id,@RequestParam("name") String name){
Boolean exist = getBaseBiz().chekcCampsiteNameExist(id,name==null?"":name.trim()); Boolean exist = getBaseBiz().checkCampsiteNameExist(id,name==null?"":name.trim());
return ObjectRestResponse.succ(exist); return ObjectRestResponse.succ(exist);
} }
@ApiOperation("营地编辑查询") @ApiOperation("营地编辑查询")
@GetMapping("/campsite/{id}") @GetMapping("/campsite/{id}")
public ObjectRestResponse<CampsiteShopAdminVO> findByCampsiteId(@PathVariable(value = "id") Integer id){ public ObjectRestResponse<CampsiteShopAdminVO> findByCampsiteId(@PathVariable(value = "id") Integer id){
CampsiteShopAdminVO campsiteShopAdminVO = getBaseBiz().findByCampsiteId(id); CampsiteShopAdminVO campsiteShopAdminVO = getBaseBiz().findCampsiteById(id);
return ObjectRestResponse.succ(campsiteShopAdminVO); return ObjectRestResponse.succ(campsiteShopAdminVO);
} }
} }
\ No newline at end of file
...@@ -15,12 +15,25 @@ ...@@ -15,12 +15,25 @@
<swagger.version>2.9.2</swagger.version> <swagger.version>2.9.2</swagger.version>
</properties> </properties>
<dependencies> <dependencies>
<dependency>
<groupId>com.github.wxiaoqi</groupId>
<artifactId>ace-admin-api</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<dependency> <dependency>
<groupId>org.springframework.cloud</groupId> <groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId> <artifactId>spring-cloud-starter-openfeign</artifactId>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-configuration-processor --> <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-configuration-processor -->
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
......
...@@ -214,4 +214,18 @@ public class BaseOrder implements Serializable { ...@@ -214,4 +214,18 @@ public class BaseOrder implements Serializable {
@ApiModelProperty(value = "乐观锁,修改版本号") @ApiModelProperty(value = "乐观锁,修改版本号")
@Version @Version
private Integer version; private Integer version;
/**
* 下单来源 1--app;2--小程序
*/
@ApiModelProperty(value = "下单来源 1--app;2--小程序")
@Column(name = "order_origin")
private Integer orderOrigin;
/**
* 支付来源 1--app;2--小程序
*/
@ApiModelProperty(value = "支付来源 1--app;2--小程序")
@Column(name = "pay_origin")
private Integer payOrigin;
} }
...@@ -15,4 +15,8 @@ public interface OrderDetail { ...@@ -15,4 +15,8 @@ public interface OrderDetail {
BaseOrder getOrder(); BaseOrder getOrder();
void setOrder(BaseOrder order); void setOrder(BaseOrder order);
Integer getOrderOrigin();
void setOrderOrigin(Integer orderOrigin);
} }
...@@ -94,6 +94,12 @@ public class AddRentVehicleDTO{ ...@@ -94,6 +94,12 @@ public class AddRentVehicleDTO{
@ApiModelProperty(value = "是否使用出租免费天数") @ApiModelProperty(value = "是否使用出租免费天数")
private Integer rentFreeDay; private Integer rentFreeDay;
/**
*
*/
@ApiModelProperty(value = "下单来源,1--app;2--小程序")
private Integer orderOrigin;
/** /**
* 优惠券ids * 优惠券ids
......
...@@ -18,6 +18,10 @@ import java.util.List; ...@@ -18,6 +18,10 @@ import java.util.List;
public class MemberBO extends OrderMemberDetail implements OrderDetail { public class MemberBO extends OrderMemberDetail implements OrderDetail {
private BaseOrder order; private BaseOrder order;
private BaseUserMemberLevel baseUserMemberLevel; private BaseUserMemberLevel baseUserMemberLevel;
/**
* 下单来源,1--app;2--小程序
*/
private Integer orderOrigin;
/** /**
* 优惠券* * 优惠券*
*/ */
......
...@@ -7,6 +7,7 @@ import com.xxfc.platform.order.entity.inter.OrderDetail; ...@@ -7,6 +7,7 @@ import com.xxfc.platform.order.entity.inter.OrderDetail;
import com.xxfc.platform.order.entity.OrderRentVehicleDetail; import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
import com.xxfc.platform.vehicle.entity.VehicleModel; import com.xxfc.platform.vehicle.entity.VehicleModel;
import com.xxfc.platform.vehicle.pojo.BookVehicleVO; import com.xxfc.platform.vehicle.pojo.BookVehicleVO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.util.List; import java.util.List;
...@@ -22,6 +23,11 @@ public class RentVehicleBO extends OrderRentVehicleDetail implements OrderDetail ...@@ -22,6 +23,11 @@ public class RentVehicleBO extends OrderRentVehicleDetail implements OrderDetail
private Integer rentFreeDay; private Integer rentFreeDay;
private AppUserDTO appUserDTO; private AppUserDTO appUserDTO;
/**
* 下单来源,1--app;2--小程序
*/
private Integer orderOrigin;
/** /**
* 优惠券* * 优惠券*
*/ */
......
...@@ -21,6 +21,10 @@ public class TourBO extends OrderTourDetail implements OrderDetail { ...@@ -21,6 +21,10 @@ public class TourBO extends OrderTourDetail implements OrderDetail {
List<TourUser> tourUsers; List<TourUser> tourUsers;
AppUserDTO appUserDTO; AppUserDTO appUserDTO;
/**
* 下单来源,1--app;2--小程序
*/
private Integer orderOrigin;
/** /**
* 优惠券* * 优惠券*
*/ */
......
...@@ -12,7 +12,7 @@ import lombok.Data; ...@@ -12,7 +12,7 @@ import lombok.Data;
* @date 2019-05-28 16:17:42 * @date 2019-05-28 16:17:42
*/ */
@Data @Data
public class RentVehicleOrderPayVO { public class OrderPayDTO {
//订单号 //订单号
@ApiModelProperty(value = "订单号") @ApiModelProperty(value = "订单号")
private String orderNo; private String orderNo;
...@@ -24,4 +24,8 @@ public class RentVehicleOrderPayVO { ...@@ -24,4 +24,8 @@ public class RentVehicleOrderPayVO {
//来源:1-app;2-小程序 //来源:1-app;2-小程序
@ApiModelProperty(value = "来源:1-app;2-小程序") @ApiModelProperty(value = "来源:1-app;2-小程序")
private Integer type; private Integer type;
//买家第三方付款账号
@ApiModelProperty(value = "买家第三方付款账号(如:openId)")
private String buyerAccount;
} }
...@@ -366,7 +366,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> { ...@@ -366,7 +366,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
* @param orderNo * @param orderNo
* @param tradeNo * @param tradeNo
*/ */
public void payNotifyHandle(String orderNo, String tradeNo) { public void payNotifyHandle(String orderNo, String tradeNo, Integer type) {
BaseOrder baseOrder = this.selectOne(new BaseOrder() {{ BaseOrder baseOrder = this.selectOne(new BaseOrder() {{
setNo(orderNo); setNo(orderNo);
}}); }});
...@@ -377,6 +377,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> { ...@@ -377,6 +377,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
setOutTradeNo(tradeNo); setOutTradeNo(tradeNo);
setHasPay(SYS_TRUE); setHasPay(SYS_TRUE);
setPayTime(System.currentTimeMillis()); setPayTime(System.currentTimeMillis());
setPayOrigin(type);
setVersion(baseOrder.getVersion()); setVersion(baseOrder.getVersion());
}}; }};
......
...@@ -3,7 +3,6 @@ package com.xxfc.platform.order.rest; ...@@ -3,7 +3,6 @@ package com.xxfc.platform.order.rest;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.github.wxiaoqi.security.admin.entity.AppUser;
import com.github.wxiaoqi.security.admin.entity.AppUserLogin; import com.github.wxiaoqi.security.admin.entity.AppUserLogin;
import com.github.wxiaoqi.security.admin.feign.UserFeign; import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.UserDTO; import com.github.wxiaoqi.security.admin.feign.dto.UserDTO;
...@@ -28,7 +27,7 @@ import com.xxfc.platform.order.pojo.order.CancelOrderDTO; ...@@ -28,7 +27,7 @@ import com.xxfc.platform.order.pojo.order.CancelOrderDTO;
import com.xxfc.platform.order.pojo.order.OrderListVo; import com.xxfc.platform.order.pojo.order.OrderListVo;
import com.xxfc.platform.order.pojo.order.OrderPageVO; import com.xxfc.platform.order.pojo.order.OrderPageVO;
import com.xxfc.platform.order.pojo.order.OrderAboutParamDTO; import com.xxfc.platform.order.pojo.order.OrderAboutParamDTO;
import com.xxfc.platform.order.pojo.pay.RentVehicleOrderPayVO; import com.xxfc.platform.order.pojo.pay.OrderPayDTO;
import com.xxfc.platform.universal.constant.DictionaryKey; import com.xxfc.platform.universal.constant.DictionaryKey;
import com.xxfc.platform.universal.entity.Dictionary; import com.xxfc.platform.universal.entity.Dictionary;
import com.xxfc.platform.universal.feign.ThirdFeign; import com.xxfc.platform.universal.feign.ThirdFeign;
...@@ -306,16 +305,16 @@ public class BaseOrderController extends CommonBaseController { ...@@ -306,16 +305,16 @@ public class BaseOrderController extends CommonBaseController {
@ResponseBody @ResponseBody
@ApiOperation(value = "订单支付") @ApiOperation(value = "订单支付")
@IgnoreClientToken @IgnoreClientToken
public ObjectRestResponse pay(@RequestBody RentVehicleOrderPayVO vo) { public ObjectRestResponse pay(@RequestBody OrderPayDTO dto) {
//查询列表数据 //查询列表数据
if (StringUtils.isBlank(BaseContextHandler.getUserID())) { if (StringUtils.isBlank(BaseContextHandler.getUserID())) {
throw new BaseException(ResultCode.AJAX_WECHAT_NOTEXIST_CODE); throw new BaseException(ResultCode.AJAX_WECHAT_NOTEXIST_CODE);
} }
OrderPayVo orderPayVo = BeanUtil.toBean(vo, OrderPayVo.class); OrderPayVo orderPayVo = BeanUtil.toBean(dto, OrderPayVo.class);
BaseOrder baseOrder = baseOrderBiz.selectOne(new BaseOrder() {{ BaseOrder baseOrder = baseOrderBiz.selectOne(new BaseOrder() {{
setNo(vo.getOrderNo()); setNo(dto.getOrderNo());
}}); }});
if (null == baseOrder || !OrderStatusEnum.ORDER_UNPAY.getCode().equals(baseOrder.getStatus())) { if (null == baseOrder || !OrderStatusEnum.ORDER_UNPAY.getCode().equals(baseOrder.getStatus())) {
...@@ -362,7 +361,7 @@ public class BaseOrderController extends CommonBaseController { ...@@ -362,7 +361,7 @@ public class BaseOrderController extends CommonBaseController {
public ObjectRestResponse notifyUrl(NotifyUrlDTO dto) { public ObjectRestResponse notifyUrl(NotifyUrlDTO dto) {
//判断是否成功,并且订单是未支付状态,则添加支付编号和修改状态 //判断是否成功,并且订单是未支付状态,则添加支付编号和修改状态
if (StrUtil.isNotBlank(dto.getOrderNo())) { if (StrUtil.isNotBlank(dto.getOrderNo())) {
baseOrderBiz.payNotifyHandle(dto.getOrderNo(), dto.getTradeNo()); baseOrderBiz.payNotifyHandle(dto.getOrderNo(), dto.getTradeNo(), dto.getType());
}else{ }else{
log.error(" exception notifyUrl : " + JSONUtil.toJsonStr(dto)); log.error(" exception notifyUrl : " + JSONUtil.toJsonStr(dto));
} }
...@@ -449,5 +448,9 @@ public class BaseOrderController extends CommonBaseController { ...@@ -449,5 +448,9 @@ public class BaseOrderController extends CommonBaseController {
//订单号 //订单号
@ApiModelProperty(value = "支付订单(流水)号") @ApiModelProperty(value = "支付订单(流水)号")
private String tradeNo; private String tradeNo;
//支付类型
@ApiModelProperty(value = "支付类型")
private Integer type;
} }
} }
...@@ -42,8 +42,12 @@ public abstract class AbstractOrderHandle<Biz extends BaseBiz, Detail extends Or ...@@ -42,8 +42,12 @@ public abstract class AbstractOrderHandle<Biz extends BaseBiz, Detail extends Or
* 创建基础订单 * 创建基础订单
* @return * @return
*/ */
public BaseOrder createBaseOrder() { public BaseOrder createBaseOrder(Integer orderOrigin) {
BaseOrder baseOrder = new BaseOrder(); BaseOrder baseOrder = new BaseOrder();
//设置下单来源
baseOrder.setOrderOrigin(orderOrigin);
//设置订单号 //设置订单号
baseOrder.setNo(OrderUtil.GetOrderNumber("", OrderUtil.APP_MID)); baseOrder.setNo(OrderUtil.GetOrderNumber("", OrderUtil.APP_MID));
//设置订单类型 //设置订单类型
...@@ -64,7 +68,7 @@ public abstract class AbstractOrderHandle<Biz extends BaseBiz, Detail extends Or ...@@ -64,7 +68,7 @@ public abstract class AbstractOrderHandle<Biz extends BaseBiz, Detail extends Or
} }
public void initDetail(Detail detail) { public void initDetail(Detail detail) {
BaseOrder order = createBaseOrder(); BaseOrder order = createBaseOrder(detail.getOrderOrigin());
detail.setOrder(order); detail.setOrder(order);
} }
......
package com.xxfc.platform.order;
import com.xxfc.platform.order.biz.BaseOrderBiz;
import com.xxfc.platform.order.entity.BaseOrder;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes={OrderApplication.class})
public class InvitationTest {
@Autowired
BaseOrderBiz baseOrderBiz;
@Test
public void test() {
BaseOrder baseOrder =baseOrderBiz.selectById(93);
baseOrder.setRefundTime(System.currentTimeMillis());
baseOrder.setVersion(baseOrder.getVersion() - 1);
baseOrderBiz.updateSelectiveById(baseOrder);
log.info("success");
}
}
...@@ -34,7 +34,7 @@ import com.alibaba.fastjson.JSONObject; ...@@ -34,7 +34,7 @@ import com.alibaba.fastjson.JSONObject;
@Slf4j @Slf4j
public class WXPay { public class WXPay {
/** /**
* 公众号支付 * JSAPI支付
* @param total_fee * @param total_fee
* @param body * @param body
* @param notify_url * @param notify_url
......
...@@ -228,7 +228,7 @@ public class WXPrepay { ...@@ -228,7 +228,7 @@ public class WXPrepay {
treeMap.put("total_fee", this.total_fee); treeMap.put("total_fee", this.total_fee);
treeMap.put("spbill_create_ip", this.spbill_create_ip); treeMap.put("spbill_create_ip", this.spbill_create_ip);
treeMap.put("trade_type", this.trade_type); treeMap.put("trade_type", this.trade_type);
treeMap.put("sub_openid", this.openid); treeMap.put("openid", this.openid);
treeMap.put("notify_url", this.notify_url); treeMap.put("notify_url", this.notify_url);
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
......
...@@ -85,8 +85,14 @@ public class OrderPayBiz extends BaseBiz<OrderPayMapper,OrderPay> { ...@@ -85,8 +85,14 @@ public class OrderPayBiz extends BaseBiz<OrderPayMapper,OrderPay> {
if(amount <= 0) { if(amount <= 0) {
amount = 1; amount = 1;
} }
Integer type=orderPayVo.getType();
String jsParam = WXPay.apppay(amount+"",orderPayVo.getBody(),"https://"+ SystemConfig.weixinHost+"/api/universal/pay/app/unauth/notify" ,trade_no,orderPayVo.getBuyerIp(),0); String jsParam="";
String notify_url="https://"+ SystemConfig.weixinHost+"/api/universal/pay/app/unauth/notify";
if(type!=null&&type==2){
jsParam=WXPay.webPay( amount+"",orderPayVo.getBody(),notify_url,trade_no,orderPayVo.getBuyerIp(), orderPayVo.getBuyerAccount());
}else {
jsParam = WXPay.apppay(amount+"",orderPayVo.getBody(),notify_url ,trade_no,orderPayVo.getBuyerIp(),0);
}
log.info("报名费回调路径jsParam:"+jsParam); log.info("报名费回调路径jsParam:"+jsParam);
if(!StringUtils.isBlank(jsParam)) if(!StringUtils.isBlank(jsParam))
{ {
...@@ -130,7 +136,8 @@ public class OrderPayBiz extends BaseBiz<OrderPayMapper,OrderPay> { ...@@ -130,7 +136,8 @@ public class OrderPayBiz extends BaseBiz<OrderPayMapper,OrderPay> {
OrderPay pay= list.get(0); OrderPay pay= list.get(0);
if(StringUtils.isNotBlank(pay.getNotifyUrl())){ if(StringUtils.isNotBlank(pay.getNotifyUrl())){
String url=pay.getNotifyUrl(); String url=pay.getNotifyUrl();
url+="&tradeNo="+orderNo; Integer type=pay.getType()==null?1:pay.getType();
url+="&tradeNo="+orderNo+"&type="+type;
log.error("---支付回调处理---orderNo======="+orderNo+"----notifyUrl===="+url); log.error("---支付回调处理---orderNo======="+orderNo+"----notifyUrl===="+url);
String result=""; String result="";
if(url.contains("https")||url.contains("HTTPS")){ if(url.contains("https")||url.contains("HTTPS")){
......
...@@ -17,16 +17,16 @@ import java.util.List; ...@@ -17,16 +17,16 @@ import java.util.List;
@FeignClient(name = "vehicle") @FeignClient(name = "vehicle")
public interface VehicleFeign { public interface VehicleFeign {
@GetMapping(value = "/vehicleModel/{id}") @GetMapping(value = "/vehicleModel/{id}")
public ObjectRestResponse<VehicleModel> get(@PathVariable("id") int id); public ObjectRestResponse<VehicleModel> get(@PathVariable(value = "id") int id);
@GetMapping(value = "/vehicleInfo/{id}") @GetMapping(value = "/vehicleInfo/{id}")
public ObjectRestResponse<Vehicle> get(@PathVariable("id") String id); public ObjectRestResponse<Vehicle> get(@PathVariable(value = "id") String id);
@RequestMapping(value = "/vehicleInfo/findById", method = RequestMethod.GET) @RequestMapping(value = "/vehicleInfo/findById", method = RequestMethod.GET)
public RestResponse<Vehicle> findById(@RequestParam("id")String id); public RestResponse<Vehicle> findById(@RequestParam(value = "id")String id);
@RequestMapping(value = "/vehicleInfo/getByIds", method = RequestMethod.GET) @RequestMapping(value = "/vehicleInfo/getByIds", method = RequestMethod.GET)
public RestResponse< List<Vehicle>> getByIds(@RequestParam("ids") List<String> id); public RestResponse< List<Vehicle>> getByIds(@RequestParam(value = "ids") List<String> id);
//修改评分 //修改评分
@RequestMapping(value = "/vehicleModel/app/addScore", method = RequestMethod.GET) @RequestMapping(value = "/vehicleModel/app/addScore", method = RequestMethod.GET)
...@@ -36,19 +36,19 @@ public interface VehicleFeign { ...@@ -36,19 +36,19 @@ public interface VehicleFeign {
public ObjectRestResponse<VehicleBookRecord> rentApplyVehicle(@RequestBody RentVehicleBookDTO rentVehicleBookDTO); public ObjectRestResponse<VehicleBookRecord> rentApplyVehicle(@RequestBody RentVehicleBookDTO rentVehicleBookDTO);
@RequestMapping(value ="/branchCompany/app/unauth/detail/{id}",method = RequestMethod.GET) @RequestMapping(value ="/branchCompany/app/unauth/detail/{id}",method = RequestMethod.GET)
public ObjectRestResponse<CompanyDetail> getCompanyDetail(@PathVariable Integer id); public ObjectRestResponse<CompanyDetail> getCompanyDetail(@PathVariable(value = "id") Integer id);
//租车拒绝预约 //租车拒绝预约
@RequestMapping(value = "/vehicleInfo/rent/book/reject/{bookRecordId}", method = RequestMethod.PUT) @RequestMapping(value = "/vehicleInfo/rent/book/reject/{bookRecordId}", method = RequestMethod.PUT)
public RestResponse<Integer> rentRejectVehicleBooking(@PathVariable Long bookRecordId); public RestResponse<Integer> rentRejectVehicleBooking(@PathVariable(value = "bookRecordId") Long bookRecordId);
//取消预约 //取消预约
@RequestMapping(value = "/vehicleInfo/unbook/4employee/{bookRecordId}", method = RequestMethod.DELETE) @RequestMapping(value = "/vehicleInfo/unbook/4employee/{bookRecordId}", method = RequestMethod.DELETE)
public RestResponse<Integer> unbookVehicle(@PathVariable Long bookRecordId); public RestResponse<Integer> unbookVehicle(@PathVariable(value = "bookRecordId") Long bookRecordId);
//通过预约 //通过预约
@RequestMapping(value = "/vehicleInfo/book/4employee/prove/{bookRecordId}", method = RequestMethod.PUT) @RequestMapping(value = "/vehicleInfo/book/4employee/prove/{bookRecordId}", method = RequestMethod.PUT)
public RestResponse<Integer> proveVehicleBooking(@PathVariable Long bookRecordId); public RestResponse<Integer> proveVehicleBooking(@PathVariable(value = "bookRecordId") Long bookRecordId);
//获取分公司列表 //获取分公司列表
@GetMapping("/branchCompany/all") @GetMapping("/branchCompany/all")
......
package com.xxfc.platform.vehicle.pojo; package com.xxfc.platform.vehicle.pojo;
import com.xxfc.platform.vehicle.entity.VehiclePlatCata;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.util.List;
import java.util.Map;
/** /**
...@@ -23,5 +26,8 @@ public class VehicleModelQueryCondition { ...@@ -23,5 +26,8 @@ public class VehicleModelQueryCondition {
private String takeALieTheNumber; private String takeALieTheNumber;
@ApiModelProperty(value = "是否删除") @ApiModelProperty(value = "是否删除")
private Integer isDel; private Integer isDel;
@ApiModelProperty("分类逗号分割")
String catasStr;
@ApiModelProperty(value = "分类列表", hidden = true)
Map<Integer, List<VehiclePlatCata>> catas;
} }
...@@ -142,7 +142,7 @@ public class VehicleModelVo extends VehicleModel implements Serializable { ...@@ -142,7 +142,7 @@ public class VehicleModelVo extends VehicleModel implements Serializable {
@Column(name = "rent_discount_price") @Column(name = "rent_discount_price")
@ApiModelProperty(value = "租车优惠价格") @ApiModelProperty(value = "租车优惠价格")
private String RentDiscountPrice; private String rentDiscountPrice;
@Column(name = "buy_price") @Column(name = "buy_price")
@ApiModelProperty(value = "购买价格") @ApiModelProperty(value = "购买价格")
......
...@@ -10,6 +10,7 @@ import com.xxfc.platform.vehicle.entity.Vehicle; ...@@ -10,6 +10,7 @@ import com.xxfc.platform.vehicle.entity.Vehicle;
import com.xxfc.platform.vehicle.pojo.VehicleModelQueryCondition; import com.xxfc.platform.vehicle.pojo.VehicleModelQueryCondition;
import com.xxfc.platform.vehicle.pojo.VehicleModelVo; import com.xxfc.platform.vehicle.pojo.VehicleModelVo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.xxfc.platform.vehicle.entity.VehicleModel; import com.xxfc.platform.vehicle.entity.VehicleModel;
...@@ -20,6 +21,7 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport; ...@@ -20,6 +21,7 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.weekend.WeekendSqls; import tk.mybatis.mapper.weekend.WeekendSqls;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -51,9 +53,6 @@ public class VehicleModelBiz extends BaseBiz<VehicleModelMapper, VehicleModel> { ...@@ -51,9 +53,6 @@ public class VehicleModelBiz extends BaseBiz<VehicleModelMapper, VehicleModel> {
*/ */
public ObjectRestResponse findVehicleModelPage(VehicleModelQueryCondition vmqc) { public ObjectRestResponse findVehicleModelPage(VehicleModelQueryCondition vmqc) {
try { try {
PageDataVO<VehicleModelVo> mPageDataVO = PageDataVO.pageInfo(vmqc.getPage(), PageDataVO<VehicleModelVo> mPageDataVO = PageDataVO.pageInfo(vmqc.getPage(),
vmqc.getLimit(), () -> mapper.findVehicleModelPage(vmqc)); vmqc.getLimit(), () -> mapper.findVehicleModelPage(vmqc));
...@@ -100,7 +99,8 @@ public class VehicleModelBiz extends BaseBiz<VehicleModelMapper, VehicleModel> { ...@@ -100,7 +99,8 @@ public class VehicleModelBiz extends BaseBiz<VehicleModelMapper, VehicleModel> {
* @return * @return
*/ */
public List<GoodDataVO> goodList(Integer page, Integer limit) { public List<GoodDataVO> goodList(Integer page, Integer limit) {
List<GoodDataVO> goodDataVOS = Arrays.asList(); List<GoodDataVO> goodDataVOS = new ArrayList<>();
/*设置分页*/ /*设置分页*/
Page<VehicleModel> pages = PageHelper.startPage(page, limit); Page<VehicleModel> pages = PageHelper.startPage(page, limit);
...@@ -110,20 +110,26 @@ public class VehicleModelBiz extends BaseBiz<VehicleModelMapper, VehicleModel> { ...@@ -110,20 +110,26 @@ public class VehicleModelBiz extends BaseBiz<VehicleModelMapper, VehicleModel> {
.andEqualTo(VehicleModel::getIsdel, 0) .andEqualTo(VehicleModel::getIsdel, 0)
.andEqualTo(VehicleModel::getHotSign,1) .andEqualTo(VehicleModel::getHotSign,1)
).orderByDesc("id").build(); ).orderByDesc("id").build();
selectByExample(example); List<VehicleModel> vehicleModels = selectByExample(example);
if (CollectionUtils.isEmpty(vehicleModels)) {
return null;
}
PageInfo<VehicleModel> pageInfo= PageInfo.of(pages.getResult()); PageInfo<VehicleModel> pageInfo= PageInfo.of(vehicleModels);
List<VehicleModel> vehicleModelList = pageInfo.getList(); List<VehicleModel> vehicleModelList = pageInfo.getList();
/*遍历车型列表设置List<GoodDataVO>*/ /*遍历车型列表设置List<GoodDataVO>*/
for (VehicleModel vm : vehicleModelList) { vehicleModelList.forEach(vm ->{
GoodDataVO goodDataVO = new GoodDataVO(); GoodDataVO goodDataVO = new GoodDataVO();
goodDataVO.setId(vm.getId()); goodDataVO.setId(vm.getId());
goodDataVO.setImgUrl(vm.getPicture()); goodDataVO.setImgUrl(vm.getPicture());
goodDataVO.setName(vm.getName()); goodDataVO.setName(vm.getName());
goodDataVO.setName1(vm.getKeyword()); goodDataVO.setName1(vm.getKeyword());
goodDataVO.setPrice(String.valueOf(vm.getBuyPrice())); goodDataVO.setPrice(String.valueOf(vm.getBuyPrice()));
goodDataVOS.add(goodDataVO); System.out.println("++++++++++++++++++++++++++++++++++++++"+goodDataVO+"++++++++++++++++++++++++++++++++++++++");
} goodDataVOS.add(goodDataVO);});
// for (VehicleModel vm : vehicleModelList) {
//
// }
return goodDataVOS; return goodDataVOS;
} }
} }
\ No newline at end of file
...@@ -33,7 +33,10 @@ import tk.mybatis.mapper.entity.Example; ...@@ -33,7 +33,10 @@ import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.weekend.WeekendSqls; import tk.mybatis.mapper.weekend.WeekendSqls;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -480,4 +483,20 @@ public class VehiclePlatCataBiz extends BaseBiz<VehiclePlatCataMapper, VehiclePl ...@@ -480,4 +483,20 @@ public class VehiclePlatCataBiz extends BaseBiz<VehiclePlatCataMapper, VehiclePl
updateSelectiveById(vehiclePlatCata); updateSelectiveById(vehiclePlatCata);
return ObjectRestResponse.succ(); return ObjectRestResponse.succ();
} }
public Map<Integer, List<VehiclePlatCata>> groupCatasByParent(String catasStr) {
List<Integer> catasIds = Pattern.compile(",").splitAsStream(catasStr).map((s) -> Integer.parseInt(s)).collect(Collectors.toList());
List<VehiclePlatCata> catas = selectByExample(new Example.Builder(VehiclePlatCata.class)
.where(WeekendSqls.<VehiclePlatCata>custom().andIn(VehiclePlatCata::getId, catasIds)).build());
Map<Integer, List<VehiclePlatCata>> vpcMap = new HashMap<Integer, List<VehiclePlatCata>>();
for (VehiclePlatCata vpc : catas) {
List<VehiclePlatCata> vpcs = vpcMap.get(vpc.getParentId());
if (null == vpcs) {
vpcs = new ArrayList<VehiclePlatCata>();
}
vpcs.add(vpc);
vpcMap.put(vpc.getParentId(), vpcs);
}
return vpcMap;
}
} }
...@@ -363,23 +363,11 @@ public class VehicleController extends BaseController<VehicleBiz> { ...@@ -363,23 +363,11 @@ public class VehicleController extends BaseController<VehicleBiz> {
//根据时间 获得 可用车辆 //根据时间 获得 可用车辆
//结合车型 //结合车型
if (StringUtils.isNotBlank(dto.getCatasStr())) { if (StringUtils.isNotBlank(dto.getCatasStr())) {
List<Integer> catasIds = Pattern.compile(",").splitAsStream(dto.getCatasStr()).map((s) -> Integer.parseInt(s)).collect(Collectors.toList()); dto.setCatas(vehiclePlatCataBiz.groupCatasByParent(dto.getCatasStr()));
List<VehiclePlatCata> catas = vehiclePlatCataBiz.selectByExample(new Example.Builder(VehiclePlatCata.class)
.where(WeekendSqls.<VehiclePlatCata>custom().andIn(VehiclePlatCata::getId, catasIds)).build());
Map<Integer, List<VehiclePlatCata>> vpcMap = new HashMap<Integer, List<VehiclePlatCata>>();
for (VehiclePlatCata vpc : catas) {
List<VehiclePlatCata> vpcs = vpcMap.get(vpc.getParentId());
if (null == vpcs) {
vpcs = new ArrayList<VehiclePlatCata>();
}
vpcs.add(vpc);
vpcMap.put(vpc.getParentId(), vpcs);
}
dto.setCatas(vpcMap);
} }
//设置显示是否有车 //设置显示是否有车
dto.setYearNo4Where(Boolean.TRUE); dto.setYearNo4Where(Boolean.TRUE);
return new ObjectRestResponse<>().data(vehicleBiz.searchUsableModel(dto)).rel(true); return ObjectRestResponse.succ(vehicleBiz.searchUsableModel(dto));
} }
/** /**
......
...@@ -107,6 +107,12 @@ public class VehicleModelController extends BaseController<VehicleModelBiz, Vehi ...@@ -107,6 +107,12 @@ public class VehicleModelController extends BaseController<VehicleModelBiz, Vehi
if (vmqc == null || vmqc.getPage() == null || vmqc.getLimit() == null || vmqc.getPage() < 0 || vmqc.getLimit() <= 0) { if (vmqc == null || vmqc.getPage() == null || vmqc.getLimit() == null || vmqc.getPage() < 0 || vmqc.getLimit() <= 0) {
return ObjectRestResponse.createDefaultFail(); return ObjectRestResponse.createDefaultFail();
} }
//结合车型
if (org.apache.commons.lang3.StringUtils.isNotBlank(vmqc.getCatasStr())) {
vmqc.setCatas(vehiclePlatCataBiz.groupCatasByParent(vmqc.getCatasStr()));
}
return vehicleModelBiz.findVehicleModelPage(vmqc); return vehicleModelBiz.findVehicleModelPage(vmqc);
} }
......
...@@ -28,6 +28,21 @@ ...@@ -28,6 +28,21 @@
<if test="takeALieTheNumber!=null and takeALieTheNumber!=''"> <if test="takeALieTheNumber!=null and takeALieTheNumber!=''">
AND EXISTS(SELECT vc2.vehicle_model_id FROM vehicle_cata vc2 WHERE vc2.cata_id=#{takeALieTheNumber} AND vmqc.id=vc2.vehicle_model_id) AND EXISTS(SELECT vc2.vehicle_model_id FROM vehicle_cata vc2 WHERE vc2.cata_id=#{takeALieTheNumber} AND vmqc.id=vc2.vehicle_model_id)
</if> </if>
<if test="catas != null">
AND ( 1
<foreach collection="catas" index="key" item="cataList">
&amp; (
<foreach collection="cataList" index="cIndex" item="cata">
<if test=" cIndex != 0">
|
</if>
(case when FIND_IN_SET(#{cata.id},vmqc.config) > 0 then 1 else 0 end)
</foreach>
)
</foreach>
) > 0
</if>
ORDER BY vmqc.id ASC ORDER BY vmqc.id ASC
</select> </select>
......
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