Commit 72c0b05f authored by hezhen's avatar hezhen

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

parents 11cec7c9 454bea64
......@@ -11,7 +11,7 @@ import java.util.Set;
*/
public class BaseException extends RuntimeException {
private int status = 200;
private String subCode;
public int getStatus() {
return status;
}
......@@ -20,6 +20,14 @@ public class BaseException extends RuntimeException {
this.status = status;
}
public String getSubCode() {
return subCode;
}
public void setSubCode(String subCode) {
this.subCode = subCode;
}
public BaseException() {
}
......@@ -28,6 +36,11 @@ public class BaseException extends RuntimeException {
this.status = status;
}
public BaseException(String message,String subCode){
super(message);
this.subCode = subCode;
}
public BaseException(String message) {
super(message);
}
......
package com.github.wxiaoqi.security.admin.constant;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/10/12 14:27
*/
public enum WalletDetailTypeEnum {
/**
* 活动
*/
ACTIVITY(0, "活动奖励金"),
/**
* 佣金
*/
COMMISSION(1, "佣金"),
/**
* 会员充值
*/
MEMBER(2, "会员充值"),
/**
* 提现
*/
WITHDRAW(10, "提现"),
/**
* 转账
*/
TRANSFER(11, "转账"),
/**
* 购买
*/
BUY(12, "购买"),
/**
* 手续费
*/
SERVICE_CHARGE(13, "手续费");
private Integer code;
private String desc;
WalletDetailTypeEnum(Integer code, String desc) {
this.code = code;
this.desc = desc;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
package com.github.wxiaoqi.security.admin.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
......@@ -12,6 +14,8 @@ import java.math.BigDecimal;
* @data 2019/7/17 20:40
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class WalletCathListDTO {
private Long id;
......@@ -41,9 +45,12 @@ public class WalletCathListDTO {
@ApiModelProperty(value = "审核日期")
private Long finishTime;
@ApiModelProperty("单号")
@ApiModelProperty("第三方单号")
private String cono;
@ApiModelProperty("提现单号")
private String orderNo;
@ApiModelProperty(value = "用户账号")
private String accountNumber;
}
......@@ -52,8 +52,11 @@ public class WalletDetailListDTO {
private String activityName;
@ApiModelProperty(value = "单号")
@ApiModelProperty(value = "第三方单号")
private Integer cono;
@ApiModelProperty(value = "提现单号")
private String withDrawOrderNo;
@ApiModelProperty(value = "操作时间", hidden = true )
private Long crtTime;
......
......@@ -83,4 +83,9 @@ public class BaseUserMemberLevel implements Serializable {
@ApiModelProperty(value = "大图标")
private String bigIcon;
@Column(name = "item_img")
@ApiModelProperty(value = "会员商品图片")
private String itemImg;
}
......@@ -47,11 +47,9 @@ public class MyWalletCath implements Serializable {
@ApiModelProperty(value = "用户账号")
private String accountNumber;
/**
* 第三方订单号:如微信,支付宝,银行卡等
*/
@Column(name = "cono")
@ApiModelProperty(value = "第三方订单号:如微信,支付宝,银行卡等")
@ApiModelProperty(value = "提现单号")
private String cono;
......@@ -122,5 +120,7 @@ public class MyWalletCath implements Serializable {
@ApiModelProperty(value = "操作者ID")
private String updUser;
@Column(name = "order_no")
@ApiModelProperty(value = "第三方订单号:如微信,支付宝,银行卡等")
private String orderNo;
}
......@@ -81,7 +81,7 @@ public class MyWalletDetail implements Serializable {
@Column(name = "activity_name")
private String activityName;
/**
/**
* 单号
*/
@Column(name = "cono")
......@@ -109,4 +109,8 @@ public class MyWalletDetail implements Serializable {
@ApiModelProperty(value = "操作时间", hidden = true )
private Long crtTime;
@ApiModelProperty(value = "提现")
@Column(name = "with_draw_order_no")
private String withDrawOrderNo;
}
......@@ -84,6 +84,7 @@ public class AppUserDTO {
//图标
private String icon;
private String bigIcon;
private String itemImg;
private Integer memberNo;
private Long cardLeave;
private Integer isBind;
......
package com.github.wxiaoqi.security.admin.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/10/10 17:52
*/
@Data
@Builder(toBuilder = true)
@AllArgsConstructor
@NoArgsConstructor
public class PayAccountVo {
@ApiModelProperty(value = "微信用户名 | 支付宝帐号")
private String accountDesc;
@ApiModelProperty("微信用户名 | 支付宝账号")
private String account;
@ApiModelProperty(value = "帐户类型 0:微信 1:支付宝 2:银行卡")
private Integer accountType;
}
package com.github.wxiaoqi.security.admin.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
......@@ -12,6 +14,8 @@ import java.math.BigDecimal;
* @data 2019/7/17 20:22
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class WalletCathAdminVo {
private Long id;
......@@ -37,10 +41,16 @@ public class WalletCathAdminVo {
@ApiModelProperty(value = "审核日期")
private Long finishTime;
@ApiModelProperty("单号")
@ApiModelProperty("提现单号")
private String orderNo;
@ApiModelProperty("第三方单号")
private String cono;
@ApiModelProperty(value = "用户账号")
private String accountNumber;
@ApiModelProperty(value = "用户账号描述")
private String accountNumberDesc;
}
......@@ -3,6 +3,8 @@ package com.github.wxiaoqi.security.admin.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author libin
* @version 1.0
......@@ -30,9 +32,24 @@ public class WalletCathDetailVo {
@ApiModelProperty(value = "审核日期")
private Long finishTime;
@ApiModelProperty(value = "帐号")
@ApiModelProperty(value = "帐号:支付宝帐号|微信名")
private String accountNumber;
@ApiModelProperty("审核失败原因")
private String reason;
@ApiModelProperty(value = "提现类别,第三方提现类别(0-微信,1-支付宝,2-银行卡)")
private Integer cathType;
@ApiModelProperty(value = "提现单号")
private String orderNo;
@ApiModelProperty(value = "手续费")
private BigDecimal commission;
@ApiModelProperty(value = "提现金额")
private BigDecimal amount;
@ApiModelProperty(value = "到账金额")
private BigDecimal realAmount;
}
package com.github.wxiaoqi.security.admin.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
......@@ -12,6 +14,8 @@ import java.math.BigDecimal;
* @data 2019/7/18 10:50
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class WalletDetailAdminVo {
private Integer id;
......@@ -46,6 +50,9 @@ public class WalletDetailAdminVo {
@ApiModelProperty(value = "单号")
private Integer cono;
@ApiModelProperty(value = "提现单号")
private String withDrawOrderNo;
@ApiModelProperty(value = "操作时间", hidden = true )
private Long crtTime;
......
......@@ -47,4 +47,7 @@ public class WalletDetailPageVo {
@ApiModelProperty(value = "操作时间", hidden = true )
private Long crtTime;
@ApiModelProperty("描述")
private String desc;
}
......@@ -184,7 +184,9 @@ public class AppUserSellingWaterBiz extends BaseBiz<AppUserSellingWaterMapper, A
BigDecimal amount = new BigDecimal("0.00");
Integer userId = 0;
Integer orderType = 0;
String orderNo = "";
if (list.size() > 0) {
orderNo = list.get(0).getOrderNo();
for (AppUserSellingWater sellingWater : list) {
Integer id = sellingWater.getId();
orderType = sellingWater.getOrderType();
......@@ -204,6 +206,7 @@ public class AppUserSellingWaterBiz extends BaseBiz<AppUserSellingWaterMapper, A
detail.setUserId(userId);
detail.setAmount(amount);
detail.setCono(orderId);
detail.setWithDrawOrderNo(orderNo);
detail.setSource(1);
myWaterBiz.updMyWater(detail);
if (orderType == 1 || orderType == 2) {
......@@ -229,7 +232,9 @@ public class AppUserSellingWaterBiz extends BaseBiz<AppUserSellingWaterMapper, A
BigDecimal unbooked = new BigDecimal("0.00");
Integer userId = 0;
Integer orderType = 0;
String orderNo = "";
if (list.size() > 0) {
orderNo = list.get(0).getOrderNo();
for (AppUserSellingWater sellingWater : list) {
Integer id = sellingWater.getId();
orderType = sellingWater.getOrderType();
......@@ -251,6 +256,7 @@ public class AppUserSellingWaterBiz extends BaseBiz<AppUserSellingWaterMapper, A
detail.setUserId(userId);
detail.setAmount(amount);
detail.setCono(orderId);
detail.setWithDrawOrderNo(orderNo);
detail.setSource(1);
myWaterBiz.updMyWater(detail);
}
......@@ -370,7 +376,7 @@ public class AppUserSellingWaterBiz extends BaseBiz<AppUserSellingWaterMapper, A
sellingWalletVo.setUsername(username);
if (userIdAndAppUserDetailMap != null) {
AppUserDetail appUserDetail = userIdAndAppUserDetailMap.get(sellingWalletVo.getSourceId());
sellingWalletVo.setNickName(appUserDetail == null ? "" : appUserDetail.getNickname());
sellingWalletVo.setNickName(appUserDetail == null ? "" : appUserDetail.getRealname());
sellingWalletVo.setHeadUrl(appUserDetail == null ? "" : appUserDetail.getHeadimgurl());
}
//取消单
......
......@@ -88,23 +88,31 @@ public class MyWalletCathBiz extends BaseBiz<MyWalletCathMapper, MyWalletCath> {
public PageDataVO<WalletCathAdminVo> listWalletCathWithPage(WalletCathFindDTO walletCathFindDTO) {
PageDataVO<WalletCathAdminVo> walletCathAdminVoPage = new PageDataVO<>();
PageDataVO<WalletCathAdminVo> walletCathAdminVoPage = new PageDataVO<>();
PageDataVO<WalletCathListDTO> walletCathListDTOPage = PageDataVO.pageInfo(walletCathFindDTO.getPage(),
walletCathFindDTO.getLimit(),
() -> mapper.selectByUserNameOrPhoneOrWithDrawSate(walletCathFindDTO.getUsername(), walletCathFindDTO.getPhone(), walletCathFindDTO.getState()));
walletCathFindDTO.getLimit(),
() -> mapper.selectByUserNameOrPhoneOrWithDrawSate(walletCathFindDTO.getUsername(), walletCathFindDTO.getPhone(), walletCathFindDTO.getState()));
List<WalletCathListDTO> walletCathListDTOList = walletCathListDTOPage.getData();
if (CollectionUtils.isEmpty(walletCathListDTOList)){
if (CollectionUtils.isEmpty(walletCathListDTOList)) {
return walletCathAdminVoPage;
}
List<WalletCathAdminVo> walletCathAdminVos = new ArrayList<>();
WalletCathAdminVo walletCathAdminVo ;
List<WalletCathAdminVo> walletCathAdminVos = new ArrayList<>();
WalletCathAdminVo walletCathAdminVo;
for (WalletCathListDTO walletCathListDTO : walletCathListDTOList) {
walletCathAdminVo = new WalletCathAdminVo();
BeanUtils.copyProperties(walletCathListDTO,walletCathAdminVo);
walletCathAdminVo.setUsername(StringUtils.isEmpty(walletCathListDTO.getRealname())?walletCathListDTO.getNickname():walletCathListDTO.getRealname());
BeanUtils.copyProperties(walletCathListDTO, walletCathAdminVo);
walletCathAdminVo.setUsername(StringUtils.isEmpty(walletCathListDTO.getRealname()) ? walletCathListDTO.getNickname() : walletCathListDTO.getRealname());
walletCathAdminVo.setPhone(walletCathListDTO.getUsername());
//微信
if (walletCathListDTO.getCathType()==0){
walletCathAdminVo.setAccountNumberDesc(String.format("%s%s%s","提现到微信(",walletCathListDTO.getAccountNumber(),")"));
}
//支付宝
if (walletCathListDTO.getCathType()==1){
walletCathAdminVo.setAccountNumberDesc(String.format("%s%s%s","提现到支付宝(",walletCathListDTO.getAccountNumber(),")"));
}
walletCathAdminVos.add(walletCathAdminVo);
}
walletCathAdminVos.sort(Comparator.comparing(WalletCathAdminVo::getCrtTime).reversed());
......@@ -123,14 +131,14 @@ public class MyWalletCathBiz extends BaseBiz<MyWalletCathMapper, MyWalletCath> {
return userIdAndPersonalConsumptionMap;
}
public WalletCathSumDto sumCathAmount(Integer userId,Integer type){
return mapper.sumCathAmount(userId,type);
public WalletCathSumDto sumCathAmount(Integer userId, Integer type) {
return mapper.sumCathAmount(userId, type);
}
public void deleteByUserIds(Collection<Integer> userIds) {
Example example = new Example(MyWalletCath.class);
Example.Criteria criteria = example.createCriteria();
criteria.andIn("userId",userIds);
criteria.andIn("userId", userIds);
mapper.deleteByExample(example);
}
}
package com.github.wxiaoqi.security.admin.biz;
import com.github.wxiaoqi.security.admin.constant.WalletDetailTypeEnum;
import com.github.wxiaoqi.security.admin.dto.PersonalConsumptionDTO;
import com.github.wxiaoqi.security.admin.dto.WalletDetailFindDTO;
import com.github.wxiaoqi.security.admin.dto.WalletDetailListDTO;
......@@ -12,17 +13,15 @@ import com.github.wxiaoqi.security.common.vo.PageDataVO;
import lombok.Data;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import tk.mybatis.mapper.entity.Example;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
......@@ -35,7 +34,9 @@ import java.util.stream.Collectors;
@Transactional
@Service
@Data
public class MyWalletDetailBiz extends BaseBiz<MyWalletDetailMapper, MyWalletDetail> {
public class MyWalletDetailBiz extends BaseBiz<MyWalletDetailMapper, MyWalletDetail> implements InitializingBean {
private Map<Integer,WalletDetailTypeEnum> typeEnumMap;
public PageDataVO<WalletDetailPageVo> findWalletDetailPage(Integer userId,Integer pageNo,Integer pageSize){
......@@ -56,6 +57,7 @@ public class MyWalletDetailBiz extends BaseBiz<MyWalletDetailMapper, MyWalletDet
for (MyWalletDetail walletDetailPage : walletDetails) {
walletDetail = new WalletDetailPageVo();
BeanUtils.copyProperties(walletDetailPage,walletDetail);
walletDetail.setDesc(typeEnumMap.get(walletDetail.getSource()).getDesc());
walletDetailPageVoList.add(walletDetail);
}
walletDetailPageVo.setTotalPage(walletDetailPageVoPageDataVO.getTotalPage());
......@@ -101,4 +103,9 @@ public class MyWalletDetailBiz extends BaseBiz<MyWalletDetailMapper, MyWalletDet
Map<Integer, BigDecimal> userIdAndPersonalConsumptionMap = personalConsumptions.stream().collect(Collectors.toMap(PersonalConsumptionDTO::getUserId, PersonalConsumptionDTO::getTotalConsumption));
return userIdAndPersonalConsumptionMap;
}
@Override
public void afterPropertiesSet() throws Exception {
typeEnumMap = EnumSet.allOf(WalletDetailTypeEnum.class).stream().collect(Collectors.toMap(WalletDetailTypeEnum::getCode, Function.identity()));
}
}
......@@ -154,6 +154,7 @@ public class AppUserController extends CommonBaseController{
String icon=memberLevel.getIcon();
userDTO.setIcon(icon);
userDTO.setBigIcon(memberLevel.getBigIcon());
userDTO.setItemImg(memberLevel.getItemImg());
}
}
}
......
......@@ -4,6 +4,7 @@ import com.github.wxiaoqi.security.admin.biz.AppUserAlipayBiz;
import com.github.wxiaoqi.security.admin.biz.MyWalletBiz;
import com.github.wxiaoqi.security.admin.vo.AppletWalletVo;
import com.github.wxiaoqi.security.admin.vo.ApplyCathVo;
import com.github.wxiaoqi.security.admin.vo.PayAccountVo;
import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig;
import com.github.wxiaoqi.security.auth.client.jwt.UserAuthUtil;
import com.github.wxiaoqi.security.auth.common.util.jwt.IJWTInfo;
......@@ -14,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.List;
/**
* @author libin
......@@ -125,4 +127,15 @@ public class MyWalletController {
}
}
@ApiOperation("获取支付账号(微信|支付宝|银行卡)")
@GetMapping("/pay_account_list")
public ObjectRestResponse listPayAccount(HttpServletRequest request){
try {
Integer userId = Integer.parseInt(userAuthUtil.getInfoFromToken(userAuthConfig.getToken(request)).getId());
List<PayAccountVo> payAccountVos = myWalletBiz.listPayAccountByUserId(userId);
return ObjectRestResponse.succ(payAccountVos);
}catch (Exception ex){
throw new BaseException(ex);
}
}
}
......@@ -37,11 +37,10 @@ public class WalletCathAdminController {
@ApiOperation("提现审核")
public ObjectRestResponse verifyCath(
@RequestParam(value = "cathId",defaultValue = "0") Integer cathId,
@RequestParam(value = "cono",defaultValue = "") String cono,
@RequestParam(value = "reason",defaultValue = "") String reason,
@RequestParam(value = "status",defaultValue = "1") Integer status){
try {
return myWalletBiz.verifyCath(cathId,cono,reason,status);
return myWalletBiz.verifyCath(cathId,reason,status);
}catch (Exception e) {
throw new BaseException(e);
}
......
......@@ -15,6 +15,7 @@
wc.crt_time AS `crtTime`,
wc.finish_time AS `finishTime`,
wc.cono,
wc.order_no AS `orderNo`,
wc.account_number AS `accountNumber`
FROM
(SELECT * FROM `my_wallet_cath` <if test="state != null">
......
......@@ -8,6 +8,7 @@
wd.source,
wd.amount,
wd.cono,
wd.with_draw_order_no AS `withDrawOrderNo`,
wd.itype,
wd.activity_id AS `activityId`,
wd.activity_name AS `activityName`,
......@@ -22,7 +23,7 @@
ausw.order_no,
ausw.sourceUserName
FROM
(select id,user_id,source,amount,cono,itype,activity_id,activity_name,`crt_time` FROM `my_wallet_detail` <if test="sourceType != null">
(select id,user_id,source,amount,`with_draw_order_no`,cono,itype,activity_id,activity_name,`crt_time` FROM `my_wallet_detail` <if test="sourceType != null">
WHERE `source`=#{sourceType}
</if>) AS `wd`
INNER JOIN (SELECT id,username FROM `app_user_login`<if test="phone != null and phone != ''">
......
......@@ -12,7 +12,7 @@ public class HomePageOrderData {
*/
private BigDecimal totalOrders;
/**
* 退还押金总额
* 未退还退还押金总额
*/
private BigDecimal totalOutstandingDeposit;
......
......@@ -25,7 +25,7 @@ public class DailyOrderStatisticsBiz extends BaseBiz<DailyOrderStatisticsMapper,
@Autowired
private DailyMembersOrderStatisticsBiz membersStatisticsBiz;
@Scheduled(cron = "0 0 0/1 * * ?")
@Scheduled(cron = "0 0 2 * * ?")
public boolean statisticalOrder(){
boolean vehicleFlag = vehicleStatisticsBiz.saveDailyVehicleOrderRecord();
boolean travelFlag = travelStatisticsBiz.saveDailyTravelOrderRecord();
......
......@@ -53,8 +53,10 @@ public class OrderStatisticsBiz extends BaseBiz<OrderStatisticsMapper, OrderStat
setAdditionalIndemnity(vehicle.getTotalCompensation()
.add(vehicle.getTotalForfeit())
.add(vehicle.getTotalDefaultMoney())
.add(vehicle.getTotalExpenditure().subtract(vehicle.getTotalGmv()).add(vehicle.getTotalReturnGmv()))
);
.add(vehicle.getTotalExpenditure().subtract(vehicle.getTotalGmv()).add(vehicle.getTotalReturnGmv())));
setTotalOutstandingDeposit(vehicle.getTotalSecurityDeposit()
.subtract(vehicle.getTotalRefundSecurityDeposit())
.subtract(getAdditionalIndemnity()));
}};
orderStatistics.add(data);
}
......@@ -66,12 +68,13 @@ public class OrderStatisticsBiz extends BaseBiz<OrderStatisticsMapper, OrderStat
setAdditionalIndemnity(tour.getTotalDefaultMoney());
}};
orderStatistics.add(data);
}
OrderStatistics member = membersBiz.findAll(companyId);
if (vehicle != null) {
HomePageOrderData data = new HomePageOrderData() {{
setTotalOrders(member.getTotalGmv());
}};
orderStatistics.add(data);
}
......
......@@ -110,6 +110,7 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz
companyId = null;
}
//只统计租车订单
if (TYPE_VEHICLE.equals(type)) {
OrderStatistics vehicle = vehicleBiz.findAll(companyId);
return ObjectRestResponse.succ(new HomePageOrderData() {{
......@@ -119,15 +120,21 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz
.add(vehicle.getTotalDefaultMoney())
.add(vehicle.getTotalExpenditure().subtract(vehicle.getTotalGmv().subtract(vehicle.getTotalReturnGmv())))
);
setTotalOutstandingDeposit(vehicle.getTotalSecurityDeposit()
.subtract(vehicle.getTotalRefundSecurityDeposit())
.subtract(getAdditionalIndemnity()));
}});
}
//只统计会租车订单
if (TYPE_TOUR.equals(type)) {
OrderStatistics tour = TravelBiz.findAll(companyId);
return ObjectRestResponse.succ(new HomePageOrderData() {{
setTotalOrders(tour.getTotalGmv().subtract(tour.getTotalReturnGmv()));
setAdditionalIndemnity(tour.getTotalDefaultMoney());
}});
}
//只统计会员定案
if (TYPE_MEMBER.equals(type)) {
OrderStatistics member = membersBiz.findAll(companyId);
return ObjectRestResponse.succ(new HomePageOrderData() {{
......@@ -136,6 +143,7 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz
}});
}
//所有订单
if (TYPE_TOTAL.equals(type)) {
return ObjectRestResponse.succ(baseBiz.getTotalOrder(companyId));
}
......@@ -167,7 +175,7 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz
ExcelWriter writer = ExcelUtil.getWriter(true);
List<BaseUserMemberLevel> memberLevels = userFeign.levels();
List<MembersOrderDto> list = baseBiz.getMemberOrderStatistics(memberLevels, query);
List<HashMap<Object, Object>> rows =baseBiz.getRows(list,memberLevels);
List<HashMap<Object, Object>> rows = baseBiz.getRows(list, memberLevels);
// 一次性写出内容,使用默认样式,强制输出标题
writer.write(rows, true);
......
......@@ -19,7 +19,7 @@
SELECT
IFNULL( sum( gmv ), 0 ) AS totalGmv
FROM
daily_vehicle_order_statistics
daily_members_order_statistics
WHERE
1=1
<if test="companyId != null">
......
......@@ -55,7 +55,7 @@
IFNULL( sum( default_money ), 0 ) AS totalDefaultMoney,
IFNULL( sum( return_gmv ), 0 ) AS totalReturnGmv
FROM
daily_vehicle_order_statistics
daily_travel_order_statistics
WHERE
1=1
<if test="companyId != null">
......
......@@ -38,7 +38,7 @@ public class ServiceTest {
@Test
public void test(){
HomePageOrderData totalOrder = statisticsBiz.getTotalOrder(1);
HomePageOrderData totalOrder = statisticsBiz.getTotalOrder(null);
System.out.println(totalOrder);
}
......
......@@ -5,10 +5,7 @@ import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.universal.dto.SmsTemplateDTO;
import com.xxfc.platform.universal.entity.Dictionary;
import com.xxfc.platform.universal.entity.IdInformation;
import com.xxfc.platform.universal.vo.OrderPayVo;
import com.xxfc.platform.universal.vo.OrderRefundVo;
import com.xxfc.platform.universal.vo.TrafficViolations;
import com.xxfc.platform.universal.vo.ViolationVO;
import com.xxfc.platform.universal.vo.*;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
......@@ -83,4 +80,7 @@ public interface ThirdFeign {
public ObjectRestResponse<List<ViolationVO>> getRentViolation(@RequestParam(value = "rentViolationDTO") Map<String, Object> rentViolationDTO);
/*************************************支付***************************************/
@PostMapping("/pay/app/unauth/transfer_account")
String transferAccount(@RequestBody FundPayVo fundPayVo) throws Exception;
}
package com.xxfc.platform.universal.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder(toBuilder = true)
@NoArgsConstructor
@AllArgsConstructor
public class FundPayVo {
//转账单号
private String outBizNo;
//转账账号
private String payeeAccount;
private String amount;
//转账方单号
private String payerShowName;
//转账备注
private String remark;
//转账类型
private Integer type;
private String creatIp;
private String checkName;
}
......@@ -55,7 +55,7 @@ public class WXSuppToUserPay {
private String key;
public static void main(String[] args) throws Exception, IOException {
Map<String, String> map = WXSuppToUserPay.WeiXinTiXian("oRhMfwKwjNq2Ce-TxlqfoAqsYfww", "NO_CHECK", 500+"", "活动提现", "192.168.8.109");
Map<String, String> map = WXSuppToUserPay.WeiXinTiXian("oRhMfwKwjNq2Ce-TxlqfoAqsYfww",OrderUtil.GetOrderNumber("TX"),"NO_CHECK", 500+"", "活动提现", "192.168.8.109");
if("SUCCESS".equals(map.get("return_code")))
{
if(!StringUtils.isBlank(map.get("payment_no")) && !StringUtils.isBlank(map.get("partner_trade_no")) )
......@@ -108,14 +108,14 @@ public class WXSuppToUserPay {
// System.out.println(map.get("payment_time"));
}
public static Map<String,String> WeiXinTiXian(String openid,String check_name,String amount,String desc,String spbill_create_ip) throws Exception
public static Map<String,String> WeiXinTiXian(String openid,String partnerTradeNo,String check_name,String amount,String desc,String spbill_create_ip) throws Exception
{
WXSuppToUserPay prePay = new WXSuppToUserPay();
prePay.setMch_appid(SystemConfig.WINXIN_AppID);
prePay.setMchid(SystemConfig.WINXIN_PARTNER);
prePay.setNonce_str( OrderUtil.CreateNoncestr());
prePay.setPartner_trade_no(OrderUtil.GetOrderNumber("TX"));
prePay.setPartner_trade_no(partnerTradeNo);
prePay.setOpenid(openid);
prePay.setCheck_name(check_name);
prePay.setAmount(amount);
......@@ -130,7 +130,7 @@ public class WXSuppToUserPay {
CloseableHttpClient httpclient = null;
try {
KeyStore keyStore = KeyStore.getInstance("PKCS12");
//FileInputStream instream = new FileInputStream(new File("E:/apiclient_cert.p12"));
// FileInputStream instream = new FileInputStream(new File("E:/cert/apiclient_cert.p12"));
String path = Thread.currentThread().getContextClassLoader().getResource("/").getPath();
FileInputStream instream = new FileInputStream(new File(path+"/apiclient_cert.p12"));
try {
......
package com.xxfc.platform.universal.weixin.constant;
import lombok.AllArgsConstructor;
/**
* @author libin
* @version 1.0
* @description 以下错误 如需继续打款,要使用原来的订单号
* @data 2019/10/12 9:40
*/
@AllArgsConstructor
public enum AliNeedPayErrorEnum {
SYSTEM_ERROR("系统繁忙","系统繁忙");
private String desc;
private String reason;
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String getReason() {
return reason;
}
public void setReason(String reason) {
this.reason = reason;
}
}
package com.xxfc.platform.universal.weixin.constant;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/10/12 10:22
*/
public enum PaySubErrorCodeEnum {
/**
* 普通付款异常
*/
PAY_ERROR("EPAY_10000"),
/**
* 需要继续付款错误码
*/
PAY_NEED_ERROR("EPAY_10001");
private String subCode;
PaySubErrorCodeEnum(String subCode) {
this.subCode = subCode;
}
public String getSubCode() {
return subCode;
}
public void setSubCode(String subCode) {
this.subCode = subCode;
}
}
package com.xxfc.platform.universal.weixin.constant;
import lombok.AllArgsConstructor;
/**
* @author libin
* @version 1.0
* @description 以下错误 如需继续打款,要使用原来的商户订单号
* @data 2019/10/12 9:11
*/
@AllArgsConstructor
public enum WxNeedPayErrorEnum {
NOTENOUGH("余额不足","付款帐号余额不足或资金未到账"),
SYSTEMERROR("系统繁忙,请稍后再试","微信内部接口调用发生错误"),
NAME_MISMATCH("姓名校验出错","付款人身份校验不通过"),
SIGN_ERROR("签名错误","校验签名错误"),
FREQ_LIMIT("超过频率限制,请稍后再试","接口请求频率超时接口限制"),
MONEY_LIMIT("已经达到今日付款总额上限/已达到付款给此用户额度上限","请关注接口的付款限额条件"),
CA_ERROR("商户API证书校验出错","请求没带商户API证书或者带上了错误的商户API证书"),
V2_ACCOUNT_SIMPLE_BAN("无法给非实名用户付款","用户微信支付账户未知名,无法付款"),
PARAM_IS_NOT_UTF8("请求参数中包含非utf8编码字符","接口规范要求所有请求参数都必须为utf8编码"),
SENDNUM_LIMIT("该用户今日付款次数超过限制","该用户今日付款次数超过限制");
private String desc;
private String reason;
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String getReason() {
return reason;
}
public void setReason(String reason) {
this.reason = reason;
}
}
package com.xxfc.platform.universal.weixin.constant;
/**
* @author libin
* @version 1.0
* @description 微信请求响应字段
* @data 2019/10/12 9:57
*/
public class WxResponseProperties {
public static final String ERROR_CODE = "err_code";
public static final String RETURN_CODE = "return_code";
public static final String RESULT_CODE = "result_code";
public static final String ERR_CODE_DES = "err_code_des";
public static final String PARTNER_TRADE_NO = "partner_trade_no";
}
......@@ -5,6 +5,7 @@ import com.github.wxiaoqi.security.auth.client.annotation.IgnoreUserToken;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.universal.biz.OrderPayBiz;
import com.xxfc.platform.universal.entity.OrderPay;
import com.xxfc.platform.universal.vo.FundPayVo;
import com.xxfc.platform.universal.vo.OrderPayVo;
import com.xxfc.platform.universal.weixin.util.XMLUtil;
import lombok.extern.slf4j.Slf4j;
......@@ -102,4 +103,11 @@ public class OrderPayController extends BaseController<OrderPayBiz,OrderPay> {
}
@PostMapping("/app/unauth/transfer_account")
@IgnoreUserToken
public String transferAccount(@RequestBody FundPayVo fundPayVo) throws Exception {
return baseBiz.fundTrans(fundPayVo);
}
}
\ No newline at end of file
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