Commit 1faaf47b authored by hanfeng's avatar hanfeng

解决冲突

parents 77c0cfca dc1a1ddf
package com.github.wxiaoqi.security.common.util;
import java.util.UUID;
import java.util.*;
/**
* Created by ace on 2017/9/27.
......@@ -35,13 +35,40 @@ public class UUIDUtils {
public static String genCodes(int length) {
StringBuffer shortBuffer = new StringBuffer();
String uuid = UUID.randomUUID().toString().replace("-", "");
//System.out.println(uuid);
for (int i = 0; i < length; i++) {
String str = uuid.substring(i * 4, i * 4 + 4);
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();
}
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);
}
}
......@@ -61,6 +61,35 @@ public class SystemConfig {
// 存放退款证书目录
public static String APICLIENT_CERT = SystemProperty.getConfig("APICLIENT_CERT");
/**
* 支付宝支付相关配置
*/
public static final String ALIPAY_APPID = SystemProperty.getConfig("ALIPAY_APPID");
public static final String ALIPAY_PID = SystemProperty.getConfig("ALIPAY_PID");
public static final String ALIPAY_PUBLIC_KEY = SystemProperty.getConfig("ALIPAY_PUBLIC_KEY");
public static final String ALIPAY_ACOUNT = SystemProperty.getConfig("ALIPAY_ACOUNT");
public static final String ALIPAY_PRIVATE_KEY = SystemProperty.getConfig("ALIPAY_PRIVATE_KEY");
/**
* 交易创建,等待买家付款
*/
public static final String ALIPAY_WAIT_BUYER_PAY = "WAIT_BUYER_PAY";
/**
* 未付款交易超时关闭,或支付完成后全额退款
*/
public static final String ALIPAY_TRADE_CLOSED = "TRADE_CLOSED";
/**
* 交易支付成功
*/
public static final String ALIPAY_TRADE_SUCCESS = "TRADE_SUCCESS";
/**
* 交易结束,不可退款
*/
public static final String ALIPAY_TRADE_FINISHED = "TRADE_FINISHED";
public static final String ALIPAY_PAY_BASE_URL = "https://openapi.alipay.com";
public static final String ALIPAY = "alipay";
public static final String WXPAY = "wxpay";
}
......@@ -35,3 +35,10 @@ APP_TRADE_TYPE=APP
weixinHost=xxtest.upyuns.com
#证书存放目录
APICLIENT_CERT=D:\\cert\\1514583081_20181017_cert.p12
#支付宝配置
ALIPAY_APPID=2019070965781964
ALIPAY_PID=2088531634846583
ALIPAY_PUBLIC_KEY=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAj/EMaAD2iJP3I5M0g6pssDDe3RxF5I3ECM/Kz/btM0RiW2g5oRrHSjtGuos9l1QhQAY0SrVqa2eZdPKUB3ZqJdimQiXr3dbiMvG9UCs8vVUcrtCHCBjDllKQLiYzboxE6JLXyfII5tIXbFKiGyiEyXQnffUhQ9uGyT2EGWGecz6PLIjDdbwpxuzF2gIUzV3bPxb+0axejBxJ/3zKnWrsbyq2nvs8XrzrR2CEggNqgqsKzaacCL1yZjXzQRseSnCMtgSxR5W5afbdY0zqbUlLHUrUZ8ycCRC0ECuI9HyTbuqtdWHEZH7vIH44wEQWZPDRhMfMZvzmPUgpTWZLv5BtaQIDAQAB
ALIPAY_ACOUNT=xxfc810@163.com
ALIPAY_PRIVATE_KEY=MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC3bANag6my6pjHWqwnSCffRonvOXE6uQgNNb+V23PV55zfcuC+jIgl9BRrIf4tax5f2itfDmlOdAX6mK8WJ620SHg777Q2KlgNTa25ta3xiEfgkb01SX9VyiaLPpP2TEo5LhhRcT+cUomIufQbVbm/jS8mRQ0qBoofbMfr7n9fBSiVDx/QX07qcJTc/MGCy79H5gUiy2fTOEMhTuNtPkoU3az7jXMQ5U/33ILFAJzPCMNJvQnCYxs/y5loxxHdVqV8FnuCWGEWNViuuBtFRVRNXkrs/x99nF0V5/FHnOZzdM3SWrKCpA/52G5QQrbhZXUhMyCs9stXvH+iVUC1JJ9DAgMBAAECggEAOGRf/5MdOGHCCQCKjyUzBQVV4RPDCS/cFtughH1M9sXXyCc0i8D/FtQc9vcjg2k8lHGqBfaTT8iCEhKhOemHETd6p8rBmCmamrR4JfGCghDJMHT+PATVvlWBViwuJ3o7E6tlVJzB1tjVahDpyQGpMwhAJ77xFiueiZzTNmlEBb02ByCG95vkBV7NQT8yO9/1i3eq/tMoY7FfJP5O4LQ41RmqU9TVaAnTfuE6gs5hJboNGbmSMs2w2M0tldibmWcsQsFFPLwbUz042czSVb9J7lsGJjCtsaBeUiJ15y66W9D3587JJar9p+EyA2LNbolgrrNi2AA9KU5wEW2w8XyoOQKBgQDZamXDQZK3N5E46Hp/79o0Q99jqj9sL/HCYB4+Z8dG/Mgs43HHpgd+gHVeSOgxXS7RxsLyjCsM97ysWk7sbafvqtsnYmPU2MzumykVVpgWO6dpBcwmf2Ygk2i2W77oEqIi2IUmzkvDhw9C8A8/oh+IuoyRouPGRHpykAF+uXKVhwKBgQDX+TfQDDPniSnA9kTlW5I44glRgogA4xJtAYLtEr2fH9Pys+lkOyRqQH5wbJVj27jzJ0lffNyyMxgbZ8KRiH+3qRa8wNazwwXlXmj4DQWZedkULOpgMdU4EbbkTQRU3onEpMAZhAmVvAV1KTozs4RKi+1fFZ9V6ZOtmvapNJuXZQKBgQC7Xb0rQ3SMHwAxGfCQFwVma2O2AX883iisCaemwkrze1+Lh8uDcisdMtlzEsO/3v09XdydqHxlZY6cvgssJ+hFXGoXi+xa/yfFLcR/FixlZK2Gja99MeeyhTcFiRWB7KT8ALrnUXvrmpZlanrJrQ8eBx6jV8ySDmu0FTSkoG8GOwKBgE5toxX7CHJBPhdjlvtPOJdNhiLCaw8fZpaNIPVkg9WgIkCVkuCiFYQ8LW44EDv2E4DBOITje+V+Zne1Q1PEJNUWIzqiMJWQ8bgsg6PoXqswM2N/OBF8pzg4PplDWppTQeZWCah6aVylrbmxIgCaZSUJEUchO/5f1xAJIR+rCgF9AoGBAKJVVbrKPWshQ4cTL6VzanowjpWCRUDR22Oz3nKIdRl1FX+DTXYE4Dwl38iiNHOJptS7VjU553BUZl7HxCmSBWUmtnV78NNnRKrFVUhQhIRYBjMn1W6MD0jlBkky6yXmXkPtlqU6vU19RzGrvv6fDdBf6v4AkD8kWXiH5j4XEiQS
......@@ -22,13 +22,10 @@ import java.io.Serializable;
@Table(name = "base_user_member_export")
public class BaseUserMemberExportDTO implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private String username;
private Integer memberLevel;
private Integer totalNumber;
private Integer rentFreeDays;
private Integer discount;
private Integer status;
private Integer isDel;
}
......@@ -53,6 +53,10 @@ public class UserMemberDTO {
@ApiModelProperty(value = "折扣")
private Integer discount;
//购买次数
@ApiModelProperty(value = "购买次数")
private Integer buyCount;
......
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;
}
......@@ -46,6 +46,9 @@ public class AppUserDTO {
@ApiModelProperty(value = "用户职位")
private Integer positionId;
@ApiModelProperty(value = "用户职位名称")
private String positionName;
@ApiModelProperty(value = "用户来源:0-自来,1-用户邀请")
private Integer source;
......@@ -69,6 +72,8 @@ public class AppUserDTO {
private Integer lockDays;
private Integer discount;
private Integer memberLevel;
//图标
private String icon;
private Integer memberNo;
private Long cardLeave;
private Integer isBind;
......
......@@ -9,6 +9,7 @@ import com.github.wxiaoqi.security.common.constant.UserConstant;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example;
......@@ -30,6 +31,7 @@ import java.util.stream.Collectors;
public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> {
@Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
@Override
public void insertSelective(AppUserLogin entity) {
String password = new BCryptPasswordEncoder(UserConstant.PW_ENCORDER_SALT).encode(entity.getPassword());
......
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
......@@ -77,9 +77,13 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper,BaseUserMemb
if(freeDays==null||freeDays==0){
freeDays=totalNumber;
}
Integer buyCount=1;
if(userMemberDTO.getBuyCount()!=null){
buyCount=userMemberDTO.getBuyCount();
}
if(userMemberVo==null){
baseUserMember.setRentFreeDays(freeDays);
baseUserMember.setBuyCount(1);
baseUserMember.setBuyCount(buyCount);
insertSelective(baseUserMember);
}else {
Integer discount=userMemberVo.getDiscount()==null?0:userMemberVo.getDiscount();
......@@ -95,7 +99,7 @@ public class BaseUserMemberBiz extends BaseBiz<BaseUserMemberMapper,BaseUserMemb
baseUserMember.setId(userMemberVo.getId());
totalNumber+=userMemberVo.getTotalNumber()==null?0:userMemberVo.getTotalNumber();
freeDays+=userMemberVo.getRentFreeDays()==null?0:userMemberVo.getRentFreeDays();
baseUserMember.setBuyCount(userMemberVo.getBuyCount()+1);
baseUserMember.setBuyCount(userMemberVo.getBuyCount()+buyCount);
baseUserMember.setTotalNumber(totalNumber);
baseUserMember.setRentFreeDays(freeDays);
getMyBiz().updateSelectiveById(baseUserMember);
......
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;
......@@ -23,6 +27,7 @@ import java.util.stream.Collectors;
* @data 2019/7/8 16:19
*/
@Service
@Transactional
@Slf4j
public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper, BaseUserMemberExport> {
......@@ -37,7 +42,7 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper,
@Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
public void importUserMember(List<String[]> userMemberData){
public int importUserMember(List<String[]> userMemberData){
List<BaseUserMemberExport> baseUserMemberExports = new ArrayList<>();
List<Integer> levels = userMemberData.stream().map(x -> x[1]).map(Integer::valueOf).collect(Collectors.toList());
......@@ -59,6 +64,7 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper,
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) {
......@@ -84,10 +90,35 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper,
}
InsertBatch(baseUserMemberExports);
return baseUserMemberExports.size();
}
@Transactional(rollbackFor = Exception.class)
@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);
}
}
......@@ -30,6 +30,16 @@ public class UserMemberLevelBiz extends BaseBiz<BaseUserMemberLevelMapper,BaseUs
return mapper.selectByExample(example);
}
public BaseUserMemberLevel getLevel(Integer level) {
Example example=new Example(BaseUserMemberLevel.class);
example.createCriteria().andEqualTo("isdel",0).andEqualTo("level",level);
List<BaseUserMemberLevel> list=mapper.selectByExample(example);
if (list.size()>0){
return list.get(0);
}
return null;
}
@Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
public Map<Integer,Integer> getUserMemberLevelAndDisCountMapByLevels(List<Integer> levels){
List<BaseUserMemberLevel> baseUserMemberLevels = mapper.selectUserMembersLevelByLevels(levels);
......
......@@ -15,4 +15,6 @@ public interface AppUserDetailMapper extends Mapper<AppUserDetail> {
public AppUserVo getUserInfo(@Param("userId") Integer userId);
List<AppUserManageVo> selectAppUserManage(AppUserManageDTO appUserManageDTO);
void updateUserMemberStatusByUserId(@Param("userId") Integer userId,@Param("status") Integer status);
}
\ 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;
......@@ -12,4 +13,6 @@ import tk.mybatis.mapper.common.special.InsertListMapper;
*/
public interface BaseUserMemberExportMapper extends Mapper<BaseUserMemberExport>, InsertListMapper<BaseUserMemberExport> {
void updateUserMemberExportDataToLoseEfficacyByPhone(@Param("phone") String phone);
}
package com.github.wxiaoqi.security.admin.rest;
import com.ace.cache.annotation.Cache;
import com.github.wxiaoqi.security.admin.biz.AppUserBiz;
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.biz.*;
import com.github.wxiaoqi.security.admin.entity.*;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.admin.vo.AppUserGroups;
......@@ -50,6 +47,12 @@ public class AppUserController extends CommonBaseController {
@Autowired
private BaseUserMemberBiz userMemberBiz;
@Autowired
AppUserPositionBiz positionBiz;
@Autowired
private UserMemberLevelBiz userMemberLevelBiz;
@GetMapping("page")
public TableResultResponse list(@RequestParam Map<String, Object> params) {
Query query = new Query(params);
......@@ -119,13 +122,24 @@ public class AppUserController extends CommonBaseController {
throw new Exception();
}
Integer id= userVo.getId();
Integer positionId=userVo.getPositionId();
BeanUtils.copyProperties(userDTO,userVo);
if(userVo.getIsMember()!=null&&userVo.getIsMember()>0){
//获取用户会员信息
UserMemberVo memberVo=userMemberBiz.getMemberInfoByUserId(userid);
if(memberVo!=null){
BeanUtils.copyProperties(userDTO,memberVo);
Integer level=memberVo.getMemberLevel();
BaseUserMemberLevel memberLevel=userMemberLevelBiz.getLevel(level);
if (memberLevel!=null){
String icon=memberLevel.getIcon();
userDTO.setIcon(icon);
}
}
}
AppUserPosition userPosition=positionBiz.selectById(positionId);
if (userPosition!=null&&userPosition.getLevel()>0){
userDTO.setPositionName(userPosition.getName());
}
userDTO.setId(id);
return ObjectRestResponse.succ(userDTO);
......
package com.github.wxiaoqi.security.admin.rest;
import com.github.wxiaoqi.security.admin.biz.AppUserDetailBiz;
import com.github.wxiaoqi.security.admin.biz.BaseUserMemberBiz;
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.biz.*;
import com.github.wxiaoqi.security.admin.entity.*;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.admin.rpc.service.PermissionService;
import com.github.wxiaoqi.security.admin.vo.AppUserVo;
......@@ -54,6 +48,9 @@ public class PublicController {
@Autowired
private UserAuthUtil userAuthUtil;
@Autowired
AppUserPositionBiz positionBiz;
@RequestMapping(value = "/userinfo-by-token", method = RequestMethod.GET)
public @ResponseBody
ObjectRestResponse userinfoByToken(String token) throws Exception {
......@@ -82,6 +79,8 @@ public class PublicController {
if (userVo == null) {
throw new BaseException(ResultCode.NOTEXIST_CODE);
}
Integer id= userVo.getId();
Integer positionId=userVo.getPositionId();
BeanUtils.copyProperties(userDTO,userVo);
if(userVo.getIsMember()!=null&&userVo.getIsMember()>0){
//获取用户会员信息
......@@ -90,6 +89,11 @@ public class PublicController {
BeanUtils.copyProperties(userDTO,memberVo);
}
}
AppUserPosition userPosition=positionBiz.selectById(positionId);
if (userPosition!=null&&userPosition.getLevel()>0){
userDTO.setPositionName(userPosition.getName());
}
userDTO.setId(id);
return new ObjectRestResponse<AppUserDetail>().rel(true).data(userDTO);
}
......
package com.github.wxiaoqi.security.admin.rest;
import com.github.wxiaoqi.security.admin.AdminBootstrap;
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.entity.BaseUserMemberLevel;
import com.github.wxiaoqi.security.common.exception.BaseException;
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.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
/**
......@@ -73,7 +78,29 @@ public class UserMemberController {
}
}
userMemberData.remove(0);
baseUserMemberExportBiz.importUserMember(userMemberData);
return ObjectRestResponse.succ();
try {
int effectSize = baseUserMemberExportBiz.importUserMember(userMemberData);
return ObjectRestResponse.succ(effectSize);
}catch (BaseException ex){
return ObjectRestResponse.createDefaultFail();
}
}
@GetMapping("/user/excel_model/dowload")
public ResponseEntity<byte[]> dowloadUserMemberExcelModel(HttpServletResponse response){
// 重置response
response.reset();
//设置http头信息的内容
response.setCharacterEncoding("utf-8");
response.setContentType("application/vnd.ms-excel");
response.addHeader("Content-Disposition", "attachment;filename=usermember.xlsx");
InputStream inputStream = AdminBootstrap.class.getClassLoader().getResourceAsStream("file/usermember.xlsx");
try {
byte[] bytes = IOUtils.toByteArray(inputStream);
return ResponseEntity.ok(bytes);
} catch (IOException e) {
e.printStackTrace();
}
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null);
}
}
......@@ -113,5 +113,7 @@
</select>
<update id="updateUserMemberStatusByUserId">
update `app_user_detail` set `is_member`={status} where `userid`=#{userId}
</update>
</mapper>
\ No newline at end of file
......@@ -11,4 +11,8 @@
<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
......@@ -10,7 +10,7 @@ spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://10.5.52.3:3306/xxfc_activity?useUnicode=true&characterEncoding=UTF-8
url: jdbc:mysql://10.5.52.3:3306/xxfc_app?useUnicode=true&characterEncoding=UTF-8
username: root
password: sslcloud123*()
jackson:
......
#\u4EE3\u7801\u751F\u6210\u5668\uFF0C\u914D\u7F6E\u4FE1\u606F
#\u5305\u540D
package=com.xxfc.platform.activity
package=com.xxfc.platform.app
#\u4F5C\u8005
author=libin
author=zjw
#Email
email=18178966185@163.com
#\u8868\u524D\u9519\u8BEF\u7684Unicode\u5B57\u7B26\u4E32!
......
package com.xxfc.platform.app.entity;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 购房车提交表单
*
* @author zjw
* @email 18178966185@163.com
* @date 2019-07-09 19:39:47
*/
@Data
@Table(name = "buy_vehicle_form")
public class BuyVehicleForm implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@Id
@GeneratedValue(generator = "JDBC")
@ApiModelProperty("主键")
private Integer id;
/**
* 创建时间
*/
@Column(name = "crt_time")
@ApiModelProperty(value = "创建时间", hidden = true )
private Long crtTime;
/**
* 更新时间
*/
@Column(name = "upd_time")
@ApiModelProperty(value = "更新时间", hidden = true )
private Long updTime;
/**
* 车型id
*/
@Column(name = "model_id")
@ApiModelProperty(value = "车型id")
private Integer modelId;
/**
* 联系人名称
*/
@Column(name = "contact_name")
@ApiModelProperty(value = "联系人名称")
private String contactName;
/**
* 联系人电话
*/
@Column(name = "contact_phone")
@ApiModelProperty(value = "联系人电话")
private String contactPhone;
/**
* 预约时间
*/
@Column(name = "book_time")
@ApiModelProperty(value = "预约时间")
private Long bookTime;
/**
* 公司id
*/
@Column(name = "company_id")
@ApiModelProperty(value = "公司id")
private Integer companyId;
/**
* 备注
*/
@Column(name = "remark")
@ApiModelProperty(value = "备注")
private String remark;
}
package com.xxfc.platform.app.biz;
import org.springframework.stereotype.Service;
import com.xxfc.platform.app.entity.BuyVehicleForm;
import com.xxfc.platform.app.mapper.BuyVehicleFormMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
/**
* 购房车提交表单
*
* @author zjw
* @email 18178966185@163.com
* @date 2019-07-09 19:39:47
*/
@Service
public class BuyVehicleFormBiz extends BaseBiz<BuyVehicleFormMapper,BuyVehicleForm> {
}
\ No newline at end of file
package com.xxfc.platform.app.mapper;
import com.xxfc.platform.app.entity.BuyVehicleForm;
import tk.mybatis.mapper.common.Mapper;
/**
* 购房车提交表单
*
* @author zjw
* @email 18178966185@163.com
* @date 2019-07-09 19:39:47
*/
public interface BuyVehicleFormMapper extends Mapper<BuyVehicleForm> {
}
package com.xxfc.platform.app.rest;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.app.biz.BuyVehicleFormBiz;
import com.xxfc.platform.app.entity.BuyVehicleForm;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("buyVehicleForm")
public class BuyVehicleFormController extends BaseController<BuyVehicleFormBiz,BuyVehicleForm> {
}
\ 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.xxfc.platform.app.mapper.BuyVehicleFormMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.xxfc.platform.app.entity.BuyVehicleForm" id="buyVehicleFormMap">
<result property="id" column="id"/>
<result property="crtTime" column="crt_time"/>
<result property="updTime" column="upd_time"/>
<result property="name" column="name"/>
<result property="modelId" column="model_id"/>
<result property="contactName" column="contact_name"/>
<result property="contactPhone" column="contact_phone"/>
<result property="bookTime" column="book_time"/>
<result property="companyId" column="company_id"/>
<result property="remark" column="remark"/>
</resultMap>
</mapper>
\ No newline at end of file
......@@ -15,12 +15,25 @@
<swagger.version>2.9.2</swagger.version>
</properties>
<dependencies>
<dependency>
<groupId>com.github.wxiaoqi</groupId>
<artifactId>ace-admin-api</artifactId>
<version>2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<scope>provided</scope>
</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 -->
<dependency>
<groupId>org.springframework.boot</groupId>
......
......@@ -214,4 +214,18 @@ public class BaseOrder implements Serializable {
@ApiModelProperty(value = "乐观锁,修改版本号")
@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 {
BaseOrder getOrder();
void setOrder(BaseOrder order);
Integer getOrderOrigin();
void setOrderOrigin(Integer orderOrigin);
}
......@@ -94,6 +94,12 @@ public class AddRentVehicleDTO{
@ApiModelProperty(value = "是否使用出租免费天数")
private Integer rentFreeDay;
/**
*
*/
@ApiModelProperty(value = "下单来源,1--app;2--小程序")
private Integer orderOrigin;
/**
* 优惠券ids
......
......@@ -18,6 +18,10 @@ import java.util.List;
public class MemberBO extends OrderMemberDetail implements OrderDetail {
private BaseOrder order;
private BaseUserMemberLevel baseUserMemberLevel;
/**
* 下单来源,1--app;2--小程序
*/
private Integer orderOrigin;
/**
* 优惠券*
*/
......
......@@ -15,4 +15,13 @@ public class OrderAboutParamDTO {
@ApiModelProperty(value = "旅游订单自动取消时间(毫秒)")
private Long actTour;
@ApiModelProperty(value = "会员订单自动取消时间(毫秒)")
private Long actMember;
@ApiModelProperty(value = "平台司机单价")
private BigDecimal driverPrice;
@ApiModelProperty(value = "免赔费用")
private BigDecimal damageSafe;
}
\ No newline at end of file
......@@ -7,6 +7,7 @@ import com.xxfc.platform.order.entity.inter.OrderDetail;
import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
import com.xxfc.platform.vehicle.entity.VehicleModel;
import com.xxfc.platform.vehicle.pojo.BookVehicleVO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
......@@ -22,6 +23,11 @@ public class RentVehicleBO extends OrderRentVehicleDetail implements OrderDetail
private Integer rentFreeDay;
private AppUserDTO appUserDTO;
/**
* 下单来源,1--app;2--小程序
*/
private Integer orderOrigin;
/**
* 优惠券*
*/
......
......@@ -21,6 +21,10 @@ public class TourBO extends OrderTourDetail implements OrderDetail {
List<TourUser> tourUsers;
AppUserDTO appUserDTO;
/**
* 下单来源,1--app;2--小程序
*/
private Integer orderOrigin;
/**
* 优惠券*
*/
......
......@@ -12,7 +12,7 @@ import lombok.Data;
* @date 2019-05-28 16:17:42
*/
@Data
public class RentVehicleOrderPayVO {
public class OrderPayDTO {
//订单号
@ApiModelProperty(value = "订单号")
private String orderNo;
......@@ -24,4 +24,8 @@ public class RentVehicleOrderPayVO {
//来源:1-app;2-小程序
@ApiModelProperty(value = "来源:1-app;2-小程序")
private Integer type;
//买家第三方付款账号
@ApiModelProperty(value = "买家第三方付款账号(如:openId)")
private String buyerAccount;
}
......@@ -366,7 +366,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
* @param orderNo
* @param tradeNo
*/
public void payNotifyHandle(String orderNo, String tradeNo) {
public void payNotifyHandle(String orderNo, String tradeNo, Integer type) {
BaseOrder baseOrder = this.selectOne(new BaseOrder() {{
setNo(orderNo);
}});
......@@ -377,6 +377,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
setOutTradeNo(tradeNo);
setHasPay(SYS_TRUE);
setPayTime(System.currentTimeMillis());
setPayOrigin(type);
setVersion(baseOrder.getVersion());
}};
......
......@@ -46,7 +46,7 @@ public class RabbitConsumer {
baseOrderBiz.cancel(baseOrder);
}catch (BaseException e) {
if(ResultCode.DB_OPERATION_FAIL_CODE == e.getStatus()) {
log.info("取消操作被取消");
log.info("取消操作被取消;订单id:"+ baseOrder.getId());
}
}catch (Exception e) {
log.error("============消费失败,尝试消息补发再次消费!==============");
......
......@@ -3,7 +3,6 @@ package com.xxfc.platform.order.rest;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
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.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.UserDTO;
......@@ -25,7 +24,7 @@ import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.mqhandler.RabbitProduct;
import com.xxfc.platform.order.pojo.order.*;
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.entity.Dictionary;
import com.xxfc.platform.universal.feign.ThirdFeign;
......@@ -111,6 +110,9 @@ public class BaseOrderController extends CommonBaseController {
setInsurePrice(new BigDecimal(dictionaryMap.get(APP_ORDER+ "_"+ DictionaryKey.INSURE_PRICE).getDetail()));
setActRent(new Long(dictionaryMap.get(APP_ORDER+ "_"+ DictionaryKey.ACT_RENT).getDetail()));
setActTour(new Long(dictionaryMap.get(APP_ORDER+ "_"+ DictionaryKey.ACT_TOUR).getDetail()));
setActMember(new Long(dictionaryMap.get(APP_ORDER+ "_"+ DictionaryKey.ACT_MEMBER).getDetail()));
setDamageSafe(new BigDecimal(dictionaryMap.get(APP_ORDER+ "_"+ DictionaryKey.DAMAGE_SAFE).getDetail()));
setDriverPrice(new BigDecimal(dictionaryMap.get(APP_ORDER+ "_"+ DictionaryKey.DRIVER_PRICE).getDetail()));
}});
}
......@@ -234,6 +236,7 @@ public class BaseOrderController extends CommonBaseController {
@IgnoreClientToken
@ResponseBody
public ObjectRestResponse<OrderPageVO> get(@PathVariable String no) {
log.info("no:"+ no + ",时间戳:"+ System.currentTimeMillis());
//查询列表数据
if (StringUtils.isBlank(BaseContextHandler.getUserID())) {
throw new BaseException(ResultCode.AJAX_WECHAT_NOTEXIST_CODE);
......@@ -244,6 +247,7 @@ public class BaseOrderController extends CommonBaseController {
if (page.getData().isEmpty()) {
throw new BaseException(ResultCode.NOTEXIST_CODE);
}
log.info("no:"+ no + ",时间戳:"+ System.currentTimeMillis());
return new ObjectRestResponse<>().data(page.getData().get(0));
}
......@@ -303,16 +307,16 @@ public class BaseOrderController extends CommonBaseController {
@ResponseBody
@ApiOperation(value = "订单支付")
@IgnoreClientToken
public ObjectRestResponse pay(@RequestBody RentVehicleOrderPayVO vo) {
public ObjectRestResponse pay(@RequestBody OrderPayDTO dto) {
//查询列表数据
if (StringUtils.isBlank(BaseContextHandler.getUserID())) {
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() {{
setNo(vo.getOrderNo());
setNo(dto.getOrderNo());
}});
if (null == baseOrder || !OrderStatusEnum.ORDER_UNPAY.getCode().equals(baseOrder.getStatus())) {
......@@ -359,7 +363,7 @@ public class BaseOrderController extends CommonBaseController {
public ObjectRestResponse notifyUrl(NotifyUrlDTO dto) {
//判断是否成功,并且订单是未支付状态,则添加支付编号和修改状态
if (StrUtil.isNotBlank(dto.getOrderNo())) {
baseOrderBiz.payNotifyHandle(dto.getOrderNo(), dto.getTradeNo());
baseOrderBiz.payNotifyHandle(dto.getOrderNo(), dto.getTradeNo(), dto.getType());
}else{
log.error(" exception notifyUrl : " + JSONUtil.toJsonStr(dto));
}
......@@ -418,5 +422,9 @@ public class BaseOrderController extends CommonBaseController {
//订单号
@ApiModelProperty(value = "支付订单(流水)号")
private String tradeNo;
//支付类型
@ApiModelProperty(value = "支付类型")
private Integer type;
}
}
}
......@@ -42,8 +42,12 @@ public abstract class AbstractOrderHandle<Biz extends BaseBiz, Detail extends Or
* 创建基础订单
* @return
*/
public BaseOrder createBaseOrder() {
public BaseOrder createBaseOrder(Integer orderOrigin) {
BaseOrder baseOrder = new BaseOrder();
//设置下单来源
baseOrder.setOrderOrigin(orderOrigin);
//设置订单号
baseOrder.setNo(OrderUtil.GetOrderNumber("", OrderUtil.APP_MID));
//设置订单类型
......@@ -64,7 +68,7 @@ public abstract class AbstractOrderHandle<Biz extends BaseBiz, Detail extends Or
}
public void initDetail(Detail detail) {
BaseOrder order = createBaseOrder();
BaseOrder order = createBaseOrder(detail.getOrderOrigin());
detail.setOrder(order);
}
......
......@@ -15,6 +15,8 @@ import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.pojo.order.MemberBO;
import com.xxfc.platform.order.pojo.price.OrderPriceVO;
import com.xxfc.platform.tour.feign.TourFeign;
import com.xxfc.platform.universal.constant.DictionaryKey;
import com.xxfc.platform.universal.feign.ThirdFeign;
import com.xxfc.platform.vehicle.feign.VehicleFeign;
import lombok.extern.log4j.Log4j;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -26,6 +28,8 @@ import java.math.BigDecimal;
import java.util.HashMap;
import java.util.HashSet;
import static com.xxfc.platform.universal.constant.DictionaryKey.APP_ORDER;
@Service
@Log4j
public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz, MemberBO> {
......@@ -36,10 +40,14 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
@Autowired
VehicleFeign vehicleFeign;
@Autowired
ThirdFeign thirdFeign;
private static Integer IS_CHILD = 1;
private static Integer LEVEL_DEFAULT = 0;
private static Integer NUMBER_ZERO = 0;
private static Long autoCancelTime;
@Autowired
OrderCostDetailBiz orderCostDetailBiz;
......@@ -68,6 +76,7 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
@Override
public void initDetail(MemberBO bo) {
super.initDetail(bo);
initDictionary();
BaseUserMemberLevel buml = userFeign.level(bo.getMemberLevel());
if(!bo.getMemberLevelId().equals(buml.getId())) {
throw new BaseException(ResultCode.PARAM_ILLEGAL_CODE, new HashSet<String>(){{
......@@ -79,6 +88,11 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
bo.setRebate(buml.getDiscount());
}
public void initDictionary() {
dictionaryMap = thirdFeign.dictionaryGetAll4Map().getData();
this.autoCancelTime = Long.valueOf(dictionaryMap.get(APP_ORDER+ "_"+ DictionaryKey.ACT_MEMBER).getDetail());
}
@Override
public void handleDetail(MemberBO bo) {
//设置订单状态为3
......@@ -91,7 +105,7 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
super.handleDetail(bo);
//发送定时取消订单(30分钟)
rabbitProduct.sendDelayMessage(bo.getOrder(), 1000L * 60 * 30);
rabbitProduct.sendDelayMessage(bo.getOrder(), autoCancelTime);
}
@Override
......
......@@ -166,7 +166,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
VehicleModel vehicleModel = vehicleFeign.get(detail.getModelId()).getData();
//如果用户存在,并且为会员,并且车辆有优惠价
if(null != dto && !NONE.getCode().equals(dto.getMemberLevel()) && !DISCOUNT_STATUS_NONE.equals(vehicleModel.getRentDiscountStatus())) {
if(null != dto && SYS_TRUE.equals(dto.getIsMember()) && !NONE.getCode().equals(dto.getMemberLevel()) && !DISCOUNT_STATUS_NONE.equals(vehicleModel.getRentDiscountStatus())) {
String[] prices = StrUtil.isBlank(vehicleModel.getRentDiscountPrice())
?new String[]{vehicleModel.getPrice().toString(),vehicleModel.getPrice().toString(),vehicleModel.getPrice().toString()}
:vehicleModel.getRentDiscountPrice().split(",");
......
......@@ -197,7 +197,7 @@ public class OrderTourService extends AbstractOrderHandle<OrderTourDetailBiz, To
//总价格
orderAmount = orderAmount.add(goodsAmount).add(insureAmount);
//真实价格
realAmount = realAmount.add(tourSpePriceVo.getRealPrice()).add(tourSpePriceVo.getRealChildPrice());
realAmount = realAmount.add(tourSpePriceVo.getRealPrice()).add(tourSpePriceVo.getRealChildPrice()).add(insureAmount);
//生成订单明细
TourPriceVO tpv = BeanUtil.toBean(tourSpePriceVo, TourPriceVO.class);
......
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");
}
}
......@@ -35,6 +35,7 @@ public class DictionaryKey {
*/
public static final String ACT_RENT = "ACT_RENT";
public static final String ACT_TOUR = "ACT_TOUR";
public static final String ACT_MEMBER = "ACT_MEMBER";
/**
* 支付价格减低
......
......@@ -78,6 +78,11 @@
<version>2.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>3.7.26.ALL</version>
</dependency>
<dependency>
<groupId>antlr</groupId>
<artifactId>antlr</artifactId>
......
......@@ -35,6 +35,7 @@ public class OrderPayController extends BaseController<OrderPayBiz,OrderPay> {
return baseBiz.preparepay(orderPayVo);
}
/**
* 支付回调
*
......@@ -80,4 +81,18 @@ public class OrderPayController extends BaseController<OrderPayBiz,OrderPay> {
out.print("<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[]]></return_msg></xml>");
}
@PostMapping(value = "/app/notify/alipay")
@IgnoreUserToken
public String alipayNotify(){
return baseBiz.alipayNotify();
}
@PostMapping(value = "/app/generate_payment")
public Object generatePayment(@RequestParam("orderCode") String orderCode, @RequestParam("description") String description,
@RequestParam("payType") String payType, @RequestParam("amount") Integer amount) {
Object resp = baseBiz.generatePayment(orderCode, description, payType, amount);
return resp;
}
}
\ No newline at end of file
......@@ -17,16 +17,16 @@ import java.util.List;
@FeignClient(name = "vehicle")
public interface VehicleFeign {
@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}")
public ObjectRestResponse<Vehicle> get(@PathVariable("id") String id);
public ObjectRestResponse<Vehicle> get(@PathVariable(value = "id") String id);
@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)
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)
......@@ -36,19 +36,19 @@ public interface VehicleFeign {
public ObjectRestResponse<VehicleBookRecord> rentApplyVehicle(@RequestBody RentVehicleBookDTO rentVehicleBookDTO);
@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)
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)
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)
public RestResponse<Integer> proveVehicleBooking(@PathVariable Long bookRecordId);
public RestResponse<Integer> proveVehicleBooking(@PathVariable(value = "bookRecordId") Long bookRecordId);
//获取分公司列表
@GetMapping("/branchCompany/all")
......
package com.xxfc.platform.vehicle.pojo;
import com.xxfc.platform.vehicle.entity.VehiclePlatCata;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
import java.util.Map;
/**
......@@ -23,5 +26,8 @@ public class VehicleModelQueryCondition {
private String takeALieTheNumber;
@ApiModelProperty(value = "是否删除")
private Integer isDel;
@ApiModelProperty("分类逗号分割")
String catasStr;
@ApiModelProperty(value = "分类列表", hidden = true)
Map<Integer, List<VehiclePlatCata>> catas;
}
......@@ -53,9 +53,6 @@ public class VehicleModelBiz extends BaseBiz<VehicleModelMapper, VehicleModel> {
*/
public ObjectRestResponse findVehicleModelPage(VehicleModelQueryCondition vmqc) {
try {
PageDataVO<VehicleModelVo> mPageDataVO = PageDataVO.pageInfo(vmqc.getPage(),
vmqc.getLimit(), () -> mapper.findVehicleModelPage(vmqc));
......
......@@ -33,7 +33,10 @@ import tk.mybatis.mapper.entity.Example;
import tk.mybatis.mapper.weekend.WeekendSqls;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
......@@ -480,4 +483,20 @@ public class VehiclePlatCataBiz extends BaseBiz<VehiclePlatCataMapper, VehiclePl
updateSelectiveById(vehiclePlatCata);
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> {
//根据时间 获得 可用车辆
//结合车型
if (StringUtils.isNotBlank(dto.getCatasStr())) {
List<Integer> catasIds = Pattern.compile(",").splitAsStream(dto.getCatasStr()).map((s) -> Integer.parseInt(s)).collect(Collectors.toList());
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.setCatas(vehiclePlatCataBiz.groupCatasByParent(dto.getCatasStr()));
}
//设置显示是否有车
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
if (vmqc == null || vmqc.getPage() == null || vmqc.getLimit() == null || vmqc.getPage() < 0 || vmqc.getLimit() <= 0) {
return ObjectRestResponse.createDefaultFail();
}
//结合车型
if (org.apache.commons.lang3.StringUtils.isNotBlank(vmqc.getCatasStr())) {
vmqc.setCatas(vehiclePlatCataBiz.groupCatasByParent(vmqc.getCatasStr()));
}
return vehicleModelBiz.findVehicleModelPage(vmqc);
}
......
......@@ -28,6 +28,21 @@
<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)
</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
</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