Просмотр исходного кода

[Release][Merge]:商铺,车流,订单,支付,均有更新

release_toaliyun_real
hupeng 7 лет назад
Родитель
Сommit
09ec28d64a
100 измененных файлов: 4259 добавлений и 1231 удалений
  1. +16
    -16
      mallinkAdmin/src/main/java/com/simple/controller/WxCUserCarController.java
  2. +15
    -16
      mallinkAdmin/src/main/java/com/simple/controller/WxCarCmdLogController.java
  3. +439
    -0
      mallinkAdmin/src/main/java/com/simple/controller/WxCarController.java
  4. +1
    -3
      mallinkAdmin/src/main/java/com/simple/controller/WxCouponChannelController.java
  5. +16
    -1
      mallinkAdmin/src/main/java/com/simple/controller/WxCouponController.java
  6. +0
    -10
      mallinkAdmin/src/main/java/com/simple/controller/WxCouponOrderController.java
  7. +24
    -0
      mallinkAdmin/src/main/java/com/simple/controller/WxCouponSendController.java
  8. +10
    -4
      mallinkAdmin/src/main/java/com/simple/controller/WxMerchantController.java
  9. +16
    -6
      mallinkAdmin/src/main/java/com/simple/controller/WxMerchantShopController.java
  10. +1
    -1
      mallinkAdmin/src/main/java/com/simple/controller/WxMsgController.java
  11. +13
    -2
      mallinkAdmin/src/main/java/com/simple/controller/WxPayOrderController.java
  12. +22
    -21
      mallinkAdmin/src/main/java/com/simple/controller/WxRefundOrderController.java
  13. +21
    -0
      mallinkBApi/src/main/java/com/simple/config/WebMvcConfig.java
  14. +13
    -0
      mallinkBApi/src/main/java/com/simple/controller/BaseController.java
  15. +14
    -15
      mallinkBApi/src/main/java/com/simple/controller/WxCUserCarController.java
  16. +0
    -71
      mallinkBApi/src/main/java/com/simple/controller/WxCarCmdLogsController.java
  17. +2
    -2
      mallinkBApi/src/main/java/com/simple/controller/WxCouponController.java
  18. +111
    -0
      mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java
  19. +53
    -23
      mallinkBApi/src/main/java/com/simple/controller/WxOrderController.java
  20. +115
    -0
      mallinkBApi/src/main/java/com/simple/controller/WxRefundOrderController.java
  21. +253
    -326
      mallinkCApi/src/main/java/com/simple/controller/WxCarController.java
  22. +12
    -38
      mallinkCApi/src/main/java/com/simple/controller/WxCouponController.java
  23. +67
    -0
      mallinkCApi/src/main/java/com/simple/controller/WxCouponOrderController.java
  24. +51
    -37
      mallinkCApi/src/main/java/com/simple/controller/WxOrderController.java
  25. +52
    -44
      mallinkCApi/src/main/java/com/simple/controller/WxPayOrderController.java
  26. +20
    -2
      mallinkCApi/src/main/java/com/simple/controller/WxUserGrantController.java
  27. +3
    -3
      mallinkCApi/src/main/resources/application-dev.yml
  28. +21
    -4
      mallinkService/src/main/java/com/simple/common/ErrorCode.java
  29. +27
    -6
      mallinkService/src/main/java/com/simple/domain/po/WxCUserCar.java
  30. +19
    -18
      mallinkService/src/main/java/com/simple/domain/po/WxCarCmdLog.java
  31. +58
    -27
      mallinkService/src/main/java/com/simple/domain/po/WxCouponSend.java
  32. +44
    -3
      mallinkService/src/main/java/com/simple/domain/po/WxMerchant.java
  33. +10
    -0
      mallinkService/src/main/java/com/simple/domain/po/WxOrder.java
  34. +14
    -3
      mallinkService/src/main/java/com/simple/domain/po/WxPark.java
  35. +16
    -15
      mallinkService/src/main/java/com/simple/domain/po/WxPayOrder.java
  36. +222
    -0
      mallinkService/src/main/java/com/simple/domain/po/WxProfitSharingOrder.java
  37. +202
    -0
      mallinkService/src/main/java/com/simple/domain/po/WxProfitSharingReceiver.java
  38. +182
    -0
      mallinkService/src/main/java/com/simple/domain/po/WxProfitSharingResult.java
  39. +6
    -6
      mallinkService/src/main/java/com/simple/domain/po/WxRefundOrder.java
  40. +15
    -5
      mallinkService/src/main/java/com/simple/domain/po/WxShop.java
  41. +43
    -24
      mallinkService/src/main/java/com/simple/domain/vo/OrderVo.java
  42. +41
    -0
      mallinkService/src/main/java/com/simple/enums/EnumCarCmd.java
  43. +35
    -0
      mallinkService/src/main/java/com/simple/enums/EnumPayDomain.java
  44. +1
    -0
      mallinkService/src/main/java/com/simple/enums/EnumPayStatus.java
  45. +37
    -0
      mallinkService/src/main/java/com/simple/enums/EnumProfitSharingReceiverType.java
  46. +40
    -0
      mallinkService/src/main/java/com/simple/enums/EnumProfitSharingStatus.java
  47. +17
    -0
      mallinkService/src/main/java/com/simple/mapper/WxCUserCarMapper.java
  48. +0
    -17
      mallinkService/src/main/java/com/simple/mapper/WxCUserCarsMapper.java
  49. +17
    -0
      mallinkService/src/main/java/com/simple/mapper/WxCarCmdLogMapper.java
  50. +0
    -17
      mallinkService/src/main/java/com/simple/mapper/WxCarCmdLogsMapper.java
  51. +2
    -0
      mallinkService/src/main/java/com/simple/mapper/WxCouponMapper.java
  52. +0
    -6
      mallinkService/src/main/java/com/simple/mapper/WxCouponOrderMapper.java
  53. +1
    -1
      mallinkService/src/main/java/com/simple/mapper/WxPayOrderMapper.java
  54. +17
    -0
      mallinkService/src/main/java/com/simple/mapper/WxProfitSharingOrderMapper.java
  55. +17
    -0
      mallinkService/src/main/java/com/simple/mapper/WxProfitSharingReceiverMapper.java
  56. +17
    -0
      mallinkService/src/main/java/com/simple/mapper/WxProfitSharingResultMapper.java
  57. +20
    -0
      mallinkService/src/main/java/com/simple/pay/WxPayment.java
  58. +48
    -0
      mallinkService/src/main/java/com/simple/pay/WxProfitSharing.java
  59. +89
    -0
      mallinkService/src/main/java/com/simple/pay/WxProfitSharingP.java
  60. +63
    -0
      mallinkService/src/main/java/com/simple/service/WxCUserCarService.java
  61. +5
    -5
      mallinkService/src/main/java/com/simple/service/WxCarCmdLogService.java
  62. +11
    -10
      mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java
  63. +4
    -1
      mallinkService/src/main/java/com/simple/service/WxCouponService.java
  64. +1
    -1
      mallinkService/src/main/java/com/simple/service/WxMerchantService.java
  65. +6
    -7
      mallinkService/src/main/java/com/simple/service/WxMerchantShopService.java
  66. +10
    -2
      mallinkService/src/main/java/com/simple/service/WxParkService.java
  67. +31
    -24
      mallinkService/src/main/java/com/simple/service/WxPayOrderService.java
  68. +58
    -0
      mallinkService/src/main/java/com/simple/service/WxProfitSharingOrderService.java
  69. +48
    -0
      mallinkService/src/main/java/com/simple/service/WxProfitSharingReceiverService.java
  70. +7
    -7
      mallinkService/src/main/java/com/simple/service/WxProfitSharingResultService.java
  71. +2
    -1
      mallinkService/src/main/java/com/simple/service/impl/MallPermissionServiceImpl.java
  72. +1
    -1
      mallinkService/src/main/java/com/simple/service/impl/WxCUserBasicInfoServiceImpl.java
  73. +69
    -0
      mallinkService/src/main/java/com/simple/service/impl/WxCUserCarServiceImpl.java
  74. +13
    -13
      mallinkService/src/main/java/com/simple/service/impl/WxCarCmdLogServiceImpl.java
  75. +0
    -54
      mallinkService/src/main/java/com/simple/service/impl/WxCarCmdLogsServiceImpl.java
  76. +90
    -26
      mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java
  77. +7
    -8
      mallinkService/src/main/java/com/simple/service/impl/WxCouponServiceImpl.java
  78. +1
    -1
      mallinkService/src/main/java/com/simple/service/impl/WxDateAmountRecordServiceImpl.java
  79. +8
    -1
      mallinkService/src/main/java/com/simple/service/impl/WxMerchantBUserServiceImpl.java
  80. +33
    -19
      mallinkService/src/main/java/com/simple/service/impl/WxMerchantServiceImpl.java
  81. +31
    -2
      mallinkService/src/main/java/com/simple/service/impl/WxMerchantShopServiceImpl.java
  82. +1
    -1
      mallinkService/src/main/java/com/simple/service/impl/WxMsgValidationcodeServiceImpl.java
  83. +12
    -7
      mallinkService/src/main/java/com/simple/service/impl/WxOrderServiceImpl.java
  84. +5
    -0
      mallinkService/src/main/java/com/simple/service/impl/WxParkServiceImpl.java
  85. +198
    -100
      mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java
  86. +214
    -0
      mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java
  87. +54
    -0
      mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingReceiverServiceImpl.java
  88. +54
    -0
      mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingResultServiceImpl.java
  89. +91
    -47
      mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java
  90. +10
    -0
      mallinkService/src/main/java/com/simple/utils/Utility.java
  91. +4
    -9
      mallinkService/src/main/resources/mapper/WxCUserCarMapper.xml
  92. +10
    -10
      mallinkService/src/main/resources/mapper/WxCarCmdLogMapper.xml
  93. +146
    -0
      mallinkService/src/main/resources/mapper/WxCouponMapper.xml
  94. +0
    -5
      mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml
  95. +80
    -58
      mallinkService/src/main/resources/mapper/WxCouponSendMapper.xml
  96. +24
    -13
      mallinkService/src/main/resources/mapper/WxOrderMapper.xml
  97. +7
    -1
      mallinkService/src/main/resources/mapper/WxParkMapper.xml
  98. +4
    -4
      mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml
  99. +110
    -0
      mallinkService/src/main/resources/mapper/WxProfitSharingOrderMapper.xml
  100. +98
    -0
      mallinkService/src/main/resources/mapper/WxProfitSharingReceiverMapper.xml

mallinkBApi/src/main/java/com/simple/controller/WxCUserCarsController.java → mallinkAdmin/src/main/java/com/simple/controller/WxCUserCarController.java Просмотреть файл

@@ -9,45 +9,45 @@ import com.github.pagehelper.PageInfo;
import com.simple.common.Result;
import com.simple.common.ResultData;

import com.simple.domain.po.WxCUserCars;
import com.simple.service.WxCUserCarsService;
import com.simple.domain.po.WxCUserCar;
import com.simple.service.WxCUserCarService;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;

@RestController
@RequestMapping("wxCUserCars")
public class WxCUserCarsController extends BaseController
@RequestMapping("wxCUserCar")
public class WxCUserCarController extends BaseController
{
@Autowired
private WxCUserCarsService wxCUserCarsService;
private WxCUserCarService wxCUserCarService;

private Logger logger = Logger.getLogger(WxCUserCarsController.class);
private Logger logger = Logger.getLogger(WxCUserCarController.class);
@ApiOperation("分页列表接口")
@GetMapping("list")
@ApiImplicitParams({
@ApiImplicitParam(name="pageNum",value="页数",dataType="int", paramType = "query",required=true),
@ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)})
public ResultData list(@ModelAttribute WxCUserCars wxCUserCars,Integer pageNum, Integer pageSize) {
if (null == wxCUserCars) wxCUserCars = new WxCUserCars();
final PageInfo<WxCUserCars> page = wxCUserCarsService.listAsPage(wxCUserCars, pageNum, pageSize);
public ResultData list(@ModelAttribute WxCUserCar wxCUserCar,Integer pageNum, Integer pageSize) {
if (null == wxCUserCar) wxCUserCar = new WxCUserCar();
final PageInfo<WxCUserCar> page = wxCUserCarService.listAsPage(wxCUserCar, pageNum, pageSize);
return new ResultData(page);
}

@ApiOperation("新增接口")
@PostMapping("add")
public ResultData add(@RequestBody WxCUserCars wxCUserCars) {
//Assert.notNull(wxCUserCars.getName(), "角色名不能为空");
public ResultData add(@RequestBody WxCUserCar wxCUserCar) {
//Assert.notNull(wxCUserCar.getName(), "角色名不能为空");
//Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名");
wxCUserCarsService.saveOrUpdate(wxCUserCars);
wxCUserCarService.saveOrUpdate(wxCUserCar);
return new ResultData();
}

@ApiOperation("根据id更新接口")
@PostMapping("update")
public ResultData update(@RequestBody WxCUserCars wxCUserCars) {
wxCUserCarsService.saveOrUpdate(wxCUserCars);
public ResultData update(@RequestBody WxCUserCar wxCUserCar) {
wxCUserCarService.saveOrUpdate(wxCUserCar);
return new ResultData();
}

@@ -55,7 +55,7 @@ public class WxCUserCarsController extends BaseController
@GetMapping("/del")
@ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true)
public ResultData delete(Long id) {
wxCUserCarsService.deleteById(id);
wxCUserCarService.deleteById(id);
return new ResultData(Result.SUCCESS, "删除成功", null);
}
@@ -63,7 +63,7 @@ public class WxCUserCarsController extends BaseController
@GetMapping("/findById")
@ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true)
public ResultData findById(Long id) {
return new ResultData(Result.SUCCESS,"查询成功",wxCUserCarsService.getById(id));
return new ResultData(Result.SUCCESS,"查询成功",wxCUserCarService.getById(id));
}

mallinkAdmin/src/main/java/com/simple/controller/WxCarCmdLogsController.java → mallinkAdmin/src/main/java/com/simple/controller/WxCarCmdLogController.java Просмотреть файл

@@ -2,52 +2,51 @@ package com.simple.controller;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.Assert;
import org.springframework.web.bind.annotation.*;

import com.github.pagehelper.PageInfo;
import com.simple.common.Result;
import com.simple.common.ResultData;

import com.simple.domain.po.WxCarCmdLogs;
import com.simple.service.WxCarCmdLogsService;
import com.simple.domain.po.WxCarCmdLog;
import com.simple.service.WxCarCmdLogService;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;

@RestController
@RequestMapping("wxCarCmdLogs")
public class WxCarCmdLogsController extends BaseController
public class WxCarCmdLogController extends BaseController
{
@Autowired
private WxCarCmdLogsService wxCarCmdLogsService;
private Logger logger = Logger.getLogger(WxCarCmdLogController.class);

private Logger logger = Logger.getLogger(WxCarCmdLogsController.class);
@Autowired
private WxCarCmdLogService wxCarCmdLogService;
@ApiOperation("分页列表接口")
@GetMapping("list")
@ApiImplicitParams({
@ApiImplicitParam(name="pageNum",value="页数",dataType="int", paramType = "query",required=true),
@ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)})
public ResultData list(@ModelAttribute WxCarCmdLogs wxCarCmdLogs,Integer pageNum, Integer pageSize) {
if (null == wxCarCmdLogs) wxCarCmdLogs = new WxCarCmdLogs();
final PageInfo<WxCarCmdLogs> page = wxCarCmdLogsService.listAsPage(wxCarCmdLogs, pageNum, pageSize);
public ResultData list(@ModelAttribute WxCarCmdLog wxCarCmdLogs,Integer pageNum, Integer pageSize) {
if (null == wxCarCmdLogs) wxCarCmdLogs = new WxCarCmdLog();
final PageInfo<WxCarCmdLog> page = wxCarCmdLogService.listAsPage(wxCarCmdLogs, pageNum, pageSize);
return new ResultData(page);
}

@ApiOperation("新增接口")
@PostMapping("add")
public ResultData add(@RequestBody WxCarCmdLogs wxCarCmdLogs) {
public ResultData add(@RequestBody WxCarCmdLog wxCarCmdLog) {
//Assert.notNull(wxCarCmdLogs.getName(), "角色名不能为空");
//Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名");
wxCarCmdLogsService.saveOrUpdate(wxCarCmdLogs);
wxCarCmdLogService.saveOrUpdate(wxCarCmdLog);
return new ResultData();
}

@ApiOperation("根据id更新接口")
@PostMapping("update")
public ResultData update(@RequestBody WxCarCmdLogs wxCarCmdLogs) {
wxCarCmdLogsService.saveOrUpdate(wxCarCmdLogs);
public ResultData update(@RequestBody WxCarCmdLog wxCarCmdLog) {
wxCarCmdLogService.saveOrUpdate(wxCarCmdLog);
return new ResultData();
}

@@ -55,7 +54,7 @@ public class WxCarCmdLogsController extends BaseController
@GetMapping("/del")
@ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true)
public ResultData delete(Long id) {
wxCarCmdLogsService.deleteById(id);
wxCarCmdLogService.deleteById(id);
return new ResultData(Result.SUCCESS, "删除成功", null);
}
@@ -63,7 +62,7 @@ public class WxCarCmdLogsController extends BaseController
@GetMapping("/findById")
@ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true)
public ResultData findById(Long id) {
return new ResultData(Result.SUCCESS,"查询成功",wxCarCmdLogsService.getById(id));
return new ResultData(Result.SUCCESS,"查询成功",wxCarCmdLogService.getById(id));
}

+ 439
- 0
mallinkAdmin/src/main/java/com/simple/controller/WxCarController.java Просмотреть файл

@@ -0,0 +1,439 @@
package com.simple.controller;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.simple.common.ErrorCode;
import com.simple.common.Result;
import com.simple.common.ResultData;
import com.simple.domain.po.*;
import com.simple.enums.EnumCarCmd;
import com.simple.enums.EnumCarVendor;
import com.simple.service.WxCUserCarService;
import com.simple.service.WxCarCmdLogService;
import com.simple.service.WxMerchantService;
import com.simple.service.WxParkService;
import com.simple.utils.ETCPUtil;
import com.simple.utils.TJDCarUtil;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/car")
public class WxCarController extends BaseController
{
private Logger logger = Logger.getLogger(WxCarController.class);

ETCPUtil etcp = new ETCPUtil();

TJDCarUtil tjd = new TJDCarUtil();

@Autowired
WxParkService wxParkService;

@Autowired
WxCUserCarService wxCUserCarService;

@Autowired
WxMerchantService wxMerchantService;

@Autowired
WxCarCmdLogService wxCarCmdLogService;

private WxPark getCurrentPark(MallUserInfo user) {
WxPark parkQ = new WxPark();
parkQ.setTenantId(user.getTenantId());
WxPark wxPark = wxParkService.getByObj(parkQ);
// 1, get mall's park
// future use redis to optimize
return wxPark;
}

@ApiOperation(value = "获取车场支持的厂家",notes="{}")
@GetMapping("/getVendor")
public ResultData getVendor() {
MallUserInfo user = getUser();
// 1, get mall's park
WxPark park = getCurrentPark(user);
Map map = new HashMap();
map.put("vendor", park.getVendorType());
return new ResultData(map);
}

// 优免券模板
/*
{
"id": 4974, //优免券模板 ID
"parkId": "fbqXUlfVvfc=", //车场标识
"businessId": "ZcWQ26TeJuQ=", //商家标识
title -- "businessName": "天洋广场", //商家名称
subtitle -- "name": "商家 1 小时优免券", //优免券名称
"category": "1", //优免券类型 1:小时优惠券,2:金额优惠券,3:折扣优惠券,4:免费券
price -- "categoryValue": "1.00", //优免券价值
total -- "amount": 100000, //优免券数量
valid_start_date -- "effectiveStart": "2018-02-01", //生效开始时间
valid_end_date -- "effectiveEnd": "2028-02-01",//生效结束时间
-"couponType": "0",//优惠券类型
number 库存 -- "avaliavleNum": 99993 //可用优惠券
},
*/
@ApiOperation(value = "优免券模板", notes = "{\"merchantId\":\"商户ID\"}\n输出\n" +
"{\n" +
"\"data\":{" +
"\"count\": 4," +
"\"couponPlatformModels\": [\n" +
" {\n" +
" \"id\": 4974, //优免券模板 ID\n" +
" \"parkId\": \"fbqXUlfVvfc=\", //车场标识" +
" \"businessId\": \"ZcWQ26TeJuQ=\", //商家标识" +
" \"businessName\": \"天洋广场\", //商家名称" +
" \"name\": \"商家 1 小时优免券\", //优免券名称" +
" \"category\": \"1\", //优免券类型\n 1:小时优惠券,2:金额优惠券,3:折扣优惠券,4:免费券" +
" \"categoryValue\": \"1.00\", //优免券价值\n" +
" \"amount\": 100000, //优免券数量\n" +
" \"effectiveStart\": \"2018-02-01\", //生效开始时间\n" +
" \"effectiveEnd\": \"2028-02-01\",//生效结束时间\n" +
" \"couponType\": \"0\",//优惠券类型\n" +
" \"avaliavleNum\": 99993 //可用优惠券\n" +
" },\n" +
" {...},\n" +
" {...}\n" +
" ]}}\n")
@PostMapping("/quanTemplate")
public ResultData quanTemplate(Map<String, String > paramMap) {
logger.info("quanTemplate: " + paramMap.toString());
MallUserInfo user = getUser();
/// 1, get mall's park
WxPark park = getCurrentPark(user);
if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) {
String merchantIdStr = paramMap.get("merchantId");
if (StringUtils.isBlank(merchantIdStr)) {
// 优先从从商户表里取
logger.error("quanTemplate failed, merchantId为空");
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "merchantId为空");
}
String params = park.getVendorParams();
JSONObject objParams = JSON.parseObject(params);
String url = objParams.getString("url");
String merchantNo = objParams.getString("merchantNo");
String merchantKey = objParams.getString("merchantKey");
String version = objParams.getString("version");
String parkId = park.getParkId();
// bussinessId from 参数信息
String businessId = "";
// 优先从从商户表里取
businessId = getETCPBusinessID(merchantIdStr);
if (StringUtils.isBlank(businessId)) {
// 1期只有一个虚拟商户,可以写在商场配置里
businessId = objParams.getString("businessId");
}
String ret = etcp.getBCouponList(url, merchantNo, merchantKey, version, parkId, businessId);
JSONObject retObj = JSON.parseObject(ret);
if (retObj.getIntValue("code") == 0) {
return new ResultData(retObj.getJSONObject("data"));
} else {
logger.error("quanTemplate failed, 优免券模板未发现");
return new ResultData(ErrorCode.ETCP_QUAN_TEMP_FAIL.getCode(), "优免券模板未发现");
}
}
return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "优免券模板失败");
}

private String getETCPBusinessID(String merchantIdStr) {
String businessId;
Long merchantId = 0L;
try {
merchantId = Long.valueOf(merchantIdStr);
} catch (NumberFormatException e) {
logger.error(e.getMessage());
}
WxMerchant wxMerchant = wxMerchantService.getById(merchantId);
String carParams = wxMerchant.getCarParams();
JSONObject objParams1 = JSON.parseObject(carParams);
businessId = objParams1.getString("businessId");
return businessId;
}

/**
* ETCP 车辆入场通知
* {
* "synId": "4ebd80ff-cfcf-462a-94cb-727e9fa9547c",
* "plateNumber": "渝 ATX061",
* "parkName": "ETCP 智慧停车场",
* "parkId": "1",
* "entranceTime": "2017-08-20 12:59:54",
* "userType": "76",
* "pushTime": "2017-08-20 12:59:57",
* "fixParkingId": "U7",
* "remainingDays": "11"
* }
*/
@RequestMapping(value = "/etcpParkInCallback")
public Result etcpParkInCallback(@RequestBody Map<String,String> paramMap) {
logger.info("etcpParkInCallback: " + paramMap.toString());
String etcpParkId = paramMap.get("parkId");
WxPark parkQ = new WxPark();
parkQ.setVendorType(EnumCarVendor.CAR_ETCP.getCode());
parkQ.setParkId(etcpParkId);
WxPark park = wxParkService.getByObj(parkQ);
if (park == null) {
logger.error("etcpParkInCallback: ETCP车场未找到"+ etcpParkId);
return new Result(ErrorCode.CAR_PARK_NOT_FOUND.getCode(), "ETCP车场未找到"+ etcpParkId);
}

Date currentDate = new Date();
WxCarCmdLog wxCarCmdLog = new WxCarCmdLog();
wxCarCmdLog.setTenantId(park.getTenantId());
wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode());
wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_PARK_IN.getCode());
wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap));
wxCarCmdLog.setCreateDate(currentDate);
wxCarCmdLog.setUpdateDate(currentDate);
try {
wxCarCmdLogService.saveOrUpdate(wxCarCmdLog);
} catch (Exception e) {
logger.error("etcpParkInCallback: 入库错误 "+ paramMap.toString());
return new Result(ErrorCode.DB_FAIL.getCode(), "入库错误"+paramMap.toString());
}

// TODO 发起 营销 -- 短信
return new Result(0, "ok");
}

/**
* ETCP 车辆出场通知
* {
* "synId": "fd92f645-880e-4c2a-9d7d-7081a2488181",
* "plateNumber": "渝 ATX061",
* "parkName": "ETCP 智慧停车场",
* "parkId": "1",
* "entranceTime": "2017-08-17 18:44:19",
* "userType": "76",
* "pushTime": "2017-08-20 11:57:51",
* "exitTime": "2017-08-19 12:07:19",
* "stayedTime": 148980,
* "receivableFee": 0,
* "paidServiceFee": 0,
* "fixParkingId": "U7",
* "remainingDays": "12"
* }
*/
@RequestMapping(value = "/etcpParkOutCallback")
public Result etcpParkOutCallback(@RequestParam Map<String,String> paramMap) {
logger.info("etcpParkOutCallback: " + paramMap.toString());
String etcpParkId = paramMap.get("parkId");
WxPark parkQ = new WxPark();
parkQ.setVendorType(EnumCarVendor.CAR_ETCP.getCode());
parkQ.setParkId(etcpParkId);
WxPark park = wxParkService.getByObj(parkQ);
if (park == null) {
logger.error("etcpParkInCallback: ETCP车场未找到 "+ etcpParkId);
return new Result(ErrorCode.CAR_PARK_NOT_FOUND.getCode(), "ETCP车场未找到"+ etcpParkId);
}

Date currentDate = new Date();
WxCarCmdLog wxCarCmdLog = new WxCarCmdLog();
wxCarCmdLog.setTenantId(park.getTenantId());
wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode());
wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_PARK_OUT.getCode());
wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap));
wxCarCmdLog.setCreateDate(currentDate);
wxCarCmdLog.setUpdateDate(currentDate);
try {
wxCarCmdLogService.saveOrUpdate(wxCarCmdLog);
} catch (Exception e) {
logger.error("etcpParkInCallback: 入库错误 "+ paramMap.toString());
return new Result(ErrorCode.DB_FAIL.getCode(), "入库错误"+paramMap.toString());
}

// TODO 发起 营销 -- 短信
return new Result(0, "ok");
}

/**
* ETCP 车辆解绑通知
* {
* "plateNumber": "渝 ATX061",
* "time": "2017-08-20 11:57:51"
* }
*/
@RequestMapping(value = "/etcpUnbindCarCallBack")
public Result etcpUnbindCarCallBack(@RequestParam Map<String,String> paramMap) {
logger.info("etcpUnbindCarCallBack: " + paramMap.toString());
String carNumber = paramMap.get("plateNumber");

// TODO how to get the parkId

Date currentDate = new Date();
WxCarCmdLog wxCarCmdLog = new WxCarCmdLog();
wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode());
wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_UNBIND.getCode());
wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap));
wxCarCmdLog.setCreateDate(currentDate);
wxCarCmdLog.setUpdateDate(currentDate);
try {
wxCarCmdLogService.saveOrUpdate(wxCarCmdLog);
} catch (Exception e) {
logger.error("etcpParkInCallback: 入库错误 "+ paramMap.toString());
return new Result(ErrorCode.DB_FAIL.getCode(), "入库错误"+paramMap.toString());
}

WxCUserCar userCarQ = new WxCUserCar();
userCarQ.setVendorType(EnumCarVendor.CAR_ETCP.getCode());
userCarQ.setCarNumber(carNumber);
// 数据库里删除,保持同步
try {
wxCUserCarService.deleteByObj(userCarQ);
} catch (Exception e) {
logger.error(e.getMessage());
}
// 营销 - 短信
return new Result(0, "ok");
}

/**
* ETCP 主动支付结果通知
* {
* "plateNumber": "渝 ATX061",
* "orderId": "fd92f645-880e-4c2a-9d7d-7081a2488181",
* "fee": 7.65,
* "paidServiceFee": 0.07,
* "coupon": 0,
* "time": "2017-08-20 11:57:51"
* }
*/
@RequestMapping(value = "/etcpPaidCallback")
public Result etcpPaidCallback(@RequestParam Map<String,String> paramMap) {
logger.info("etcpPaidCallback: " + paramMap.toString());
String carNumber = paramMap.get("plateNumber");

// TODO how to get the parkId

Date currentDate = new Date();
WxCarCmdLog wxCarCmdLog = new WxCarCmdLog();
wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode());
wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_PAY_MANUAL.getCode());
wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap));
wxCarCmdLog.setCreateDate(currentDate);
wxCarCmdLog.setUpdateDate(currentDate);
try {
wxCarCmdLogService.saveOrUpdate(wxCarCmdLog);
} catch (Exception e) {
logger.error("etcpParkInCallback: 入库错误 "+ paramMap.toString());
return new Result(ErrorCode.DB_FAIL.getCode(), "入库错误"+paramMap.toString());
}

// 营销 - 短信
return new Result(0, "ok");
}


/**
* TJD 车辆入场通知
* {
* "tradeId": "5836b8b52ada463ebc6199579f029565",
* "outCarId": "45454545454",
* "carNum": "京A45413",
* "carNumColor ": "blue",
* "inDt": "20170319202020",
* "parkName": "测试停车场",
* "parkId": "5836b8b52ada463ebc6199579f029561",
* "lon": "74.000272",
* "lat": "159.768703",
* "wLon": "123.523032",
* "wLat": "35.430735",
* "payUrl": "http://prep.tingjiandan.com/tcweixin/letter/prePay/payInPark.html?prePayType=16&channel=10001",
* "canFindCar": "0"
* }
*/
@RequestMapping(value = "/tjdParkInCallback")
public Map tjdParkInCallback(@RequestParam Map<String,String> paramMap) {
logger.info("tjdParkInCallback: " + paramMap.toString());
Map map = new HashMap();


String tjdParkId = paramMap.get("parkId");

WxPark parkQ = new WxPark();
parkQ.setVendorType(EnumCarVendor.CAR_TJD.getCode());
parkQ.setParkId(tjdParkId);
WxPark park = wxParkService.getByObj(parkQ);
if (park == null) {
logger.error("tjdParkInCallback: 停简单车场未找到"+ tjdParkId);
map.put("isSuccess", "0");
map.put("errorMsg", "停简单车场未找到"+ tjdParkId);
return map;
}

Date currentDate = new Date();
WxCarCmdLog wxCarCmdLog = new WxCarCmdLog();
wxCarCmdLog.setTenantId(park.getTenantId());
wxCarCmdLog.setVendorType(EnumCarVendor.CAR_TJD.getCode());
wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_PARK_IN.getCode());
wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap));
wxCarCmdLog.setCreateDate(currentDate);
wxCarCmdLog.setUpdateDate(currentDate);
try {
wxCarCmdLogService.saveOrUpdate(wxCarCmdLog);
} catch (Exception e) {
logger.error("tjdParkInCallback: 入库错误"+ paramMap.toString());
map.put("isSuccess", "0");
map.put("errorMsg", "入库错误"+ paramMap.toString());
return map;
}

map.put("isSuccess", "0");
map.put("errorMsg", "");
return map;
}

/**
* TJD 车辆出场通知
* {
* "tradeId": "5836b8b52ada463ebc6199579f029565",
* "outDt": "20170319232020",
* "lon": "74.000272",
* "lat": "159.768703",
* "wLon": "123.523032",
* "wLat": "35.430735",
* "parkAmount": "5.20"
* }
*/
@RequestMapping(value = "/tjdParkoutCallback")
public Map tjdParkOutCallback(@RequestParam Map<String,String> paramMap) {
logger.info("tjdParkoutCallback: " + paramMap.toString());
Map map = new HashMap();


String tradeId = paramMap.get("tradeId");

Date currentDate = new Date();
WxCarCmdLog wxCarCmdLog = new WxCarCmdLog();
wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode());
wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_PARK_OUT.getCode());
wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap));
wxCarCmdLog.setCreateDate(currentDate);
wxCarCmdLog.setUpdateDate(currentDate);
try {
wxCarCmdLogService.saveOrUpdate(wxCarCmdLog);
} catch (Exception e) {
logger.error("tjdParkoutCallback: 入库错误"+ paramMap.toString());
map.put("isSuccess", "0");
map.put("errorMsg", "入库错误"+ paramMap.toString());
return map;
}

map.put("isSuccess", "0");
map.put("errorMsg", "");
return map;
}
}

+ 1
- 3
mallinkAdmin/src/main/java/com/simple/controller/WxCouponChannelController.java Просмотреть файл

@@ -17,8 +17,7 @@ import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;

import java.util.ArrayList;
import java.util.List;


@RestController
@RequestMapping("wxCouponChannel")
@@ -81,7 +80,6 @@ public class WxCouponChannelController extends BaseController
public ResultData findById(@RequestBody WxCouponChannelDto wxCouponChannelDto) {
String[] ids = wxCouponChannelDto.getCouponIds().split(",");
String[] channelId = wxCouponChannelDto.getChannelId().split(",");
List<WxCouponChannel> list = new ArrayList<>();
MallUserInfo user = getUser();
wxCouponChannelService.addBatch(ids,channelId,user.getTenantId());
return new ResultData();


+ 16
- 1
mallinkAdmin/src/main/java/com/simple/controller/WxCouponController.java Просмотреть файл

@@ -117,7 +117,22 @@ public class WxCouponController extends BaseController
dto.setWxMerchant(merchant);
return new ResultData(Result.SUCCESS,"查询成功",dto);
}


@ApiOperation("分页列表接口")
@GetMapping("send/list")
@ApiImplicitParams({
@ApiImplicitParam(name="pageNum",value="页数",dataType="int", paramType = "query",required=true),
@ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)})
public ResultData sendList(@ModelAttribute WxCoupon wxCoupon,Integer pageNum, Integer pageSize) {
if (null == wxCoupon) wxCoupon = new WxCoupon();
wxCoupon.setTenantId(getTenantId());
wxCoupon.setStatus(1);
PageInfo<WxCoupon> page = null;
page = wxCouponService.findCanSendList(wxCoupon, pageNum, pageSize);

return new ResultData(page);
}
}

+ 0
- 10
mallinkAdmin/src/main/java/com/simple/controller/WxCouponOrderController.java Просмотреть файл

@@ -64,14 +64,4 @@ public class WxCouponOrderController extends BaseController
public ResultData findById(Long id) {
return new ResultData(Result.SUCCESS,"查询成功",wxCouponOrderService.getById(id));
}

@ApiOperation("核销接口")
@PostMapping("verify")
public ResultData verify(@RequestBody WxCouponOrder wxCouponOrder) {
wxCouponOrderService.verify(wxCouponOrder.getId(),getUser());
return new ResultData();
}
}

+ 24
- 0
mallinkAdmin/src/main/java/com/simple/controller/WxCouponSendController.java Просмотреть файл

@@ -1,5 +1,7 @@
package com.simple.controller;

import com.simple.domain.po.WxCoupon;
import com.simple.service.WxCouponService;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.Assert;
@@ -15,12 +17,17 @@ import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;

import java.util.Date;
import java.util.List;

@RestController
@RequestMapping("wxCouponSend")
public class WxCouponSendController extends BaseController
{
@Autowired
private WxCouponSendService wxCouponSendService;
@Autowired
private WxCouponService wxCouponService;

private Logger logger = Logger.getLogger(WxCouponSendController.class);
@@ -31,6 +38,7 @@ public class WxCouponSendController extends BaseController
@ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)})
public ResultData list(@ModelAttribute WxCouponSend wxCouponSend,Integer pageNum, Integer pageSize) {
if (null == wxCouponSend) wxCouponSend = new WxCouponSend();
wxCouponSend.setTenantId(getTenantId());
final PageInfo<WxCouponSend> page = wxCouponSendService.listAsPage(wxCouponSend, pageNum, pageSize);
return new ResultData(page);
}
@@ -38,6 +46,21 @@ public class WxCouponSendController extends BaseController
@ApiOperation("新增接口")
@PostMapping("add")
public ResultData add(@RequestBody WxCouponSend wxCouponSend) {
List<WxCouponSend> wxCouponSendList = wxCouponSendService.listAsPage(wxCouponSend,1,1).getList();
if(wxCouponSendList!=null&&!wxCouponSendList.isEmpty()){
return new ResultData(Result.ERROR,"已经添加过该券");
}
WxCoupon wxCoupon = wxCouponService.getById(wxCouponSend.getCouponId());
if(wxCoupon.getSendEndDate().before(new Date())){
return new ResultData(Result.ERROR,"发放日期异常");
}

wxCouponSend.setMerchantId(wxCoupon.getMerchantId());
wxCouponSend.setType(wxCoupon.getType());
wxCouponSend.setTenantId(wxCoupon.getTenantId());
wxCouponSend.setTitle(wxCoupon.getTitle());
wxCouponSend.setSendStartTime(wxCoupon.getSendStartDate());
wxCouponSend.setSendEndTime(wxCoupon.getSendEndDate());
//Assert.notNull(wxCouponSend.getName(), "角色名不能为空");
//Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名");
wxCouponSendService.saveOrUpdate(wxCouponSend);
@@ -47,6 +70,7 @@ public class WxCouponSendController extends BaseController
@ApiOperation("根据id更新接口")
@PostMapping("update")
public ResultData update(@RequestBody WxCouponSend wxCouponSend) {
wxCouponSend.setTenantId(getTenantId());
wxCouponSendService.saveOrUpdate(wxCouponSend);
return new ResultData();
}


+ 10
- 4
mallinkAdmin/src/main/java/com/simple/controller/WxMerchantController.java Просмотреть файл

@@ -34,11 +34,11 @@ public class WxMerchantController extends BaseController

@ApiOperation("新增接口")
@PostMapping("add")
public ResultData add(@ModelAttribute WxMerchant wxMerchant,String shopids, String userids) {
public ResultData add(@RequestBody WxMerchant wxMerchant) {
//Assert.notNull(wxMerchant.getName(), "角色名不能为空");
//Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名");
wxMerchant.setTenantId(getTenantId());
wxMerchantService.saveOrUpdate(wxMerchant,shopids,userids);
wxMerchantService.saveOrUpdate(wxMerchant);
return new ResultData();
}

@@ -63,7 +63,13 @@ public class WxMerchantController extends BaseController
public ResultData findById(Long id) {
return new ResultData(Result.SUCCESS,"查询成功",wxMerchantService.getById(id));
}

@ApiOperation("停用")
@GetMapping("disable")
@ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true)
public ResultData disable(Long id) {
wxMerchantService.disable(id);
return new ResultData(Result.SUCCESS,"停用成功");
}
}

+ 16
- 6
mallinkAdmin/src/main/java/com/simple/controller/WxMerchantShopController.java Просмотреть файл

@@ -1,19 +1,17 @@
package com.simple.controller;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.Assert;
import org.springframework.web.bind.annotation.*;

import com.github.pagehelper.PageInfo;
import com.simple.common.Result;
import com.simple.common.ResultData;

import com.simple.domain.po.WxMerchantShop;
import com.simple.domain.po.WxShop;
import com.simple.service.WxMerchantShopService;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("wxMerchantShop")
@@ -35,6 +33,18 @@ public class WxMerchantShopController extends BaseController
return new ResultData(page);
}

@ApiOperation("获取关联商铺信息")
@GetMapping("queryShopList")
@ApiImplicitParams({
@ApiImplicitParam(name="pageNum",value="页数",dataType="int", paramType = "query",required=true),
@ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)})
public ResultData queryShopList(@ModelAttribute WxMerchantShop wxMerchantShop,Integer pageNum, Integer pageSize) {
if (null == wxMerchantShop) wxMerchantShop = new WxMerchantShop();
final PageInfo<WxShop> page = wxMerchantShopService.queryShopList(wxMerchantShop, pageNum, pageSize);
return new ResultData(page);
}


@ApiOperation("新增接口")
@PostMapping("add")
public ResultData add(@RequestBody WxMerchantShop wxMerchantShop) {


+ 1
- 1
mallinkAdmin/src/main/java/com/simple/controller/WxMsgController.java Просмотреть файл

@@ -72,7 +72,7 @@ public class WxMsgController extends BaseController


@RequestMapping("/excleupload")
public ResultData courseplanimport(@RequestParam("file") MultipartFile file) {
public ResultData excleupload(@RequestParam("file") MultipartFile file) {
if (file.isEmpty()) {
return new ResultData(Result.SUCCESS,"上传文件不能为空");
}


+ 13
- 2
mallinkAdmin/src/main/java/com/simple/controller/WxPayOrderController.java Просмотреть файл

@@ -1,5 +1,6 @@
package com.simple.controller;

import com.simple.service.WxProfitSharingOrderService;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.Assert;
@@ -66,7 +67,17 @@ public class WxPayOrderController extends BaseController
public ResultData findById(Long id) {
return new ResultData(Result.SUCCESS,"查询成功",wxPayOrderService.getById(id));
}



@Autowired
private WxProfitSharingOrderService xProfitSharingOrderService;

@ApiOperation("测试分账")
@GetMapping("/sharing")
public ResultData test() {
xProfitSharingOrderService.test();
return new ResultData();
}
}

+ 22
- 21
mallinkAdmin/src/main/java/com/simple/controller/WxRefundOrderController.java Просмотреть файл

@@ -15,27 +15,29 @@ import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;

import java.util.Map;

@RestController
@RequestMapping("wxRefundOrder")
public class WxRefundOrderController extends BaseController
{
@Autowired
@RequestMapping("/api/refund")
public class WxRefundOrderController extends BaseController {
@Autowired
private WxRefundOrderService wxRefundOrderService;

private Logger logger = Logger.getLogger(WxRefundOrderController.class);
@ApiOperation("分页列表接口")


@ApiOperation("分页列表接口")
@GetMapping("list")
@ApiImplicitParams({
@ApiImplicitParam(name="pageNum",value="页数",dataType="int", paramType = "query",required=true),
@ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)})
public ResultData list(@ModelAttribute WxRefundOrder wxRefundOrder,Integer pageNum, Integer pageSize) {
if (null == wxRefundOrder) wxRefundOrder = new WxRefundOrder();
@ApiImplicitParams({
@ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true),
@ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)})
public ResultData list(@ModelAttribute WxRefundOrder wxRefundOrder, Integer pageNum, Integer pageSize) {
if (null == wxRefundOrder) wxRefundOrder = new WxRefundOrder();
final PageInfo<WxRefundOrder> page = wxRefundOrderService.listAsPage(wxRefundOrder, pageNum, pageSize);
return new ResultData(page);
}

@ApiOperation("新增接口")
@ApiOperation("新增接口")
@PostMapping("add")
public ResultData add(@RequestBody WxRefundOrder wxRefundOrder) {
//Assert.notNull(wxRefundOrder.getName(), "角色名不能为空");
@@ -53,19 +55,18 @@ public class WxRefundOrderController extends BaseController

@ApiOperation("根据id删除接口")
@GetMapping("/del")
@ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true)
@ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true)
public ResultData delete(Long id) {
wxRefundOrderService.deleteById(id);
return new ResultData(Result.SUCCESS, "删除成功", null);
}
@ApiOperation("根据id查询接口")
@GetMapping("/findById")
@ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true)
@ApiOperation("根据id查询接口")
@GetMapping("/findById")
@ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true)
public ResultData findById(Long id) {
return new ResultData(Result.SUCCESS,"查询成功",wxRefundOrderService.getById(id));
return new ResultData(Result.SUCCESS, "查询成功", wxRefundOrderService.getById(id));
}


}

+ 21
- 0
mallinkBApi/src/main/java/com/simple/config/WebMvcConfig.java Просмотреть файл

@@ -1,14 +1,20 @@
package com.simple.config;

import com.alibaba.fastjson.serializer.SerializeConfig;
import com.alibaba.fastjson.serializer.ToStringSerializer;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import com.simple.interceptor.AuthorizationInterceptor;
import com.simple.resolver.LoginUserHandlerMethodArgumentResolver;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

import java.math.BigInteger;
import java.util.List;

/**
@@ -44,4 +50,19 @@ public class WebMvcConfig extends WebMvcConfigurerAdapter {
//registry.addResourceHandler("/app/**").addResourceLocations("classpath:/app/");

}

@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
FastJsonHttpMessageConverter fastConverter =
new FastJsonHttpMessageConverter();

FastJsonConfig fastJsonConfig = new FastJsonConfig();
SerializeConfig serializeConfig = SerializeConfig.globalInstance;
serializeConfig.put(BigInteger.class, ToStringSerializer.instance);
serializeConfig.put(Long.class, ToStringSerializer.instance);
serializeConfig.put(Long.TYPE, ToStringSerializer.instance);
fastJsonConfig.setSerializeConfig(serializeConfig);
fastConverter.setFastJsonConfig(fastJsonConfig);
converters.add(fastConverter);
}
}

+ 13
- 0
mallinkBApi/src/main/java/com/simple/controller/BaseController.java Просмотреть файл

@@ -88,4 +88,17 @@ public class BaseController {
service.setWxMaConfig(config);
return service;
}

public WxMaService getWeappServiceByAppInfo(WxAppinfo appinfo) {
WxMaInMemoryConfig config = new WxMaInMemoryConfig();
config.setAppid(appinfo.getAppId());
config.setSecret(appinfo.getSecret());
config.setToken(appinfo.getToken());
config.setAesKey(appinfo.getAesKey());
config.setMsgDataFormat(appinfo.getMsgDataFormat());

WxMaService service = new WxMaServiceImpl();
service.setWxMaConfig(config);
return service;
}
}

mallinkAdmin/src/main/java/com/simple/controller/WxCUserCarsController.java → mallinkBApi/src/main/java/com/simple/controller/WxCUserCarController.java Просмотреть файл

@@ -2,52 +2,51 @@ package com.simple.controller;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.Assert;
import org.springframework.web.bind.annotation.*;

import com.github.pagehelper.PageInfo;
import com.simple.common.Result;
import com.simple.common.ResultData;

import com.simple.domain.po.WxCUserCars;
import com.simple.service.WxCUserCarsService;
import com.simple.domain.po.WxCUserCar;
import com.simple.service.WxCUserCarService;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;

@RestController
@RequestMapping("wxCUserCars")
public class WxCUserCarsController extends BaseController
public class WxCUserCarController extends BaseController
{
@Autowired
private WxCUserCarsService wxCUserCarsService;
private WxCUserCarService wxCUserCarService;

private Logger logger = Logger.getLogger(WxCUserCarsController.class);
private Logger logger = Logger.getLogger(WxCUserCarController.class);
@ApiOperation("分页列表接口")
@GetMapping("list")
@ApiImplicitParams({
@ApiImplicitParam(name="pageNum",value="页数",dataType="int", paramType = "query",required=true),
@ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)})
public ResultData list(@ModelAttribute WxCUserCars wxCUserCars,Integer pageNum, Integer pageSize) {
if (null == wxCUserCars) wxCUserCars = new WxCUserCars();
final PageInfo<WxCUserCars> page = wxCUserCarsService.listAsPage(wxCUserCars, pageNum, pageSize);
public ResultData list(@ModelAttribute WxCUserCar wxCUserCars,Integer pageNum, Integer pageSize) {
if (null == wxCUserCars) wxCUserCars = new WxCUserCar();
final PageInfo<WxCUserCar> page = wxCUserCarService.listAsPage(wxCUserCars, pageNum, pageSize);
return new ResultData(page);
}

@ApiOperation("新增接口")
@PostMapping("add")
public ResultData add(@RequestBody WxCUserCars wxCUserCars) {
public ResultData add(@RequestBody WxCUserCar wxCUserCars) {
//Assert.notNull(wxCUserCars.getName(), "角色名不能为空");
//Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名");
wxCUserCarsService.saveOrUpdate(wxCUserCars);
wxCUserCarService.saveOrUpdate(wxCUserCars);
return new ResultData();
}

@ApiOperation("根据id更新接口")
@PostMapping("update")
public ResultData update(@RequestBody WxCUserCars wxCUserCars) {
wxCUserCarsService.saveOrUpdate(wxCUserCars);
public ResultData update(@RequestBody WxCUserCar wxCUserCar) {
wxCUserCarService.saveOrUpdate(wxCUserCar);
return new ResultData();
}

@@ -55,7 +54,7 @@ public class WxCUserCarsController extends BaseController
@GetMapping("/del")
@ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true)
public ResultData delete(Long id) {
wxCUserCarsService.deleteById(id);
wxCUserCarService.deleteById(id);
return new ResultData(Result.SUCCESS, "删除成功", null);
}
@@ -63,7 +62,7 @@ public class WxCUserCarsController extends BaseController
@GetMapping("/findById")
@ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true)
public ResultData findById(Long id) {
return new ResultData(Result.SUCCESS,"查询成功",wxCUserCarsService.getById(id));
return new ResultData(Result.SUCCESS,"查询成功",wxCUserCarService.getById(id));
}

+ 0
- 71
mallinkBApi/src/main/java/com/simple/controller/WxCarCmdLogsController.java Просмотреть файл

@@ -1,71 +0,0 @@
package com.simple.controller;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.Assert;
import org.springframework.web.bind.annotation.*;

import com.github.pagehelper.PageInfo;
import com.simple.common.Result;
import com.simple.common.ResultData;

import com.simple.domain.po.WxCarCmdLogs;
import com.simple.service.WxCarCmdLogsService;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;

@RestController
@RequestMapping("wxCarCmdLogs")
public class WxCarCmdLogsController extends BaseController
{
@Autowired
private WxCarCmdLogsService wxCarCmdLogsService;

private Logger logger = Logger.getLogger(WxCarCmdLogsController.class);
@ApiOperation("分页列表接口")
@GetMapping("list")
@ApiImplicitParams({
@ApiImplicitParam(name="pageNum",value="页数",dataType="int", paramType = "query",required=true),
@ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)})
public ResultData list(@ModelAttribute WxCarCmdLogs wxCarCmdLogs,Integer pageNum, Integer pageSize) {
if (null == wxCarCmdLogs) wxCarCmdLogs = new WxCarCmdLogs();
final PageInfo<WxCarCmdLogs> page = wxCarCmdLogsService.listAsPage(wxCarCmdLogs, pageNum, pageSize);
return new ResultData(page);
}

@ApiOperation("新增接口")
@PostMapping("add")
public ResultData add(@RequestBody WxCarCmdLogs wxCarCmdLogs) {
//Assert.notNull(wxCarCmdLogs.getName(), "角色名不能为空");
//Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名");
wxCarCmdLogsService.saveOrUpdate(wxCarCmdLogs);
return new ResultData();
}

@ApiOperation("根据id更新接口")
@PostMapping("update")
public ResultData update(@RequestBody WxCarCmdLogs wxCarCmdLogs) {
wxCarCmdLogsService.saveOrUpdate(wxCarCmdLogs);
return new ResultData();
}

@ApiOperation("根据id删除接口")
@GetMapping("/del")
@ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true)
public ResultData delete(Long id) {
wxCarCmdLogsService.deleteById(id);
return new ResultData(Result.SUCCESS, "删除成功", null);
}
@ApiOperation("根据id查询接口")
@GetMapping("/findById")
@ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true)
public ResultData findById(Long id) {
return new ResultData(Result.SUCCESS,"查询成功",wxCarCmdLogsService.getById(id));
}
}

+ 2
- 2
mallinkBApi/src/main/java/com/simple/controller/WxCouponController.java Просмотреть файл

@@ -19,11 +19,11 @@ import io.swagger.annotations.ApiOperation;
@RequestMapping("wxCoupon")
public class WxCouponController extends BaseController
{
private Logger logger = Logger.getLogger(WxCouponController.class);

@Autowired
private WxCouponService wxCouponService;

private Logger logger = Logger.getLogger(WxCouponController.class);
@ApiOperation("分页列表接口")
@GetMapping("list")
@ApiImplicitParams({


+ 111
- 0
mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java Просмотреть файл

@@ -0,0 +1,111 @@
package com.simple.controller;

import com.github.pagehelper.PageInfo;
import com.simple.common.ErrorCode;
import com.simple.common.Result;
import com.simple.common.ResultData;
import com.simple.domain.po.WxCouponOrder;
import com.simple.exception.MallinkException;
import com.simple.service.WxCouponOrderService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

@RestController
@RequestMapping("/api/couponOrder")
@Api(description = "核销和用户卡券查询接口")
public class WxCouponOrderController extends BaseController {
private Logger logger = Logger.getLogger(WxCouponOrderController.class);

@Autowired
private WxCouponOrderService wxCouponOrderService;

@ApiOperation(value = "核销接口", notes = "{\"couponOrderId\":\"string\"}")
@PostMapping("verify")
public ResultData verify(@RequestBody Map<String, String> paramMap) {
logger.info(paramMap.toString());
String couponOrderIdStr = paramMap.get("couponOrderId");
if (StringUtils.isBlank(couponOrderIdStr)) {
logger.error("couponOrderId不能为空: " + paramMap.toString());
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "couponOrderId不能为空");
}
Long couponOrderId = 0L;
try {
couponOrderId = Long.valueOf(couponOrderIdStr);
} catch (NumberFormatException e) {
couponOrderId = 0L;
logger.error("couponOrderId参数不正确: " + paramMap.toString());
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "couponOrderId参数不正确");
}
try {
ResultData rd = wxCouponOrderService.verify(couponOrderId, getUser().getId());
return rd;
} catch (MallinkException e) {
logger.error("核销异常: " + e.getMessage());
return new ResultData(e.getErrorCode(), e.getMessage());
} catch (Exception e) {
logger.error("核销异常: " + e.getMessage());
return new ResultData(ErrorCode.VERIFY_ERROR, e.getMessage());
}
}

@ApiOperation(value = "退券接口", notes = "{\"couponOrderId\":\"string\"}")
@PostMapping("refund")
public ResultData refund(@RequestBody Map<String, String> paramMap) {
logger.info(paramMap.toString());
String couponOrderIdStr = paramMap.get("couponOrderId");
if (StringUtils.isBlank(couponOrderIdStr)) {
logger.error("couponOrderId不能为空: " + paramMap.toString());
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "couponOrderId不能为空");
}
Long couponOrderId = 0L;
try {
couponOrderId = Long.valueOf(couponOrderIdStr);
} catch (NumberFormatException e) {
logger.error("couponOrderId参数不正确: " + paramMap.toString());
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "couponOrderId参数不正确");
}
try {
ResultData rd = wxCouponOrderService.refund(couponOrderId, getUser().getId());
return rd;
} catch (MallinkException e) {
logger.error("退券异常: " + e.getMessage());
return new ResultData(e.getErrorCode(), e.getMessage());
} catch (Exception e) {
logger.error("退券异常: " + e.getMessage());
return new ResultData(ErrorCode.REFUND_ORDER_ERROR, e.getMessage());
}
}

@ApiOperation("分页列表接口")
@GetMapping("list")
@ApiImplicitParams({
@ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true),
@ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)})
public ResultData list(@ModelAttribute WxCouponOrder wxCouponOrder, Integer pageNum, Integer pageSize) {
if (null == wxCouponOrder) wxCouponOrder = new WxCouponOrder();
final PageInfo<WxCouponOrder> page = wxCouponOrderService.listAsPage(wxCouponOrder, pageNum, pageSize);
return new ResultData(page);
}

@ApiOperation("根据id更新接口")
@PostMapping("update")
public ResultData update(@RequestBody WxCouponOrder wxCouponOrder) {
wxCouponOrderService.saveOrUpdate(wxCouponOrder);
return new ResultData();
}

@ApiOperation("根据id查询接口")
@GetMapping("/findById")
@ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true)
public ResultData findById(Long id) {
return new ResultData(Result.SUCCESS, "查询成功", wxCouponOrderService.getById(id));
}
}

+ 53
- 23
mallinkBApi/src/main/java/com/simple/controller/WxOrderController.java Просмотреть файл

@@ -1,7 +1,11 @@
package com.simple.controller;

import com.simple.common.ErrorCode;
import com.simple.domain.po.WxMerchantBUser;
import com.simple.domain.vo.OrderVo;
import com.simple.enums.EnumOrderStatus;
import io.swagger.models.auth.In;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.Assert;
@@ -32,45 +36,71 @@ public class WxOrderController extends BaseController {
@ApiImplicitParams({
@ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true),
@ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true),
@ApiImplicitParam(name = "merchantId", value = "B端用户ID", dataType = "Long", paramType = "query", required = true),
@ApiImplicitParam(name = "cUserId", value = "C端用户ID", dataType = "Long", paramType = "query", required = false),
@ApiImplicitParam(name = "orderId", value = "订单ID", dataType = "Long", paramType = "query", required = false),
@ApiImplicitParam(name = "couponId", value = "券ID", dataType = "Long", paramType = "query", required = false),
@ApiImplicitParam(name = "status", value = "订单状态:-1全部;0-已下单/待付款;1-已支付;2-已取消(限定时间内未付款);3-未退款/待退款;4-已退款;5-退款失败", required = false, dataType = "Integer"),
@ApiImplicitParam(name = "orderStatus", value = "订单状态:-1全部;0-已下单/待付款;1-已支付;2-已取消(限定时间内未付款);3-未退款/待退款;4-已退款;5-退款失败", required = false, dataType = "Integer"),
@ApiImplicitParam(name = "couponStatus", value = "券状态:-1全部;3:已领取/已购买/未核销/未使用,4:已核销/已使用,5:已过期,6:已退券", required = false, dataType = "Integer")
})
public ResultData list(@ModelAttribute OrderVo orderVo, Integer pageNum, Integer pageSize) {
public ResultData list(Integer orderStatus, Integer couponStatus, Integer pageNum, Integer pageSize) {
WxMerchantBUser user = getUser();
OrderVo orderVo = new OrderVo();
orderVo.setbUserId(user.getId());
if (orderStatus != -1)
orderVo.setOrderStatus(orderStatus);
if (couponStatus != -1)
orderVo.setCouponStatus(couponStatus);
final PageInfo<Map<String,Object>> page = wxOrderService.bQueryListMap(orderVo, pageNum, pageSize);
return new ResultData(page);
}

@ApiOperation("订单详情")
@ApiOperation(value = "订单详情", notes = "{\"couponOrderId\":\"String\",\"orderId\":\"String\",\"couponId\":\"String\"}")
@GetMapping("detail")
@ApiImplicitParams({
@ApiImplicitParam(name = "merchantId", value = "B端用户ID", dataType = "Long", paramType = "query", required = true),
@ApiImplicitParam(name = "cUserId", value = "C端用户ID", dataType = "Long", paramType = "query", required = false),
@ApiImplicitParam(name = "orderId", value = "订单ID", dataType = "Long", paramType = "query", required = false),
@ApiImplicitParam(name = "couponId", value = "券ID", dataType = "Long", paramType = "query", required = false),
@ApiImplicitParam(name = "status", value = "订单状态:-1全部;0-已下单/待付款;1-已支付;2-已取消(限定时间内未付款);3-未退款/待退款;4-已退款;5-退款失败", required = false, dataType = "Integer"),
@ApiImplicitParam(name = "couponStatus", value = "券状态:-1全部;3:已领取/已购买/未核销/未使用,4:已核销/已使用,5:已过期,6:已退券", required = false, dataType = "Integer")
})
public ResultData orderDetail(@ModelAttribute OrderVo orderVo) {
public ResultData orderDetail(@RequestBody Map<String, String> paramMap) {
//Assert.notNull(wxOrders.getName(), "角色名不能为空");
//Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名");
String couponOrderIdStr = paramMap.get("couponOrderId");
String orderIdStr = paramMap.get("orderId");
String couponIdStr = paramMap.get("couponId");
if (StringUtils.isBlank(couponOrderIdStr)) {
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "couponOrderId不能为空");
}
if (StringUtils.isBlank(orderIdStr)) {
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "orderId不能为空");
}
if (StringUtils.isBlank(couponIdStr)) {
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "couponId不能为空");
}
Long couponOrderId = 0L, orderId = 0L, couponId = 0L;
try {
couponOrderId = Long.valueOf(couponOrderIdStr);
orderId = Long.valueOf(orderIdStr);
couponId = Long.valueOf(couponIdStr);
} catch (NumberFormatException e) {
logger.error("couponOrderId " + couponOrderIdStr + ", e:" + e.getMessage());
}
WxMerchantBUser user = getUser();
OrderVo orderVo = new OrderVo();
orderVo.setbUserId(user.getId());
orderVo.setOrderId(orderId);
orderVo.setCouponId(couponId);
Map<String,Object> map = wxOrderService.queryObject(orderVo);
return new ResultData(map);
}

@ApiOperation("手工退款")
@ApiOperation(value = "手工退款", notes = "{\"orderId\":\"string\"}")
@PostMapping("refund")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "订单ID", required = true, dataType = "Long")
})
public ResultData expiringOrder(@RequestBody WxOrder wxOrder) {
public ResultData expiringOrder(@RequestBody Map<String, String> paramMap) {
//Assert.notNull(wxOrders.getName(), "角色名不能为空");
//Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名");
// 1.
//wxOrderService.updateOrderStatus(wxOrder.getId(), EnumOrderStatus.ORDER_STATUS_PENDING_REFUND);
String orderIdStr = paramMap.get("orderId");
if (StringUtils.isBlank(orderIdStr)) {
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "orderId不能为空");
}
Long orderId = 0L;
try {
orderId = Long.valueOf(orderIdStr);
} catch (NumberFormatException e) {
logger.error("orderId " + orderIdStr + ", e:" + e.getMessage());
}
wxOrderService.updateOrderStatus(orderId, EnumOrderStatus.ORDER_STATUS_PENDING_REFUND);
return new ResultData();
}
}

+ 115
- 0
mallinkBApi/src/main/java/com/simple/controller/WxRefundOrderController.java Просмотреть файл

@@ -0,0 +1,115 @@
package com.simple.controller;

import com.github.pagehelper.PageInfo;
import com.simple.common.ErrorCode;
import com.simple.common.Result;
import com.simple.common.ResultData;
import com.simple.domain.po.*;
import com.simple.enums.EnumPayWay;
import com.simple.exception.MallinkException;
import com.simple.service.WxRefundOrderService;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

@RestController
@RequestMapping("/api/refund")
public class WxRefundOrderController extends BaseController
{
private Logger logger = Logger.getLogger(WxRefundOrderController.class);

@Autowired
private WxRefundOrderService wxRefundOrderService;

@ApiOperation(value = "发起退款", notes = "{\"orderId\":,\"string\", \"payOrderId\":\"string\"}")
@PostMapping("/create")
public ResultData create(@RequestBody Map<String, String> paramMap) {
logger.info("/api/refund/create" + paramMap.toString());
//Assert.notNull(wxRefundOrder.getName(), "角色名不能为空");
//Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名");
String orderIdStr = paramMap.get("orderId");
String payOrderIdStr = paramMap.get("payOrderId");
if (StringUtils.isBlank(orderIdStr)) {
logger.error("orderId不能为空: " + paramMap.toString());
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "orderId不能为空");
}
if (StringUtils.isBlank(payOrderIdStr)) {
logger.error("payOrderId不能为空: " + paramMap.toString());
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "payOrderId不能为空");
}
Long orderId = 0L;
try {
orderId = Long.valueOf(orderIdStr);
} catch (NumberFormatException e) {
logger.error("orderId参数不正确: " + paramMap.toString());
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "orderId参数不正确");
}
WxRefundOrder refundOrder = new WxRefundOrder();
refundOrder.setPayOrderNo(payOrderIdStr);
refundOrder.setOrderId(orderId);

WxMerchantBUser bUser = getUser();
WxAppinfo appinfo = getAppInfo(bUser.getAppId());
try {
wxRefundOrderService.createRefundOrder(appinfo, refundOrder, EnumPayWay.PAY_WAY_WEAPP);
return new ResultData();
} catch (MallinkException e) {
logger.error(e.getMessage());
return new ResultData(e.getErrorCode(), e.getMessage());
} catch (Exception e) {
logger.error(e.getMessage());
return new ResultData(ErrorCode.REFUND_ORDER_ERROR);
}
}
@ApiOperation("分页列表接口")
@GetMapping("list")
@ApiImplicitParams({
@ApiImplicitParam(name="pageNum",value="页数",dataType="int", paramType = "query",required=true),
@ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)})
public ResultData list(@ModelAttribute WxRefundOrder wxRefundOrder,Integer pageNum, Integer pageSize) {
if (null == wxRefundOrder) wxRefundOrder = new WxRefundOrder();
final PageInfo<WxRefundOrder> page = wxRefundOrderService.listAsPage(wxRefundOrder, pageNum, pageSize);
return new ResultData(page);
}

@ApiOperation("新增接口")
@PostMapping("add")
public ResultData add(@RequestBody WxRefundOrder wxRefundOrder) {
//Assert.notNull(wxRefundOrder.getName(), "角色名不能为空");
//Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名");
wxRefundOrderService.saveOrUpdate(wxRefundOrder);
return new ResultData();
}

@ApiOperation("根据id更新接口")
@PostMapping("update")
public ResultData update(@RequestBody WxRefundOrder wxRefundOrder) {
wxRefundOrderService.saveOrUpdate(wxRefundOrder);
return new ResultData();
}

@ApiOperation("根据id删除接口")
@GetMapping("/del")
@ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true)
public ResultData delete(Long id) {
wxRefundOrderService.deleteById(id);
return new ResultData(Result.SUCCESS, "删除成功", null);
}
@ApiOperation("根据id查询接口")
@GetMapping("/findById")
@ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true)
public ResultData findById(Long id) {
return new ResultData(Result.SUCCESS,"查询成功",wxRefundOrderService.getById(id));
}
}

+ 253
- 326
mallinkCApi/src/main/java/com/simple/controller/WxCarController.java Просмотреть файл

@@ -3,14 +3,13 @@ package com.simple.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageInfo;
import com.simple.common.ErrorCode;
import com.simple.common.Result;
import com.simple.common.ResultData;
import com.simple.domain.po.WxCarCmdLogs;
import com.simple.domain.po.WxPark;
import com.simple.domain.po.*;
import com.simple.enums.EnumCarVendor;
import com.simple.service.WxCarCmdLogsService;
import com.simple.service.WxCUserCarService;
import com.simple.service.WxMerchantService;
import com.simple.service.WxParkService;
import com.simple.utils.ETCPUtil;
import com.simple.utils.TJDCarUtil;
@@ -22,11 +21,13 @@ import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/api/car")
@RequestMapping("/car")
public class WxCarController extends BaseController
{
private Logger logger = Logger.getLogger(WxCarController.class);
@@ -38,24 +39,27 @@ public class WxCarController extends BaseController
@Autowired
WxParkService wxParkService;

@Autowired
WxCUserCarService wxCUserCarService;

@Autowired
WxMerchantService wxMerchantService;

private WxPark getCurrentPark() {
private WxPark getCurrentPark(WxCUser user) {
WxPark parkQ = new WxPark();
parkQ.setTenantId(user.getTenantId());
WxPark wxPark = wxParkService.getByObj(parkQ);
// 1, get mall's park
// future use redis to optimize
final PageInfo<WxPark> wxParkList = wxParkService.listAsPage(new WxPark(), 1, 1);
if (wxParkList.getSize() <= 0) {
return null;
}
WxPark park = wxParkList.getList().get(0);
return park;
return wxPark;
}

@ApiOperation(value = "获取车场支持的厂家",notes="")
@ApiOperation(value = "获取车场支持的厂家",notes="返回\n{\"vendor\":integer}")
@GetMapping("/getVendor")
public ResultData getVendor() {
WxCUser user = getUser();
// 1, get mall's park
WxPark park = getCurrentPark();
WxPark park = getCurrentPark(user);
Map map = new HashMap();
map.put("vendor", park.getVendorType());
return new ResultData(map);
@@ -69,12 +73,14 @@ public class WxCarController extends BaseController
@ApiOperation(value = "初始化/etcp共同登录",notes="{\"phone\":\"string\"}")
@PostMapping("/init")
public ResultData init(Map<String, String > paramMap) {
WxCUser user = getUser();
// 1, get mall's park
WxPark park = getCurrentPark();
WxPark park = getCurrentPark(user);
// 2. get vendor params
if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) {
String phone = paramMap.get("phone");
if (StringUtils.isBlank(phone)) {
logger.error("手机号为空");
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "phone为空");
}
String params = park.getVendorParams();
@@ -91,31 +97,13 @@ public class WxCarController extends BaseController
// 获取绑定的车牌
JSONObject dataObj = retObj.getJSONObject("data");
String etcpToken = dataObj.getString("token");
// TODO 异步
ret = etcp.carNum(url, merchantNo, merchantKey, version, etcpToken);
/*
{
"code": 0,
"msg": "ok",
"data": {
"number": 3,
"carList": [
"晋 BMZ105",
"云 C12345"
]
}
}
*/
retObj = JSON.parseObject(ret);
JSONObject dataObj1 = retObj.getJSONObject("data");
dataObj1.put("vendor", park.getVendorType());
JSONArray arr = dataObj1.getJSONArray("carList");
for(int i=0;i<arr.size();i++) {
// TODO save car
}
JSONObject dataObj1 = syncCarNumbers(user.getId(), user.getTenantId(), park.getVendorType(),
url, merchantNo, merchantKey, version,
etcpToken);
// c端必须保存此token
return new ResultData(dataObj1);
} else {
logger.error("共同登录失败: "+phone);
return new ResultData(ErrorCode.ETCP_LOGIN_FAIL.getCode(), "共同登录失败");
}
} else if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()){
@@ -126,25 +114,102 @@ public class WxCarController extends BaseController
return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "登录失败");
}

private JSONObject syncCarNumbers(Long cUserId, String tenantId, int iVendorType,
String url, String merchantNo, String merchantKey, String version,
String etcpToken) {
String ret;
JSONObject retObj;
ret = etcp.carNum(url, merchantNo, merchantKey, version, etcpToken);
/*{"code": 0,"msg": "ok","data": {"number": 3,"carList": ["晋 BMZ105","云 C12345"]}} */
retObj = JSON.parseObject(ret);
JSONObject dataObj1 = retObj.getJSONObject("data");
dataObj1.put("vendor", iVendorType);
JSONArray arr = dataObj1.getJSONArray("carList");
WxCUserCar queryUserCar = new WxCUserCar();
queryUserCar.setCUserId(cUserId);
List<WxCUserCar> uclist = wxCUserCarService.getList(queryUserCar);
// 删除ETCP不存在
for(WxCUserCar userCar: uclist) {
boolean bExist = isExistInArray(arr, userCar.getCarNumber());
if (!bExist) {
wxCUserCarService.deleteById(userCar.getId());
uclist.remove(userCar);
}
}
// 添加ETCP的
for(int i=0;i<arr.size();i++) {
String _carNum = arr.getString(i);
boolean bExist = isExistInList(uclist, _carNum);
if(!bExist) {
Date curr = new Date();
WxCUserCar userCar = new WxCUserCar();
userCar.setCUserId(cUserId);
userCar.setTenantId(tenantId);
userCar.setCarNumber(_carNum);
userCar.setVendorType(EnumCarVendor.CAR_ETCP.getCode());
userCar.setCreateDate(curr);
userCar.setUpdateDate(curr);
wxCUserCarService.saveOrUpdate(userCar);
}
}
return dataObj1;
}

private boolean isExistInArray(JSONArray arr, String carNumber) {
boolean bExist = false;
for(int i=0;i<arr.size();i++) {
// check carNum+cUserId是否存在, 不存在新建
String _carNum = arr.getString(i);

if (carNumber.equals(_carNum)) {
bExist = true;
break;
}
}
return bExist;
}

private boolean isExistInList(List<WxCUserCar> list, String carNumber) {
boolean bExist = false;
for(WxCUserCar userCar: list) {
if(carNumber.equals(userCar.getCarNumber())) {
bExist = true;
break;
}
}
return bExist;
}

/**
* 绑车牌
* @param paramMap
* @return
*/
@ApiOperation(value = "绑车牌", notes = "ETCP:={\"etcpToken\":\"string\",\"carNumber\":\"string\"}\n" +
"TJD:={\"carNumber\":\"string\",\"carNumColor\":\"string\",\"outCarId\":\"string\"}")
"TJD:={\"carNumber\":\"string\",\"carNumColor\":\"string\",\"outCarId\":\"string\"}\n返回\n" +
"{\n" +
" \"timestamp\": \"1464235239561\",\n" +
" \"returnCode\": \"T\",\n" +
" \"errorMsg\": \"\",\n" +
" \"returnMsg\": \"OK\",\n" +
" \"isSuccess\": \"0\",\n" +
" \"carId\": \"5836b8b52ada463ebc6199579f029561\"\n" +
"}\n")
@PostMapping("/bindCar")
public ResultData bindCar(Map<String, String > paramMap) {
WxCUser user = getUser();
// 1, get mall's park
WxPark park = getCurrentPark();
WxPark park = getCurrentPark(user);
// 2. get vendor params
if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) {
String etcpToken = paramMap.get("etcpToken");
if (StringUtils.isBlank(etcpToken)) {
logger.error("etcpToken为空");
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "etcpToken为空");
}
String carNumber = paramMap.get("carNumber");
if (StringUtils.isBlank(carNumber)) {
logger.error("carNumber为空");
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "carNumber为空");
}
String params = park.getVendorParams();
@@ -157,28 +222,40 @@ public class WxCarController extends BaseController
String ret = etcp.bindCar(url, merchantNo, merchantKey, version, etcpToken, carNumber, null);
JSONObject retObj = JSON.parseObject(ret);
if (retObj.getIntValue("code") == 0) {
// TODO insert carNumber
// 插入车牌
Date curr = new Date();
WxCUserCar userCar = new WxCUserCar();
userCar.setCUserId(user.getId());
userCar.setTenantId(user.getTenantId());
userCar.setCarNumber(carNumber);
userCar.setVendorType(EnumCarVendor.CAR_ETCP.getCode());
userCar.setCreateDate(curr);
userCar.setUpdateDate(curr);
wxCUserCarService.saveOrUpdate(userCar);
JSONObject dataObj = retObj.getJSONObject("data");
dataObj.put("vendor", park.getVendorType());
return new ResultData(dataObj);
} else {
logger.error("绑车牌失败: " + carNumber);
return new ResultData(ErrorCode.ETCP_BIND_FAIL.getCode(), "绑车牌失败");
}
}
else if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()) {
String carNumber = paramMap.get("carNumber");
if (StringUtils.isBlank(carNumber)) {
logger.error("carNumber为空");
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "carNumber为空");
}
String carNumColor = paramMap.get("carNumColor");
if (StringUtils.isBlank(carNumColor)) {
logger.error("carNumColor为空");
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "carNumColor为空");
}
String outCarId = paramMap.get("outCarId");
if (StringUtils.isBlank(outCarId)) {
logger.error("outCarId为空");
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "outCarId为空");
}
// TODO insert carNumber
String params = park.getVendorParams();
JSONObject objParams = JSON.parseObject(params);
String url = objParams.getString("url");
@@ -187,21 +264,23 @@ public class WxCarController extends BaseController
String version = objParams.getString("version");
String ret = tjd.registerCar(url, partner, key, version,
carNumber, carNumColor, null, outCarId);
/*
{
"timestamp": "1464235239561",
"returnCode": "T",
"errorMsg": "",
"returnMsg": "OK",
"isSuccess": "0",
"carId": "5836b8b52ada463ebc6199579f029561"
}
*/
JSONObject retObj = JSON.parseObject(ret);
retObj.put("vendor", park.getVendorType());
if (retObj.getString("returnCode") == "T") {
// TODO save car id
String carId = retObj.getString("carId");
// 插入车牌
Date curr = new Date();
WxCUserCar userCar = new WxCUserCar();
userCar.setCUserId(user.getId());
userCar.setTenantId(user.getTenantId());
userCar.setCarNumber(carNumber);
userCar.setVendorType(EnumCarVendor.CAR_TJD.getCode());
JSONObject jo = new JSONObject();
jo.put("carId", carId);
userCar.setVendorParams(JSON.toJSONString(jo));
userCar.setCreateDate(curr);
userCar.setUpdateDate(curr);
wxCUserCarService.saveOrUpdate(userCar);
return new ResultData(retObj);
} else {
return new ResultData(ErrorCode.TJD_BIND_FAIL.getCode(), "绑车牌失败", retObj);
@@ -215,19 +294,33 @@ public class WxCarController extends BaseController
* @param paramMap
* @return
*/
@ApiOperation(value = "解绑车牌", notes = "ETCP:={\"etcpToken\":\"string\",\"carNumber\":\"string\"}\n" +
"TJD:={\"carNumber\":\"string\",\"carNumColor\":\"string\",\"outCarId\":\"string\"}")
@ApiOperation(value = "解绑车牌", notes = "ETCP:={\"etcpToken\":\"string\",\"carNumber\":\"string\"}\n返回:\n" +
"{\n" +
" \"code\": 0,\n" +
" \"message\": \"ok\"" +
"}" +
"TJD:={\"carNumber\":\"string\",\"carNumColor\":\"string\",\"outCarId\":\"string\"}\n返回:\n" +
"{\n" +
" \"timestamp\": \"1464235239561\",\n" +
" \"returnCode\": \"T\",\n" +
" \"errorMsg\": \"\",\n" +
" \"returnMsg\": \"OK\",\n" +
" \"isSuccess\": \"0\",\n" +
"}\n")
@PostMapping("/unbindCar")
public ResultData unbindCar(Map<String, String > paramMap) {
WxCUser user = getUser();
// 1, get mall's park
WxPark park = getCurrentPark();
WxPark park = getCurrentPark(user);
if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) {
String etcpToken = paramMap.get("etcpToken");
if (StringUtils.isBlank(etcpToken)) {
logger.error("etcpToken为空");
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "etcpToken为空");
}
String carNumber = paramMap.get("carNumber");
if (StringUtils.isBlank(carNumber)) {
logger.error("carNumber为空");
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "carNumber为空");
}
String params = park.getVendorParams();
@@ -237,13 +330,17 @@ public class WxCarController extends BaseController
String merchantKey = objParams.getString("merchantKey");
String version = objParams.getString("version");


String ret = etcp.unbindCar(url, merchantNo, merchantKey, version, etcpToken, carNumber);
JSONObject retObj = JSON.parseObject(ret);
if (retObj.getIntValue("code") == 0) {
// TODO delete carNumber
WxCUserCar userCar = new WxCUserCar();
userCar.setCUserId(user.getId());
userCar.setTenantId(user.getTenantId());
userCar.setCarNumber(carNumber);
wxCUserCarService.deleteByObj(userCar);
return new ResultData();
} else {
logger.error("解绑车牌失败");
return new ResultData(ErrorCode.ETCP_UNBIND_FAIL.getCode(), "解绑车牌失败");
}
}
@@ -252,35 +349,31 @@ public class WxCarController extends BaseController
if (StringUtils.isBlank(carNumber)) {
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "carNumber为空");
}
String carId = paramMap.get("carId");
if (StringUtils.isBlank(carId)) {
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "carId为空");
}
// TODO to get TJD carId
String params = park.getVendorParams();
JSONObject objParams = JSON.parseObject(params);
String url = objParams.getString("url");
String partner = objParams.getString("partner");
String key = objParams.getString("key");
String version = objParams.getString("version");
String ret = tjd.writeOffCar(url, partner, key, version, carId);
/*
{
"timestamp": "1464235239561",
"returnCode": "T",
"errorMsg": "",
"returnMsg": "OK",
"isSuccess": "0",
"carId": "5836b8b52ada463ebc6199579f029561"
}
*/
JSONObject retObj = JSON.parseObject(ret);
if (retObj.getString("returnCode") == "T") {
// TODO remove carNumber
return new ResultData();
} else {
return new ResultData(500, "解绑车牌失败");
WxCUserCar queryOne = new WxCUserCar();
queryOne.setCarNumber(carNumber);
queryOne.setTenantId(user.getTenantId());
queryOne.setCUserId(user.getId());
WxCUserCar userCar = wxCUserCarService.getOne(queryOne);
if (userCar != null) {
String params = userCar.getVendorParams();
JSONObject objParams = JSON.parseObject(params);
String carId = objParams.getString("carId");

params = park.getVendorParams();
String url = objParams.getString("url");
String partner = objParams.getString("partner");
String key = objParams.getString("key");
String version = objParams.getString("version");
String ret = tjd.writeOffCar(url, partner, key, version, carId);
JSONObject retObj = JSON.parseObject(ret);
if (retObj.getString("returnCode") == "T") {
wxCUserCarService.deleteByObj(userCar);
return new ResultData();
} else {
return new ResultData(ErrorCode.TJD_UNBIND_FAIL, "解绑车牌失败");
}
}

}
return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "解绑车牌失败");
}
@@ -290,12 +383,46 @@ public class WxCarController extends BaseController
* @param paramMap
* @return
*/
@ApiOperation(value = "停车费", notes = "ETCP:={\"etcpToken\":\"string\",\"carNumber\":\"string\"}\n" +
"TJD:={\"carNumber\":\"string\",\"carNumColor\":\"string\",\"outCarId\":\"string\"}")
@ApiOperation(value = "停车费", notes = "ETCP:={\"etcpToken\":\"string\",\"carNumber\":\"string\"}\n输出\n{\n" +
" \"carNumber\": \"渝****87\",\n" +
" \"entranceTime\": \"2017-06-11 11:19:27\",\n" +
" \"exitTime\": \"2017-06-11 11:59:47\",\n" +
" \"orderId\": \"B9466E26-7420-4BDF-958D-E90106AB5F20\", \"parkingFee\": 2.00,\n" +
" \"remainingServiceFee\": 0,\n" +
" \"payedServiceFee\": 0,\n" +
" \"remainingParkFee\": 2.00,\n" +
" \"discountAmount\": 0,\n" +
" \"parkingId\": 3126,\n" +
" \"parkingName\": \"ETCP 停车场\",\n" +
" \"remainingFee\": 2.00,\n" +
" \"paidFee\": 0,\n" +
" \"verificationInfo\": \"FSED9JvxgAU6XJUd8YRF5YH/LpfQYzCAfcPbAOKPV3BjKSatbgIsh7EBH2JBiRoGBe3btr gzKRMTfIoFuCn1XX7HUsJYlb7JSCBArnNmEVU4JuDLLjzoqB7qhQ8KnP16\"\n" +
" }" +
"TJD:={\"carNumber\":\"string\",\"carNumColor\":\"string\",\"outCarId\":\"string\"}\n输出\n{\n" +
" \"inDt\": \"20160526112000\",\n" +
" \"timestamp\": \"1464235239561\",\n" +
" \"returnCode\": \"T\",\n" +
" \"errorMsg\": \"\",\n" +
" \"tradeId\": \"d49aeaedcf144f1faf569846d6b1667e\",\n" +
" \"parkTime\": \"2439593\",\n" +
" \"returnMsg\": \"OK\",\n" +
" \"totalAmount\": \"0.03\",\n" +
" \"isSuccess\": \"0\",\n" +
" \"unPayAmount\": \"0.03\",\n" +
" \"paidAmount\": \"0.00\",\n" +
" \"freeThroughTime\": \"15\",\n" +
" \"outDt\": \"20170321121212\",\n" +
" \"payUrl\": \"http://prep.tingjiandan.com/tcweixin/letter/prePay/payInPark.html?\n" +
" prePayType=16&channel=10001\",\n" +
" \"accountId\": \"d49aeaedcf144f1faf569846d6b16671\",\n" +
" \"freeMinsAmount\": \"0.00\",\n" +
" \"pmParkId\": \"d49aeaedcf144f1faf569846d6b16670\"\n" +
" }")
@PostMapping("/getCarStopFee")
public ResultData getCarStopFee(Map<String, String > paramMap) {
WxCUser user = getUser();
// 1, get mall's park
WxPark park = getCurrentPark();
WxPark park = getCurrentPark(user);
if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) {
String etcpToken = paramMap.get("etcpToken");
String carNumber = paramMap.get("carNumber");
@@ -316,27 +443,9 @@ public class WxCarController extends BaseController
String ret = etcp.orderUnpay(url, appId, merchantNo, merchantKey, version, etcpToken, carNumber);
JSONObject retObj = JSON.parseObject(ret);
if (retObj.getIntValue("code") == 0) {
// TODO 停车费
/*
{
"carNumber": "渝****87",
"entranceTime": "2017-06-11 11:19:27",
"exitTime": "2017-06-11 11:59:47",
"orderId": "B9466E26-7420-4BDF-958D-E90106AB5F20", "parkingFee": 2.00,
"remainingServiceFee": 0,
"payedServiceFee": 0,
"remainingParkFee": 2.00,
"discountAmount": 0,
"parkingId": 3126,
"parkingName": "ETCP 停车场",
"remainingFee": 2.00,
"paidFee": 0,
"verificationInfo": "FSED9JvxgAU6XJUd8YRF5YH/LpfQYzCAfcPbAOKPV3BjKSatbgIsh7EBH2JBiRoGBe3btr gzKRMTfIoFuCn1XX7HUsJYlb7JSCBArnNmEVU4JuDLLjzoqB7qhQ8KnP16"
}
*/
JSONObject feeObj = retObj.getJSONArray("data").getJSONObject(0);
feeObj.put("vendor", park.getVendorType());
return new ResultData(feeObj);
return new ResultData(Result.SUCCESS, "停车费获取成功", feeObj);
} else {
return new ResultData(ErrorCode.ETCP_STOP_FEE_FAIL.getCode(), "停车费获取失败");
}
@@ -346,7 +455,6 @@ public class WxCarController extends BaseController
if (StringUtils.isBlank(carNumber)) {
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "carNumber为空");
}
// TODO to get TJD carId
String params = park.getVendorParams();
JSONObject objParams = JSON.parseObject(params);
String url = objParams.getString("url");
@@ -354,31 +462,8 @@ public class WxCarController extends BaseController
String key = objParams.getString("key");
String version = objParams.getString("version");
String ret = tjd.infoForFreeMins(url, partner, key, version, carNumber);
/*
{
"inDt": "20160526112000",
"timestamp": "1464235239561",
"returnCode": "T",
"errorMsg": "",
"tradeId": "d49aeaedcf144f1faf569846d6b1667e",
"parkTime": "2439593",
"returnMsg": "OK",
"totalAmount": "0.03",
"isSuccess": "0",
"unPayAmount": "0.03",
"paidAmount": "0.00",
"freeThroughTime": "15",
"outDt": "20170321121212",
"payUrl": "http://prep.tingjiandan.com/tcweixin/letter/prePay/payInPark.html?
prePayType=16&channel=10001",
"accountId": "d49aeaedcf144f1faf569846d6b16671",
"freeMinsAmount": "0.00",
"pmParkId": "d49aeaedcf144f1faf569846d6b16670"
}
*/
JSONObject retObj = JSON.parseObject(ret);
if (retObj.getString("returnCode") == "T") {
// TODO remove carNumber
return new ResultData(retObj);
} else {
return new ResultData(ErrorCode.TJD_STOP_FEE_FAIL.getCode(), "停车费获取失败");
@@ -391,29 +476,36 @@ public class WxCarController extends BaseController
* 停车费抵扣
*
*/
@ApiOperation("停车费抵扣")
@ApiOperation(value = "停车费抵扣", notes = "{\"tradeId\":\"string\",\"deductionAmount\":\"string\",\"accountId\":\"string\",\"orderId\":\"string\"}\nresult\n{\n" +
" \"timestamp\": \"1464235239561\",\n" +
" \"returnCode\": \"T\",\n" +
" \"errorMsg\": \"\",\n" +
" \"returnMsg\": \"OK\",\n" +
" \"isSuccess\": \"0\",\n" +
" \"carId\": \"5836b8b52ada463ebc6199579f029561\"\n" +
" }")
@PostMapping("/deductionFee")
public ResultData deductionFee(Map<String, String > paramMap) {
WxCUser user = getUser();
/// 1, get mall's park
WxPark park = getCurrentPark();
WxPark park = getCurrentPark(user);
if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()) {
String tradeId = paramMap.get("tradeId");
String deductionAmount = paramMap.get("deductionAmount");
// TODO out wx_records id
String outTradeNo = paramMap.get("outTradeNo");
String accountId = paramMap.get("accountId");
String outTradeNo = paramMap.get("orderId");
if (StringUtils.isBlank(tradeId)) {
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "tradeId为空");
}
if (StringUtils.isBlank(deductionAmount)) {
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "deductionAmount为空");
}
if (StringUtils.isBlank(outTradeNo)) {
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "outTradeNo为空");
}
if (StringUtils.isBlank(accountId)) {
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "accountId为空");
}
if (StringUtils.isBlank(outTradeNo)) {
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "orderId为空");
}
String params = park.getVendorParams();
JSONObject objParams = JSON.parseObject(params);
String url = objParams.getString("url");
@@ -421,19 +513,8 @@ public class WxCarController extends BaseController
String key = objParams.getString("key");
String version = objParams.getString("version");
String ret = tjd.deductionNotSettle(url, partner, key, version, tradeId, deductionAmount, outTradeNo, accountId);
/*
{
"timestamp": "1464235239561",
"returnCode": "T",
"errorMsg": "",
"returnMsg": "OK",
"isSuccess": "0",
"carId": "5836b8b52ada463ebc6199579f029561"
}
*/
JSONObject retObj = JSON.parseObject(ret);
if (retObj.getString("returnCode") == "T") {
// TODO remove carNumber
return new ResultData();
} else {
return new ResultData(ErrorCode.TJD_DEDUCE_FEE_FAIL.getCode(), "停车费抵扣失败");
@@ -442,83 +523,36 @@ public class WxCarController extends BaseController
return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "停车费抵扣失败");
}

// 优免券模板
/*
{
"id": 4974, //优免券模板 ID
"parkId": "fbqXUlfVvfc=", //车场标识
"businessId": "ZcWQ26TeJuQ=", //商家标识
title -- "businessName": "天洋广场", //商家名称
subtitle -- "name": "商家 1 小时优免券", //优免券名称
"category": "1", //优免券类型 1:小时优惠券,2:金额优惠券,3:折扣优惠券,4:免费券
price -- "categoryValue": "1.00", //优免券价值
total -- "amount": 100000, //优免券数量
valid_start_date -- "effectiveStart": "2018-02-01", //生效开始时间
valid_end_date -- "effectiveEnd": "2028-02-01",//生效结束时间
-"couponType": "0",//优惠券类型
number 库存 -- "avaliavleNum": 99993 //可用优惠券
},
*/
@ApiOperation("优免券模板")
@PostMapping("/quanTemplate")
public ResultData quanTemplate(Map<String, String > paramMap) {
/// 1, get mall's park
WxPark park = getCurrentPark();
if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) {
String params = park.getVendorParams();
JSONObject objParams = JSON.parseObject(params);
String url = objParams.getString("url");
String merchantNo = objParams.getString("merchantNo");
String merchantKey = objParams.getString("merchantKey");
String version = objParams.getString("version");
String parkId = objParams.getString("parkId");
// bussinessId from 参数信息
String businessId = paramMap.get("businessId");
if (StringUtils.isBlank(businessId)) {
// TODO 1期只有一个虚拟商户,可以写在商场配置里
businessId = objParams.getString("businessId");
}
String ret = etcp.getBCouponList(url, merchantNo, merchantKey, version, parkId, businessId);
JSONObject retObj = JSON.parseObject(ret);
if (retObj.getIntValue("code") == 0) {
/*
"data": {
"count": 4, "couponPlatformModels": [
{
"id": 4974, //优免券模板 ID
"parkId": "fbqXUlfVvfc=", //车场标识 "businessId": "ZcWQ26TeJuQ=", //商家标识 "businessName": "天洋广场", //商家名称 "name": "商家 1 小时优免券", //优免券名称 "category": "1", //优免券类型
1:小时优惠券,2:金额优惠券,3:折扣优惠券,4:免费券 "categoryValue": "1.00", //优免券价值
"amount": 100000, //优免券数量
"effectiveStart": "2018-02-01", //生效开始时间
"effectiveEnd": "2028-02-01",//生效结束时间
"couponType": "0",//优惠券类型
"avaliavleNum": 99993 //可用优惠券
},
{...},
{...}
]
*/
return new ResultData(retObj.getJSONObject("data"));
} else {
return new ResultData(ErrorCode.ETCP_QUAN_TEMP_FAIL.getCode(), "优免券模板未发现");
}
private String getETCPBusinessID(String merchantIdStr) {
String businessId;
Long merchantId = 0L;
try {
merchantId = Long.valueOf(merchantIdStr);
} catch (NumberFormatException e) {
logger.error(e.getMessage());
}
return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "优免券模板失败");
WxMerchant wxMerchant = wxMerchantService.getById(merchantId);
String carParams = wxMerchant.getCarParams();
JSONObject objParams1 = JSON.parseObject(carParams);
businessId = objParams1.getString("businessId");
return businessId;
}

/**
* 优免券领取
* 优免券不可退
*/
@ApiOperation(value = "优免券领取", notes="ETCP:={\"etcpToken\":\"string\",\"carNumber\":\"string\",\"couponFreeId\":\"string\"}")
@ApiOperation(value = "优免券领取", notes="ETCP:={\"etcpToken\":\"string\",\"carNumber\":\"string\",\"couponFreeId\":\"string\"},输出\n{}")
@PostMapping("/getCoupon")
public ResultData getCoupon(Map<String, String > paramMap) {
WxCUser user = getUser();
/// 1, get mall's park
WxPark park = getCurrentPark();
WxPark park = getCurrentPark(user);
if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) {
String etcpToken = paramMap.get("etcpToken");
String carNumber = paramMap.get("carNumber");
String couponFreeId = paramMap.get("couponFreeId");
String merchantIdStr = paramMap.get("merchantId");
if (StringUtils.isBlank(etcpToken)) {
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "etcpToken为空");
}
@@ -531,6 +565,9 @@ public class WxCarController extends BaseController
if (StringUtils.isBlank(couponFreeId)) {
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "couponFreeId为空");
}
if (StringUtils.isBlank(merchantIdStr)) {
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "merchantId为空");
}
String params = park.getVendorParams();
JSONObject objParams = JSON.parseObject(params);
String url = objParams.getString("url");
@@ -538,9 +575,11 @@ public class WxCarController extends BaseController
String merchantKey = objParams.getString("merchantKey");
String version = objParams.getString("version");
String parkId = objParams.getString("parkId");
String businessId = paramMap.get("businessId");
String businessId = "";
// 优先从从商户表里取
businessId = getETCPBusinessID(merchantIdStr);
if (StringUtils.isBlank(businessId)) {
// TODO 1期只有一个虚拟商户,可以写在商场配置里
// 1期只有一个虚拟商户,可以写在商场配置里
businessId = objParams.getString("businessId");
}

@@ -555,116 +594,4 @@ public class WxCarController extends BaseController
}
return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "优免券领取失败");
}

// callback
// ETCP 车辆入场通知
@RequestMapping(value = "/etcpParkInCallback")
public Result etcpParkInCallback(@RequestParam Map<String,String> param) {
/*
{
"synId": "4ebd80ff-cfcf-462a-94cb-727e9fa9547c",
"plateNumber": "渝 ATX061",
"parkName": "ETCP 智慧停车场",
"parkId": "1",
"entranceTime": "2017-08-20 12:59:54",
"userType": "76",
"pushTime": "2017-08-20 12:59:57",
"fixParkingId": "U7",
"remainingDays": "11" }
*/
return new Result(0, "ok");
}
// ETCP 车辆出场通知
@RequestMapping(value = "/etcpParkOutCallback")
public Result etcpParkOutCallback(@RequestParam Map<String,String> param) {
/*
{
"synId": "fd92f645-880e-4c2a-9d7d-7081a2488181",
"plateNumber": "渝 ATX061",
"parkName": "ETCP 智慧停车场",
"parkId": "1",
"entranceTime": "2017-08-17 18:44:19",
"userType": "76",
"pushTime": "2017-08-20 11:57:51",
"exitTime": "2017-08-19 12:07:19",
"stayedTime": 148980,
"receivableFee": 0,
"paidServiceFee": 0,
"fixParkingId": "U7",
"remainingDays": "12"
}
*/
return new Result(0, "ok");
}
// ETCP 车辆解绑通知
@RequestMapping(value = "/etcpUnbindCarCallBack")
public Result etcpUnbindCarCallBack(@RequestParam Map<String,String> param) {
/*
{
"plateNumber": "渝 ATX061",
"time": "2017-08-20 11:57:51"
}
*/
return new Result(0, "ok");
}
// ETCP 主动支付结果通知
@RequestMapping(value = "/etcpPaidCallback")
public Result etcpPaidCallback(@RequestParam Map<String,String> param) {
/*
{
"plateNumber": "渝 ATX061",
"orderId": "fd92f645-880e-4c2a-9d7d-7081a2488181",
"fee": 7.65,
"paidServiceFee": 0.07,
"coupon": 0,
"time": "2017-08-20 11:57:51"
}
*/
return new Result(0, "ok");
}
// TJD 车辆入场通知
@RequestMapping(value = "/tjdParkInCallback")
public Map tjdParkInCallback(@RequestParam Map<String,String> param) {
/*
{
"tradeId": "5836b8b52ada463ebc6199579f029565",
"outCarId": "45454545454",
"carNum": "京A45413",
"carNumColor ": "blue",
"inDt": "20170319202020",
"parkName": "测试停车场",
"parkId": "5836b8b52ada463ebc6199579f029561",
"lon": "74.000272",
"lat": "159.768703",
"wLon": "123.523032",
"wLat": "35.430735",
"payUrl": "http://prep.tingjiandan.com/tcweixin/letter/prePay/payInPark.html?prePayType=16&channel=10001",
"canFindCar": "0"
}
*/
Map map = new HashMap();
map.put("isSuccess", "0");
map.put("errorMsg", "");
return map;
}
// TJD 车辆出场通知
@RequestMapping(value = "/tjdParkoutCallback")
public Map tjdParkOutCallback(@RequestParam Map<String,String> param) {
/*
{
"tradeId": "5836b8b52ada463ebc6199579f029565",
"outDt": "20170319232020",
"lon": "74.000272",
"lat": "159.768703",
"wLon": "123.523032",
"wLat": "35.430735",
"parkAmount": "5.20"
}
*/
Map map = new HashMap();
map.put("isSuccess", "0");
map.put("errorMsg", "");
return map;
}
}

+ 12
- 38
mallinkCApi/src/main/java/com/simple/controller/WxCouponController.java Просмотреть файл

@@ -17,55 +17,29 @@ import io.swagger.annotations.ApiOperation;

@RestController
@RequestMapping("wxCoupon")
public class WxCouponController extends BaseController
{
public class WxCouponController extends BaseController {
private Logger logger = Logger.getLogger(WxCouponController.class);

@Autowired
@Autowired
private WxCouponService wxCouponService;

@ApiOperation("分页列表接口")
@ApiOperation("分页列表接口")
@GetMapping("/list")
@ApiImplicitParams({
@ApiImplicitParam(name="pageNum",value="页数",dataType="int", paramType = "query",required=true),
@ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)})
public ResultData list(@ModelAttribute WxCoupon wxCoupon,Integer pageNum, Integer pageSize) {
if (null == wxCoupon) wxCoupon = new WxCoupon();
@ApiImplicitParams({
@ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true),
@ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)})
public ResultData list(@ModelAttribute WxCoupon wxCoupon, Integer pageNum, Integer pageSize) {
if (null == wxCoupon) wxCoupon = new WxCoupon();
final PageInfo<WxCoupon> page = wxCouponService.listAsPage(wxCoupon, pageNum, pageSize);
return new ResultData(page);
}

@ApiOperation("新增接口")
@PostMapping("add")
public ResultData add(@RequestBody WxCoupon wxCoupon) {
//Assert.notNull(wxCoupon.getName(), "角色名不能为空");
//Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名");
wxCouponService.saveOrUpdate(wxCoupon);
return new ResultData();
}

@ApiOperation("根据id更新接口")
@PostMapping("update")
public ResultData update(@RequestBody WxCoupon wxCoupon) {
wxCouponService.saveOrUpdate(wxCoupon);
return new ResultData();
}

@ApiOperation("根据id删除接口")
@GetMapping("/del")
@ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true)
public ResultData delete(Long id) {
wxCouponService.deleteById(id);
return new ResultData(Result.SUCCESS, "删除成功", null);
}

@ApiOperation("根据id查询接口")
@GetMapping("/findById")
@ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true)
@ApiOperation("根据id查询接口")
@GetMapping("/findById")
@ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true)
public ResultData findById(Long id) {
return new ResultData(Result.SUCCESS,"查询成功",wxCouponService.getById(id));
return new ResultData(Result.SUCCESS, "查询成功", wxCouponService.getById(id));
}



}

+ 67
- 0
mallinkCApi/src/main/java/com/simple/controller/WxCouponOrderController.java Просмотреть файл

@@ -0,0 +1,67 @@
package com.simple.controller;

import com.github.pagehelper.PageInfo;
import com.simple.common.ErrorCode;
import com.simple.common.Result;
import com.simple.common.ResultData;
import com.simple.domain.po.WxCUser;
import com.simple.domain.po.WxCouponOrder;
import com.simple.exception.MallinkException;
import com.simple.service.WxCouponOrderService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

@RestController
@RequestMapping("/api/couponOrder")
@Api(description = "用户卡券查询接口")
public class WxCouponOrderController extends BaseController {
private Logger logger = Logger.getLogger(WxCouponOrderController.class);

@Autowired
private WxCouponOrderService wxCouponOrderService;


@ApiOperation("分页列表接口")
@GetMapping("list")
@ApiImplicitParams({
@ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true),
@ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true),
@ApiImplicitParam(name = "couponOrderStatus", value="券状态状态:0,待使用 1,已核销 2,已过期 3,已作废", dataType="int", paramType = "query",required=false)
})
public ResultData list(Integer couponOrderStatus, Integer pageNum, Integer pageSize) {
WxCUser user = getUser();
WxCouponOrder wxCouponOrder = new WxCouponOrder();
wxCouponOrder.setTenantId(user.getTenantId());
wxCouponOrder.setCouponOrderStatus(couponOrderStatus);
final PageInfo<WxCouponOrder> page = wxCouponOrderService.listAsPage(wxCouponOrder, pageNum, pageSize);
return new ResultData(page);
}

@ApiOperation(value = "根据id查询接口", notes = "{\"couponOrderId\":\"string\"}")
@GetMapping("/findById")
public ResultData findById(@RequestBody Map<String, String> paramMap) {
logger.info(paramMap.toString());
String couponOrderIdStr = paramMap.get("couponOrderId");
if (StringUtils.isBlank(couponOrderIdStr)) {
logger.error("couponOrderId不能为空: " + paramMap.toString());
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "couponOrderId不能为空");
}
Long couponOrderId = 0L;
try {
couponOrderId = Long.valueOf(couponOrderIdStr);
} catch (NumberFormatException e) {
couponOrderId = 0L;
logger.error("couponOrderId参数不正确: " + paramMap.toString());
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "couponOrderId参数不正确");
}
return new ResultData(Result.SUCCESS, "查询成功", wxCouponOrderService.getById(couponOrderId));
}
}

+ 51
- 37
mallinkCApi/src/main/java/com/simple/controller/WxOrderController.java Просмотреть файл

@@ -4,6 +4,7 @@ import com.simple.common.ErrorCode;
import com.simple.domain.po.WxCUser;
import com.simple.enums.EnumOrderStatus;
import com.simple.exception.MallinkException;
import io.swagger.models.auth.In;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
@@ -51,64 +52,77 @@ public class WxOrderController extends BaseController {
}
}

@ApiOperation("取消订单")
@ApiOperation(value = "取消订单", notes = "{\"orderId\":\"string\"}")
@PostMapping("cancel")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "订单ID", required = true, dataType = "Long"),
@ApiImplicitParam(name = "cUserId", value = "用户ID", required = true, dataType = "Long")
})
public ResultData cancelOrder(@RequestBody WxOrder wxOrder) {
public ResultData cancelOrder(@RequestBody Map<String, String> paramMap) {
//Assert.notNull(wxOrders.getName(), "角色名不能为空");
//Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名");
wxOrderService.updateOrderStatus(wxOrder.getId(), EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL);
return new ResultData();
}

@ApiOperation("订单过期")
@PostMapping("expiring")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "订单ID", required = true, dataType = "Long"),
@ApiImplicitParam(name = "cUserId", value = "用户ID", required = true, dataType = "Long")
})
public ResultData expiringOrder(@RequestBody WxOrder wxOrder) {
//Assert.notNull(wxOrders.getName(), "角色名不能为空");
//Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名");
wxOrderService.updateOrderStatus(wxOrder.getId(), EnumOrderStatus.ORDER_STATUS_PENDING_REFUND);
String orderIdStr = paramMap.get("orderId");
if (StringUtils.isBlank(orderIdStr)) {
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "orderId不能为空");
}
Long orderId = 0L;
WxCUser user = getUser();
try {
orderId = Long.valueOf(orderIdStr);
} catch (NumberFormatException e) {
logger.error(e.getMessage());
}
wxOrderService.updateOrderStatus(orderId, EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL);
return new ResultData();
}

@ApiOperation("订单已过期")
@ApiOperation(value = "订单已过期", notes = "{\"orderId\":\"string\"}")
@PostMapping("expired")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "订单ID", required = true, dataType = "Long"),
@ApiImplicitParam(name = "cUserId", value = "用户ID", required = true, dataType = "Long")
})
public ResultData expiredOrder(@RequestBody WxOrder wxOrder) {
public ResultData expiredOrder(@RequestBody Map<String, String> paramMap) {
//Assert.notNull(wxOrders.getName(), "角色名不能为空");
//Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名");
wxOrderService.updateOrderStatus(wxOrder.getId(), EnumOrderStatus.ORDER_STATUS_REFUND_SUCCESS);
String orderIdStr = paramMap.get("orderId");
if (StringUtils.isBlank(orderIdStr)) {
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "orderId不能为空");
}
Long orderId = 0L;
WxCUser user = getUser();
try {
orderId = Long.valueOf(orderIdStr);
} catch (NumberFormatException e) {
logger.error(e.getMessage());
}
wxOrderService.updateOrderStatus(orderId, EnumOrderStatus.ORDER_STATUS_REFUND_SUCCESS);
return new ResultData();
}

@ApiOperation("分页列表接口")
@ApiOperation("分页订单列表接口")
@GetMapping("list")
@ApiImplicitParams({
@ApiImplicitParam(name="pageNum",value="页数",dataType="int", paramType = "query",required=true),
@ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true)})
public ResultData list(@ModelAttribute WxOrder wxOrder, Integer pageNum, Integer pageSize) {
if (null == wxOrder) wxOrder = new WxOrder();
@ApiImplicitParam(name="pageSize",value="每页条数",dataType="int", paramType = "query",required=true),
@ApiImplicitParam(name="orderStatus",value="订单状态0-已下单/待付款;1-已支付;2-已取消",dataType="int", paramType = "query",required=false)
})
public ResultData list(Integer orderStatus, Integer pageNum, Integer pageSize) {
// c端用户应该只能看到自己的订单
WxCUser user = getUser();
wxOrder.setCUserId(user.getId());
final PageInfo<WxOrder> page = wxOrderService.listAsPage(wxOrder, pageNum, pageSize);
WxOrder wxOrderQ = new WxOrder();
wxOrderQ.setCUserId(user.getId());
wxOrderQ.setOrderStatus(orderStatus);
final PageInfo<WxOrder> page = wxOrderService.listAsPage(wxOrderQ, pageNum, pageSize);
return new ResultData(page);
}

@ApiOperation("根据id查询接口")
@ApiOperation(value = "根据orderId查询接口", notes = "{\"orderId\":\"string\"}")
@GetMapping("/findById")
@ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true)
public ResultData findById(Long id) {
return new ResultData(Result.SUCCESS, "查询成功", wxOrderService.getById(id));
public ResultData findById(@RequestBody Map<String, String> paramMap) {
String orderIdStr = paramMap.get("orderId");
if (StringUtils.isBlank(orderIdStr)) {
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "orderId不能为空");
}
Long orderId = 0L;
try {
orderId = Long.valueOf(orderIdStr);
} catch (NumberFormatException e) {
logger.error("parse orderId failed");
}
return new ResultData(Result.SUCCESS, "查询成功", wxOrderService.getById(orderId));
}




+ 52
- 44
mallinkCApi/src/main/java/com/simple/controller/WxPayOrderController.java Просмотреть файл

@@ -27,6 +27,7 @@ import com.simple.service.WxPayOrderService;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import sun.rmi.runtime.Log;

import javax.servlet.http.HttpServletRequest;
import java.nio.charset.Charset;
@@ -41,7 +42,7 @@ public class WxPayOrderController extends BaseController {
@Autowired
private WxPayOrderService wxPayOrderService;

@ApiOperation(value = "发起微信小程序支付订单")
@ApiOperation(value = "发起微信小程序支付订单", notes = "{\"orderId\":\"string\"}")
@RequestMapping(value = "/create", method = RequestMethod.POST)
public ResultData _create(@RequestBody Map<String, String> paramMap, HttpServletRequest request) throws Exception {
logger.info("/api/pay/create" + paramMap.toString());
@@ -54,7 +55,13 @@ public class WxPayOrderController extends BaseController {
WxCUser user = getUser();
WxAppinfo appInfo = getAppInfo(user.getAppId());

Long orderId = Long.valueOf(orderIdStr);
Long orderId = 0L;
try {
orderId = Long.valueOf(orderIdStr);
} catch (NumberFormatException e) {
orderId = 0L;
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "orderId参数不正确");
}
WxPayOrder record = new WxPayOrder();
record.setOrderId(orderId);

@@ -70,54 +77,55 @@ public class WxPayOrderController extends BaseController {
return new ResultData(ErrorCode.PAY_ORDER_ERROR);
}

/**
*
* @return 接收微信异步通知
* @throws Exception 可能产生的任何异常
*/
@AuthIgnore
@RequestMapping(value = "/notify/pay", method = RequestMethod.POST)
public String __doNotify(HttpServletRequest request) throws Exception {
Map<String, String> paramMap = null;
String response;
@ApiOperation(value = "更新支付订单状态", notes = "{\"id\":\"string\",\"orderId\":\"string\",\"status\":integer,\"reason\":\"string\"}")
@PostMapping("/updatePayOrder")
public ResultData updatePayOrder(@RequestBody Map<String, Object> paramMap) {
logger.info("/api/pay/updatePayOrder" + paramMap.toString());
String payOrderIdStr = (String)paramMap.get("payOrderId");
String orderIdStr = (String)paramMap.get("orderId");
String reasonStr = (String)paramMap.get("reason");
Integer status = (Integer)paramMap.get("status");
if (StringUtils.isBlank(payOrderIdStr)) {
logger.info("payOrderId不能为空: " + paramMap.toString());
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "payOrderId不能为空");
}
if (StringUtils.isBlank(orderIdStr)) {
logger.info("orderId不能为空: " + paramMap.toString());
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "orderId不能为空");
}
Long payOrderId = 0L, orderId = 0L;
try {
payOrderId = Long.valueOf(payOrderIdStr);
} catch (NumberFormatException e) {
payOrderId = 0L;
logger.error("payOrderId参数不正确: " + paramMap.toString() + ", e:" + e.getMessage());
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "payOrderId参数不正确");
}
try {
orderId = Long.valueOf(orderIdStr);
} catch (NumberFormatException e) {
orderId = 0L;
logger.error("orderId参数不正确: " + paramMap.toString() + ", e:" + e.getMessage());
return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "orderId参数不正确");
}

WxPayOrder payOrder = new WxPayOrder();
payOrder.setId(payOrderId);
payOrder.setOrderId(orderId);
payOrder.setPayOrderStatus(status);
payOrder.setFailReason(reasonStr);
try {
String xml = IOUtils.toString(request.getInputStream(), Charset.forName("UTF-8"));
paramMap = WxPayment.xmlToMap(xml);
logger.info("payment wxpay, notify, param: " + paramMap.toString() );
response = wxPayOrderService.notify(paramMap, EnumPayWay.PAY_WAY_WEAPP);
logger.info("payment wxpay, notify success, req : " + paramMap.toString() + ", resp: " + response.toString());
return response;
} catch (BizMessageException e) {
logger.error("payment wxpay, notify error, req: " + paramMap.toString() + ", e:" + e.getLocalizedMessage());
return e.getMessage();
wxPayOrderService.handlePayOrderStatusUpdate(payOrder);
return new ResultData(Result.SUCCESS, "支付状态更新成功");
} catch (MallinkException e) {
logger.error("payment wxpay, notify error, req: " + paramMap.toString() + ", e:" +e.getLocalizedMessage());
return e.getMessage();
logger.error("支付状态更新失败2: " + payOrder.toString() + ", e:" + e.getMessage());
return new ResultData(e.getErrorCode(), e.getMessage());
} catch (Exception e) {
logger.error("payment wxpay, order create error, req: " + paramMap.toString() + ", e: " + e.getMessage());
return e.getMessage();
logger.error("支付状态更新失败3: " + payOrder.toString() + ", e:" + e.getMessage());
}
return new ResultData(ErrorCode.PAY_ORDER_ERROR);
}

/**
*
* @return 同步回调(订单状态主动检查)
* @throws Exception 可能产生的任何异常
*/
@RequestMapping(value = "/callback", method = {RequestMethod.GET, RequestMethod.POST})
public String __doCallback(HttpServletRequest request) throws Exception {

logger.info("payment wxpay, callback,request:" + request.toString());

return "\n" +
"\n" +
"<xml>\n" +
"\n" +
" <return_code><![CDATA[SUCCESS]]></return_code>\n" +
" <return_msg><![CDATA[OK]]></return_msg>\n" +
"</xml>\n";
}
@ApiOperation("分页列表接口")
@GetMapping("/list")
@ApiImplicitParams({


+ 20
- 2
mallinkCApi/src/main/java/com/simple/controller/WxUserGrantController.java Просмотреть файл

@@ -14,7 +14,9 @@ import com.simple.common.Result;
import com.simple.common.ResultData;
import com.simple.domain.po.WxAppinfo;
import com.simple.domain.po.WxCUser;
import com.simple.domain.po.WxCUserCar;
import com.simple.service.WxAppinfoService;
import com.simple.service.WxCUserCarService;
import com.simple.service.WxCUserService;
import com.simple.utils.IPUtil;
import io.swagger.annotations.ApiImplicitParam;
@@ -31,6 +33,7 @@ import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController
@@ -41,6 +44,9 @@ public class WxUserGrantController extends BaseController {
@Autowired
private WxCUserService wxCUserService;

@Autowired
private WxCUserCarService wxCUserCarService;

/**
* 用户登录
* @param map
@@ -227,11 +233,23 @@ public class WxUserGrantController extends BaseController {
}
}

@ApiOperation("获取用户信息")
@GetMapping("/findById")
@ApiOperation("获取当前用户信息")
@GetMapping("/userinfo")
public ResultData getUserInfo() {
WxCUser user = getUser();
return new ResultData(Result.SUCCESS,"查询成功",user);
}

@ApiOperation("获取当前用户车牌列表")
@GetMapping("/carlist")
public ResultData getCarList() {
WxCUser user = getUser();
WxCUserCar userCar = new WxCUserCar();
userCar.setTenantId(user.getTenantId());
userCar.setCUserId(user.getId());
List<WxCUserCar> list = wxCUserCarService.getList(userCar);
return new ResultData(Result.SUCCESS,"获取查询成功", list);
}


}

+ 3
- 3
mallinkCApi/src/main/resources/application-dev.yml Просмотреть файл

@@ -1,9 +1,9 @@
spring:
# JDBC
datasource:
url: jdbc:mysql://localhost:3306/mallink?characterEncoding=UTF-8&useSSL=false
username: userone
password: 123456
url: jdbc:mysql://202.165.179.86:3306/mallink?characterEncoding=UTF-8&useSSL=false
username: mallone
password: m@1l0ne123@#
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
filters: stat


+ 21
- 4
mallinkService/src/main/java/com/simple/common/ErrorCode.java Просмотреть файл

@@ -52,9 +52,11 @@ public enum ErrorCode{
COUPON_IS_EMPTY(2020, "券不存在"),

/**
* 车流 2050
* 车流 2040
*/
CAR_PARK_NOT_FOUND(2049, "车场未找到"),
CAR_VENDOR_NOT_SUPPORT(2050, "不支持的停车厂家"),

ETCP_LOGIN_FAIL(2051, "ETCP共同登录失败"),
ETCP_BIND_FAIL(2052, "ETCP绑车牌失败"),
ETCP_UNBIND_FAIL(2053, "ETCP解绑车牌失败"),
@@ -68,6 +70,7 @@ public enum ErrorCode{
TJD_DEDUCE_FEE_FAIL(2063, "TJD停车费抵扣失败"),



/**
* 订单
*/
@@ -80,9 +83,11 @@ public enum ErrorCode{
/**
* 卡券
*/
COUPON_ORDER_IS_USED(4000, "卡券已核销"),
COUPON_ORDER_IS_OVER_TIME(4001, "卡券已过期"),
COUPON_ORDER_IS_INVALID(4002, "卡券已经作废"),
COUPON_ORDER_IS_NULL(4000, "卡券不存在"),
COUPON_ORDER_IS_USED(4001, "卡券已核销"),
COUPON_ORDER_IS_OVER_TIME(4002, "卡券已过期"),
COUPON_ORDER_IS_INVALID(4003, "卡券已经作废"),


/**
* 微信
@@ -108,6 +113,18 @@ public enum ErrorCode{
APP_ID_NOT_FOUND(12020, "APPID没找到"),
MCH_INFO_NOT_FOUND(12021, "商户信息没找到"),
MCH_INFO_NOT_EQUAL(12022, "商户信息不对应"),
API_KEY_NOT_FOUND(12023, "支付密钥未配置"),
CERT_PATH_NOT_FOUND(12024, "双向证书未配置"),

PROFIT_SHARING_REQUEST_FAILED(12030, "分账请求失败"),
PROFIT_SHARING_APPLY_FAILED(12031, "分账请求业务失败"),
PROFIT_SHARING_RETURN_INVALID(12032, "分账请求返回校验失败"),
PROFIT_SHARING_RECEIVER_INVALID(12033, "分账接受方查寻无效"),

/**
* 核销
*/
VERIFY_ERROR(12050, "核销异常")
;




mallinkService/src/main/java/com/simple/domain/po/WxCUserCars.java → mallinkService/src/main/java/com/simple/domain/po/WxCUserCar.java Просмотреть файл

@@ -8,15 +8,15 @@ import java.util.List;
import javax.persistence.Id;
import java.io.Serializable;

@Table(name = "wx_c_user_cars")
public class WxCUserCars implements Serializable {
@Table(name = "wx_c_user_car")
public class WxCUserCar implements Serializable {
private static final long serialVersionUID = 1L;
@Id
protected Long id;
@Transient
protected List<String> ids;
protected List<Long> ids;
@Transient
protected String sortColumns;
@@ -32,10 +32,11 @@ public class WxCUserCars implements Serializable {
return sortColumns;
}
public List<String> getIds() {
public List<Long> getIds() {
return ids;
}
public void setIds(List<String> ids) {

public void setIds(List<Long> ids) {
this.ids = ids;
}
@@ -56,6 +57,12 @@ public class WxCUserCars implements Serializable {
/*更新时间**/
@io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate")
private Date updateDate;
/*停车厂家(2:TJD)**/
@io.swagger.annotations.ApiModelProperty(value="停车厂家(2:TJD)",name="vendorType")
private Integer vendorType;
/*停车厂家参数**/
@io.swagger.annotations.ApiModelProperty(value="停车厂家参数",name="vendorParams")
private String vendorParams;
public String getTenantId() {
return tenantId;
}
@@ -86,6 +93,18 @@ public class WxCUserCars implements Serializable {
public void setUpdateDate(Date _updateDate) {
updateDate = _updateDate;
}
public Integer getVendorType() {
return vendorType;
}
public void setVendorType(Integer _vendorType) {
vendorType = _vendorType;
}
public String getVendorParams() {
return vendorParams;
}
public void setVendorParams(String _vendorParams) {
vendorParams = _vendorParams;
}



@@ -97,6 +116,8 @@ public class WxCUserCars implements Serializable {
,CarNumber_ASC("`carNumber` ASC"),CarNumber_DESC("`carNumber` DESC")
,CreateDate_ASC("`createDate` ASC"),CreateDate_DESC("`createDate` DESC")
,UpdateDate_ASC("`updateDate` ASC"),UpdateDate_DESC("`updateDate` DESC")
,VendorType_ASC("`vendorType` ASC"),VendorType_DESC("`vendorType` DESC")
,VendorParams_ASC("`vendorParams` ASC"),VendorParams_DESC("`vendorParams` DESC")
;
private String value;
Field(String value){
@@ -114,7 +135,7 @@ public class WxCUserCars implements Serializable {
}
}
public void setSortColumns(WxCUserCars.Field... fields)
public void setSortColumns(WxCUserCar.Field... fields)
{
if (fields == null || fields.length == 0) {
return;

mallinkService/src/main/java/com/simple/domain/po/WxCarCmdLogs.java → mallinkService/src/main/java/com/simple/domain/po/WxCarCmdLog.java Просмотреть файл

@@ -8,15 +8,15 @@ import java.util.List;
import javax.persistence.Id;
import java.io.Serializable;

@Table(name = "wx_car_cmd_logs")
public class WxCarCmdLogs implements Serializable {
@Table(name = "wx_car_cmd_log")
public class WxCarCmdLog implements Serializable {
private static final long serialVersionUID = 1L;
@Id
protected Long id;
@Transient
protected List<String> ids;
protected List<Long> ids;
@Transient
protected String sortColumns;
@@ -32,10 +32,11 @@ public class WxCarCmdLogs implements Serializable {
return sortColumns;
}
public List<String> getIds() {
public List<Long> getIds() {
return ids;
}
public void setIds(List<String> ids) {

public void setIds(List<Long> ids) {
this.ids = ids;
}
@@ -45,11 +46,11 @@ public class WxCarCmdLogs implements Serializable {
@io.swagger.annotations.ApiModelProperty(value="",name="tenantId")
private String tenantId;
/*停车厂家,1. ETCP,2.停简单**/
@io.swagger.annotations.ApiModelProperty(value="停车厂家,1. ETCP,2.停简单",name="supportVendor")
private Integer supportVendor;
/*厂家命令**/
@io.swagger.annotations.ApiModelProperty(value="厂家命令",name="cmdType")
private String cmdType;
@io.swagger.annotations.ApiModelProperty(value="停车厂家,1. ETCP,2.停简单",name="vendorType")
private Integer vendorType;
/*停车厂家命令**/
@io.swagger.annotations.ApiModelProperty(value="停车厂家命令",name="cmdType")
private Integer cmdType;
/*创建时间**/
@io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate")
private Date createDate;
@@ -65,16 +66,16 @@ public class WxCarCmdLogs implements Serializable {
public void setTenantId(String _tenantId) {
tenantId = _tenantId;
}
public Integer getSupportVendor() {
return supportVendor;
public Integer getVendorType() {
return vendorType;
}
public void setSupportVendor(Integer _supportVendor) {
supportVendor = _supportVendor;
public void setVendorType(Integer _vendorType) {
vendorType = _vendorType;
}
public String getCmdType() {
public Integer getCmdType() {
return cmdType;
}
public void setCmdType(String _cmdType) {
public void setCmdType(Integer _cmdType) {
cmdType = _cmdType;
}
public Date getCreateDate() {
@@ -102,7 +103,7 @@ public class WxCarCmdLogs implements Serializable {
{
Id_ASC("`id` ASC"),Id_DESC("`id` DESC")
,TenantId_ASC("`tenantId` ASC"),TenantId_DESC("`tenantId` DESC")
,SupportVendor_ASC("`supportVendor` ASC"),SupportVendor_DESC("`supportVendor` DESC")
,VendorType_ASC("`vendorType` ASC"),VendorType_DESC("`vendorType` DESC")
,CmdType_ASC("`cmdType` ASC"),CmdType_DESC("`cmdType` DESC")
,CreateDate_ASC("`createDate` ASC"),CreateDate_DESC("`createDate` DESC")
,UpdateDate_ASC("`updateDate` ASC"),UpdateDate_DESC("`updateDate` DESC")
@@ -124,7 +125,7 @@ public class WxCarCmdLogs implements Serializable {
}
}
public void setSortColumns(WxCarCmdLogs.Field... fields)
public void setSortColumns(WxCarCmdLog.Field... fields)
{
if (fields == null || fields.length == 0) {
return;

+ 58
- 27
mallinkService/src/main/java/com/simple/domain/po/WxCouponSend.java Просмотреть файл

@@ -11,15 +11,15 @@ import java.io.Serializable;
@Table(name = "wx_coupon_send")
public class WxCouponSend implements Serializable {
private static final long serialVersionUID = 1L;
@Id
protected Long id;
@Transient
protected List<String> ids;
@Transient
protected String sortColumns;
protected Long id;
@Transient
protected List<Long> ids;
@Transient
protected String sortColumns;
public Long getId() {
return id;
}
@@ -27,20 +27,21 @@ public class WxCouponSend implements Serializable {
public void setId(Long id) {
this.id = id;
}
public String getSortColumns() {
return sortColumns;
}
public List<String> getIds() {
public List<Long> getIds() {
return ids;
}
public void setIds(List<String> ids) {

public void setIds(List<Long> ids) {
this.ids = ids;
}
/*租户ID**/
@io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId")
private String tenantId;
@@ -59,6 +60,15 @@ public class WxCouponSend implements Serializable {
/*发券方式(1.主动领取,2.停车发券,3.核销发券)**/
@io.swagger.annotations.ApiModelProperty(value="发券方式(1.主动领取,2.停车发券,3.核销发券)",name="sendType")
private Integer sendType;
/*0:有效 1:无效**/
@io.swagger.annotations.ApiModelProperty(value="0:有效 1:无效",name="status")
private Integer status;
/***/
@io.swagger.annotations.ApiModelProperty(value="",name="sendStartTime")
private Date sendStartTime;
/***/
@io.swagger.annotations.ApiModelProperty(value="",name="sendEndTime")
private Date sendEndTime;
/*创建时间**/
@io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate")
private Date createDate;
@@ -101,6 +111,24 @@ public class WxCouponSend implements Serializable {
public void setSendType(Integer _sendType) {
sendType = _sendType;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer _status) {
status = _status;
}
public Date getSendStartTime() {
return sendStartTime;
}
public void setSendStartTime(Date _sendStartTime) {
sendStartTime = _sendStartTime;
}
public Date getSendEndTime() {
return sendEndTime;
}
public void setSendEndTime(Date _sendEndTime) {
sendEndTime = _sendEndTime;
}
public Date getCreateDate() {
return createDate;
}
@@ -119,15 +147,18 @@ public class WxCouponSend implements Serializable {
public static enum Field
{
Id_ASC("`id` ASC"),Id_DESC("`id` DESC")
,TenantId_ASC("`tenantId` ASC"),TenantId_DESC("`tenantId` DESC")
,MerchantId_ASC("`merchantId` ASC"),MerchantId_DESC("`merchantId` DESC")
,CouponId_ASC("`couponId` ASC"),CouponId_DESC("`couponId` DESC")
,Type_ASC("`type` ASC"),Type_DESC("`type` DESC")
,Title_ASC("`title` ASC"),Title_DESC("`title` DESC")
,SendType_ASC("`sendType` ASC"),SendType_DESC("`sendType` DESC")
,CreateDate_ASC("`createDate` ASC"),CreateDate_DESC("`createDate` DESC")
,UpdateDate_ASC("`updateDate` ASC"),UpdateDate_DESC("`updateDate` DESC")
;
,TenantId_ASC("`tenantId` ASC"),TenantId_DESC("`tenantId` DESC")
,MerchantId_ASC("`merchantId` ASC"),MerchantId_DESC("`merchantId` DESC")
,CouponId_ASC("`couponId` ASC"),CouponId_DESC("`couponId` DESC")
,Type_ASC("`type` ASC"),Type_DESC("`type` DESC")
,Title_ASC("`title` ASC"),Title_DESC("`title` DESC")
,SendType_ASC("`sendType` ASC"),SendType_DESC("`sendType` DESC")
,Status_ASC("`status` ASC"),Status_DESC("`status` DESC")
,SendStartTime_ASC("`sendStartTime` ASC"),SendStartTime_DESC("`sendStartTime` DESC")
,SendEndTime_ASC("`sendEndTime` ASC"),SendEndTime_DESC("`sendEndTime` DESC")
,CreateDate_ASC("`createDate` ASC"),CreateDate_DESC("`createDate` DESC")
,UpdateDate_ASC("`updateDate` ASC"),UpdateDate_DESC("`updateDate` DESC")
;
private String value;
Field(String value){
this.value = value;
@@ -143,7 +174,7 @@ public class WxCouponSend implements Serializable {
return this.getValue();
}
}
public void setSortColumns(WxCouponSend.Field... fields)
{
if (fields == null || fields.length == 0) {
@@ -159,9 +190,9 @@ public class WxCouponSend implements Serializable {
sb.append(",");
sb.append(fields[k].toString());
}
}
public void setSortColumns(String sortColumns)
{
if (sortColumns == null || "".equals(sortColumns.trim())) {


+ 44
- 3
mallinkService/src/main/java/com/simple/domain/po/WxMerchant.java Просмотреть файл

@@ -37,9 +37,18 @@ public class WxMerchant implements Serializable {
public void setIds(List<Long> ids) {
this.ids = ids;
}

@Transient
private List<Long> userids;
@Transient
private List<Long> shopids;

@Transient
private List<WxShop> shops;

@Transient
private List<WxMerchantBUser> bUsers;

/*租户ID**/
@io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId")
private String tenantId;
@@ -152,6 +161,38 @@ public class WxMerchant implements Serializable {
this.status = status;
}

public List<Long> getUserids() {
return userids;
}

public void setUserids(List<Long> userids) {
this.userids = userids;
}

public List<Long> getShopids() {
return shopids;
}

public void setShopids(List<Long> shopids) {
this.shopids = shopids;
}

public List<WxShop> getShops() {
return shops;
}

public void setShops(List<WxShop> shops) {
this.shops = shops;
}

public List<WxMerchantBUser> getbUsers() {
return bUsers;
}

public void setbUsers(List<WxMerchantBUser> bUsers) {
this.bUsers = bUsers;
}

public static enum Field
{
Id_ASC("`id` ASC"),Id_DESC("`id` DESC")


+ 10
- 0
mallinkService/src/main/java/com/simple/domain/po/WxOrder.java Просмотреть файл

@@ -51,6 +51,9 @@ public class WxOrder implements Serializable {
/*c端用户id**/
@io.swagger.annotations.ApiModelProperty(value="c端用户id",name="cUserId")
private Long cUserId;
/*商户ID**/
@io.swagger.annotations.ApiModelProperty(value="商户ID",name="merchantId")
private Long merchantId;
/*操作券B端小程序用户ID**/
@io.swagger.annotations.ApiModelProperty(value="操作券B端小程序用户ID",name="bUserId")
private Long bUserId;
@@ -93,6 +96,12 @@ public class WxOrder implements Serializable {
public void setCUserId(Long _cUserId) {
cUserId = _cUserId;
}
public Long getMerchantId() {
return merchantId;
}
public void setMerchantId(Long _merchantId) {
merchantId = _merchantId;
}
public Long getBUserId() {
return bUserId;
}
@@ -150,6 +159,7 @@ public class WxOrder implements Serializable {
,OrderNumber_ASC("`orderNumber` ASC"),OrderNumber_DESC("`orderNumber` DESC")
,TenantId_ASC("`tenantId` ASC"),TenantId_DESC("`tenantId` DESC")
,CUserId_ASC("`cUserId` ASC"),CUserId_DESC("`cUserId` DESC")
,MerchantId_ASC("`merchantId` ASC"),MerchantId_DESC("`merchantId` DESC")
,BUserId_ASC("`bUserId` ASC"),BUserId_DESC("`bUserId` DESC")
,PaymentType_ASC("`paymentType` ASC"),PaymentType_DESC("`paymentType` DESC")
,Payment_ASC("`payment` ASC"),Payment_DESC("`payment` DESC")


+ 14
- 3
mallinkService/src/main/java/com/simple/domain/po/WxPark.java Просмотреть файл

@@ -16,7 +16,7 @@ public class WxPark implements Serializable {
protected Long id;
@Transient
protected List<String> ids;
protected List<Long> ids;
@Transient
protected String sortColumns;
@@ -32,10 +32,11 @@ public class WxPark implements Serializable {
return sortColumns;
}
public List<String> getIds() {
public List<Long> getIds() {
return ids;
}
public void setIds(List<String> ids) {

public void setIds(List<Long> ids) {
this.ids = ids;
}
@@ -59,6 +60,9 @@ public class WxPark implements Serializable {
/*更新时间**/
@io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate")
private Date updateDate;
/*第三方停车场ID**/
@io.swagger.annotations.ApiModelProperty(value="第三方停车场ID",name="parkId")
private String parkId;
/*厂商类型(1:ETCP,2:停简单)**/
@io.swagger.annotations.ApiModelProperty(value="厂商类型(1:ETCP,2:停简单)",name="vendorType")
private Integer vendorType;
@@ -101,6 +105,12 @@ public class WxPark implements Serializable {
public void setUpdateDate(Date _updateDate) {
updateDate = _updateDate;
}
public String getParkId() {
return parkId;
}
public void setParkId(String _parkId) {
parkId = _parkId;
}
public Integer getVendorType() {
return vendorType;
}
@@ -125,6 +135,7 @@ public class WxPark implements Serializable {
,EntryExit_ASC("`entryExit` ASC"),EntryExit_DESC("`entryExit` DESC")
,CreateDate_ASC("`createDate` ASC"),CreateDate_DESC("`createDate` DESC")
,UpdateDate_ASC("`updateDate` ASC"),UpdateDate_DESC("`updateDate` DESC")
,ParkId_ASC("`parkId` ASC"),ParkId_DESC("`parkId` DESC")
,VendorType_ASC("`vendorType` ASC"),VendorType_DESC("`vendorType` DESC")
,VendorParams_ASC("`vendorParams` ASC"),VendorParams_DESC("`vendorParams` DESC")
;


+ 16
- 15
mallinkService/src/main/java/com/simple/domain/po/WxPayOrder.java Просмотреть файл

@@ -16,7 +16,7 @@ public class WxPayOrder implements Serializable {
protected Long id;
@Transient
protected List<String> ids;
protected List<Long> ids;
@Transient
protected String sortColumns;
@@ -32,17 +32,18 @@ public class WxPayOrder implements Serializable {
return sortColumns;
}
public List<String> getIds() {
public List<Long> getIds() {
return ids;
}
public void setIds(List<String> ids) {

public void setIds(List<Long> ids) {
this.ids = ids;
}
/***/
@io.swagger.annotations.ApiModelProperty(value="",name="tenantId")
/*租户ID**/
@io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId")
private String tenantId;
/*创建时间**/
@io.swagger.annotations.ApiModelProperty(value="创建时间",name="createTime")
@@ -62,12 +63,12 @@ public class WxPayOrder implements Serializable {
/*支付金额(分)**/
@io.swagger.annotations.ApiModelProperty(value="支付金额(分)",name="payAmount")
private Integer payAmount;
/*支付发起时间(秒)**/
@io.swagger.annotations.ApiModelProperty(value="支付发起时间(秒)",name="payTimeStart")
private Integer payTimeStart;
/*支付结束时间(秒)**/
@io.swagger.annotations.ApiModelProperty(value="支付结束时间(秒)",name="payTimeEnd")
private Integer payTimeEnd;
/*支付发起时间**/
@io.swagger.annotations.ApiModelProperty(value="支付发起时间",name="payTimeStart")
private Date payTimeStart;
/*支付结束时间**/
@io.swagger.annotations.ApiModelProperty(value="支付结束时间",name="payTimeEnd")
private Date payTimeEnd;
/*微信生成的订单号**/
@io.swagger.annotations.ApiModelProperty(value="微信生成的订单号",name="transactionId")
private String transactionId;
@@ -125,16 +126,16 @@ public class WxPayOrder implements Serializable {
public void setPayAmount(Integer _payAmount) {
payAmount = _payAmount;
}
public Integer getPayTimeStart() {
public Date getPayTimeStart() {
return payTimeStart;
}
public void setPayTimeStart(Integer _payTimeStart) {
public void setPayTimeStart(Date _payTimeStart) {
payTimeStart = _payTimeStart;
}
public Integer getPayTimeEnd() {
public Date getPayTimeEnd() {
return payTimeEnd;
}
public void setPayTimeEnd(Integer _payTimeEnd) {
public void setPayTimeEnd(Date _payTimeEnd) {
payTimeEnd = _payTimeEnd;
}
public String getTransactionId() {


+ 222
- 0
mallinkService/src/main/java/com/simple/domain/po/WxProfitSharingOrder.java Просмотреть файл

@@ -0,0 +1,222 @@
package com.simple.domain.po;

import javax.persistence.*;
import java.util.*;
import java.math.*;
import javax.persistence.Transient;
import java.util.List;
import javax.persistence.Id;
import java.io.Serializable;

@Table(name = "wx_profit_sharing_order")
public class WxProfitSharingOrder implements Serializable {
private static final long serialVersionUID = 1L;
@Id
protected Long id;
@Transient
protected List<Long> ids;
@Transient
protected String sortColumns;
public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}
public String getSortColumns() {
return sortColumns;
}
public List<Long> getIds() {
return ids;
}

public void setIds(List<Long> ids) {
this.ids = ids;
}
/*接收方(商场租户id)**/
@io.swagger.annotations.ApiModelProperty(value="接收方(商场租户id)",name="tenantId")
private String tenantId;
/*商户ID**/
@io.swagger.annotations.ApiModelProperty(value="商户ID",name="merchantId")
private String merchantId;
/*订单ID**/
@io.swagger.annotations.ApiModelProperty(value="订单ID",name="orderId")
private String orderId;
/*分账总金额(分)**/
@io.swagger.annotations.ApiModelProperty(value="分账总金额(分)",name="payAmount")
private Integer payAmount;
/*分账结束时间(秒)**/
@io.swagger.annotations.ApiModelProperty(value="分账结束时间(秒)",name="payTimeEnd")
private Date payTimeEnd;
/*分账发起时间(秒)**/
@io.swagger.annotations.ApiModelProperty(value="分账发起时间(秒)",name="payTimeStart")
private Date payTimeStart;
/*微信生成的支付单号**/
@io.swagger.annotations.ApiModelProperty(value="微信生成的支付单号",name="transactionId")
private String transactionId;
/*微信生成分账单号**/
@io.swagger.annotations.ApiModelProperty(value="微信生成分账单号",name="sharingOrderId")
private String sharingOrderId;
/*分账申请失败原因**/
@io.swagger.annotations.ApiModelProperty(value="分账申请失败原因",name="errorMsg")
private String errorMsg;
/*分账状态:1=提交订单失败, 2=提交业务失败,3=受理成功,4=处理中,5=处理完成,6=处理失败, 已关单,(1-2)为API返回,2具体信息在error_des中,(2-6)为查询返回**/
@io.swagger.annotations.ApiModelProperty(value="分账状态:1=提交订单失败, 2=提交业务失败,3=受理成功,4=处理中,5=处理完成,6=处理失败, 已关单,(1-2)为API返回,2具体信息在error_des中,(2-6)为查询返回",name="sharingStatus")
private Integer sharingStatus;
/*更新时间**/
@io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateTime")
private Date updateTime;
/*创建时间**/
@io.swagger.annotations.ApiModelProperty(value="创建时间",name="createTime")
private Date createTime;
public String getTenantId() {
return tenantId;
}
public void setTenantId(String _tenantId) {
tenantId = _tenantId;
}
public String getMerchantId() {
return merchantId;
}
public void setMerchantId(String _merchantId) {
merchantId = _merchantId;
}
public String getOrderId() {
return orderId;
}
public void setOrderId(String _orderId) {
orderId = _orderId;
}
public Integer getPayAmount() {
return payAmount;
}
public void setPayAmount(Integer _payAmount) {
payAmount = _payAmount;
}
public Date getPayTimeEnd() {
return payTimeEnd;
}
public void setPayTimeEnd(Date _payTimeEnd) {
payTimeEnd = _payTimeEnd;
}
public Date getPayTimeStart() {
return payTimeStart;
}
public void setPayTimeStart(Date _payTimeStart) {
payTimeStart = _payTimeStart;
}
public String getTransactionId() {
return transactionId;
}
public void setTransactionId(String _transactionId) {
transactionId = _transactionId;
}
public String getSharingOrderId() {
return sharingOrderId;
}
public void setSharingOrderId(String _sharingOrderId) {
sharingOrderId = _sharingOrderId;
}
public String getErrorMsg() {
return errorMsg;
}
public void setErrorMsg(String _errorMsg) {
errorMsg = _errorMsg;
}
public Integer getSharingStatus() {
return sharingStatus;
}
public void setSharingStatus(Integer _sharingStatus) {
sharingStatus = _sharingStatus;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date _updateTime) {
updateTime = _updateTime;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date _createTime) {
createTime = _createTime;
}



public static enum Field
{
Id_ASC("`id` ASC"),Id_DESC("`id` DESC")
,TenantId_ASC("`tenantId` ASC"),TenantId_DESC("`tenantId` DESC")
,MerchantId_ASC("`merchantId` ASC"),MerchantId_DESC("`merchantId` DESC")
,OrderId_ASC("`orderId` ASC"),OrderId_DESC("`orderId` DESC")
,PayAmount_ASC("`payAmount` ASC"),PayAmount_DESC("`payAmount` DESC")
,PayTimeEnd_ASC("`payTimeEnd` ASC"),PayTimeEnd_DESC("`payTimeEnd` DESC")
,PayTimeStart_ASC("`payTimeStart` ASC"),PayTimeStart_DESC("`payTimeStart` DESC")
,TransactionId_ASC("`transactionId` ASC"),TransactionId_DESC("`transactionId` DESC")
,SharingOrderId_ASC("`sharingOrderId` ASC"),SharingOrderId_DESC("`sharingOrderId` DESC")
,ErrorMsg_ASC("`errorMsg` ASC"),ErrorMsg_DESC("`errorMsg` DESC")
,SharingStatus_ASC("`sharingStatus` ASC"),SharingStatus_DESC("`sharingStatus` DESC")
,UpdateTime_ASC("`updateTime` ASC"),UpdateTime_DESC("`updateTime` DESC")
,CreateTime_ASC("`createTime` ASC"),CreateTime_DESC("`createTime` DESC")
;
private String value;
Field(String value){
this.value = value;
}
public String getValue() {
return value;
}
public void setCol(String value) {
this.value = value;
}
@Override
public String toString() {
return this.getValue();
}
}
public void setSortColumns(WxProfitSharingOrder.Field... fields)
{
if (fields == null || fields.length == 0) {
return;
}
for (int k = 0; k < fields.length; k++) {
if (fields[k] == null) {
return;
}
}
StringBuilder sb = new StringBuilder(fields[0].toString());
for (int k = 1; k < fields.length; k++) {
sb.append(",");
sb.append(fields[k].toString());
}
}
public void setSortColumns(String sortColumns)
{
if (sortColumns == null || "".equals(sortColumns.trim())) {
return;
}
if (sortColumns.contains(",")) {
String[] cols = sortColumns.split(",");
java.util.List<Field> fList = new java.util.ArrayList();
for (int k = 0; k < cols.length; k++) {
fList.add(Field.valueOf(cols[k]));
}
this.setSortColumns(fList.toArray(new Field[fList.size()]));
} else {
this.setSortColumns(Field.valueOf(sortColumns));
}
}
}

+ 202
- 0
mallinkService/src/main/java/com/simple/domain/po/WxProfitSharingReceiver.java Просмотреть файл

@@ -0,0 +1,202 @@
package com.simple.domain.po;

import javax.persistence.*;
import java.util.*;
import java.math.*;
import javax.persistence.Transient;
import java.util.List;
import javax.persistence.Id;
import java.io.Serializable;

@Table(name = "wx_profit_sharing_receiver")
public class WxProfitSharingReceiver implements Serializable {
private static final long serialVersionUID = 1L;
@Id
protected Long id;
@Transient
protected List<Long> ids;
@Transient
protected String sortColumns;
public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}
public String getSortColumns() {
return sortColumns;
}
public List<Long> getIds() {
return ids;
}

public void setIds(List<Long> ids) {
this.ids = ids;
}
/*商户ID**/
@io.swagger.annotations.ApiModelProperty(value="商户ID",name="merchantId")
private String merchantId;
/*分账接收方类型,1 = MERCHANT_ID(商户 ID) 2 = PERSONAL_WECHATID(个人微信号) 3 = PERSONAL_OPENID(个人openid(由父商 户 APPID 转换得到) 4 = PERSONAL_SUB_OPENID(个人 sub_openid(由子商户 APPID 转换得到))**/
@io.swagger.annotations.ApiModelProperty(value="分账接收方类型,1 = MERCHANT_ID(商户 ID) 2 = PERSONAL_WECHATID(个人微信号) 3 = PERSONAL_OPENID(个人openid(由父商 户 APPID 转换得到) 4 = PERSONAL_SUB_OPENID(个人 sub_openid(由子商户 APPID 转换得到))",name="receiverType")
private Integer receiverType;
/*分账接收方账号,见接收方类型**/
@io.swagger.annotations.ApiModelProperty(value="分账接收方账号,见接收方类型",name="receiverAccount")
private String receiverAccount;
/*分款接受方说明**/
@io.swagger.annotations.ApiModelProperty(value="分款接受方说明",name="receiverComments")
private String receiverComments;
/***/
@io.swagger.annotations.ApiModelProperty(value="",name="createTime")
private Date createTime;
/***/
@io.swagger.annotations.ApiModelProperty(value="",name="updateTime")
private Date updateTime;
/*分账类型:1-服务商户分账,2-商户转入银行卡**/
@io.swagger.annotations.ApiModelProperty(value="分账类型:1-服务商户分账,2-商户转入银行卡",name="sharingType")
private Integer sharingType;
/***/
@io.swagger.annotations.ApiModelProperty(value="",name="bankNo")
private String bankNo;
/***/
@io.swagger.annotations.ApiModelProperty(value="",name="trueName")
private String trueName;
/***/
@io.swagger.annotations.ApiModelProperty(value="",name="bankCode")
private String bankCode;
public String getMerchantId() {
return merchantId;
}
public void setMerchantId(String _merchantId) {
merchantId = _merchantId;
}
public Integer getReceiverType() {
return receiverType;
}
public void setReceiverType(Integer _receiverType) {
receiverType = _receiverType;
}
public String getReceiverAccount() {
return receiverAccount;
}
public void setReceiverAccount(String _receiverAccount) {
receiverAccount = _receiverAccount;
}
public String getReceiverComments() {
return receiverComments;
}
public void setReceiverComments(String _receiverComments) {
receiverComments = _receiverComments;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date _createTime) {
createTime = _createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date _updateTime) {
updateTime = _updateTime;
}
public Integer getSharingType() {
return sharingType;
}
public void setSharingType(Integer _sharingType) {
sharingType = _sharingType;
}
public String getBankNo() {
return bankNo;
}
public void setBankNo(String _bankNo) {
bankNo = _bankNo;
}
public String getTrueName() {
return trueName;
}
public void setTrueName(String _trueName) {
trueName = _trueName;
}
public String getBankCode() {
return bankCode;
}
public void setBankCode(String _bankCode) {
bankCode = _bankCode;
}



public static enum Field
{
Id_ASC("`id` ASC"),Id_DESC("`id` DESC")
,MerchantId_ASC("`merchantId` ASC"),MerchantId_DESC("`merchantId` DESC")
,ReceiverType_ASC("`receiverType` ASC"),ReceiverType_DESC("`receiverType` DESC")
,ReceiverAccount_ASC("`receiverAccount` ASC"),ReceiverAccount_DESC("`receiverAccount` DESC")
,ReceiverComments_ASC("`receiverComments` ASC"),ReceiverComments_DESC("`receiverComments` DESC")
,CreateTime_ASC("`createTime` ASC"),CreateTime_DESC("`createTime` DESC")
,UpdateTime_ASC("`updateTime` ASC"),UpdateTime_DESC("`updateTime` DESC")
,SharingType_ASC("`sharingType` ASC"),SharingType_DESC("`sharingType` DESC")
,BankNo_ASC("`bankNo` ASC"),BankNo_DESC("`bankNo` DESC")
,TrueName_ASC("`trueName` ASC"),TrueName_DESC("`trueName` DESC")
,BankCode_ASC("`bankCode` ASC"),BankCode_DESC("`bankCode` DESC")
;
private String value;
Field(String value){
this.value = value;
}
public String getValue() {
return value;
}
public void setCol(String value) {
this.value = value;
}
@Override
public String toString() {
return this.getValue();
}
}
public void setSortColumns(WxProfitSharingReceiver.Field... fields)
{
if (fields == null || fields.length == 0) {
return;
}
for (int k = 0; k < fields.length; k++) {
if (fields[k] == null) {
return;
}
}
StringBuilder sb = new StringBuilder(fields[0].toString());
for (int k = 1; k < fields.length; k++) {
sb.append(",");
sb.append(fields[k].toString());
}
}
public void setSortColumns(String sortColumns)
{
if (sortColumns == null || "".equals(sortColumns.trim())) {
return;
}
if (sortColumns.contains(",")) {
String[] cols = sortColumns.split(",");
java.util.List<Field> fList = new java.util.ArrayList();
for (int k = 0; k < cols.length; k++) {
fList.add(Field.valueOf(cols[k]));
}
this.setSortColumns(fList.toArray(new Field[fList.size()]));
} else {
this.setSortColumns(Field.valueOf(sortColumns));
}
}
}

+ 182
- 0
mallinkService/src/main/java/com/simple/domain/po/WxProfitSharingResult.java Просмотреть файл

@@ -0,0 +1,182 @@
package com.simple.domain.po;

import javax.persistence.*;
import java.util.*;
import java.math.*;
import javax.persistence.Transient;
import java.util.List;
import javax.persistence.Id;
import java.io.Serializable;

@Table(name = "wx_profit_sharing_result")
public class WxProfitSharingResult implements Serializable {
private static final long serialVersionUID = 1L;
@Id
protected Long id;
@Transient
protected List<Long> ids;
@Transient
protected String sortColumns;
public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}
public String getSortColumns() {
return sortColumns;
}
public List<Long> getIds() {
return ids;
}

public void setIds(List<Long> ids) {
this.ids = ids;
}
/*分账订单号**/
@io.swagger.annotations.ApiModelProperty(value="分账订单号",name="sharingOrderId")
private String sharingOrderId;
/*分账接收方id**/
@io.swagger.annotations.ApiModelProperty(value="分账接收方id",name="sharingReceiverId")
private String sharingReceiverId;
/*分账金额(分)**/
@io.swagger.annotations.ApiModelProperty(value="分账金额(分)",name="payAmount")
private Integer payAmount;
/*更新时间**/
@io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateTime")
private Date updateTime;
/*创建时间**/
@io.swagger.annotations.ApiModelProperty(value="创建时间",name="createTime")
private Date createTime;
/*分账结果状态:1-PENDING:待分账 2-SUCCESS:分账成功 3-ADJUST:分账失败待调账 4-RETURNED:已转回分账方 5-CLOSED: 已关闭 **/
@io.swagger.annotations.ApiModelProperty(value="分账结果状态:1-PENDING:待分账 2-SUCCESS:分账成功 3-ADJUST:分账失败待调账 4-RETURNED:已转回分账方 5-CLOSED: 已关闭 ",name="sharingStatus")
private Integer sharingStatus;
/*微信返回的分账完成时间**/
@io.swagger.annotations.ApiModelProperty(value="微信返回的分账完成时间",name="finishTime")
private String finishTime;
/*微信返回的失败原因**/
@io.swagger.annotations.ApiModelProperty(value="微信返回的失败原因",name="failedReason")
private String failedReason;
public String getSharingOrderId() {
return sharingOrderId;
}
public void setSharingOrderId(String _sharingOrderId) {
sharingOrderId = _sharingOrderId;
}
public String getSharingReceiverId() {
return sharingReceiverId;
}
public void setSharingReceiverId(String _sharingReceiverId) {
sharingReceiverId = _sharingReceiverId;
}
public Integer getPayAmount() {
return payAmount;
}
public void setPayAmount(Integer _payAmount) {
payAmount = _payAmount;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date _updateTime) {
updateTime = _updateTime;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date _createTime) {
createTime = _createTime;
}
public Integer getSharingStatus() {
return sharingStatus;
}
public void setSharingStatus(Integer _sharingStatus) {
sharingStatus = _sharingStatus;
}
public String getFinishTime() {
return finishTime;
}
public void setFinishTime(String _finishTime) {
finishTime = _finishTime;
}
public String getFailedReason() {
return failedReason;
}
public void setFailedReason(String _failedReason) {
failedReason = _failedReason;
}



public static enum Field
{
Id_ASC("`id` ASC"),Id_DESC("`id` DESC")
,SharingOrderId_ASC("`sharingOrderId` ASC"),SharingOrderId_DESC("`sharingOrderId` DESC")
,SharingReceiverId_ASC("`sharingReceiverId` ASC"),SharingReceiverId_DESC("`sharingReceiverId` DESC")
,PayAmount_ASC("`payAmount` ASC"),PayAmount_DESC("`payAmount` DESC")
,UpdateTime_ASC("`updateTime` ASC"),UpdateTime_DESC("`updateTime` DESC")
,CreateTime_ASC("`createTime` ASC"),CreateTime_DESC("`createTime` DESC")
,SharingStatus_ASC("`sharingStatus` ASC"),SharingStatus_DESC("`sharingStatus` DESC")
,FinishTime_ASC("`finishTime` ASC"),FinishTime_DESC("`finishTime` DESC")
,FailedReason_ASC("`failedReason` ASC"),FailedReason_DESC("`failedReason` DESC")
;
private String value;
Field(String value){
this.value = value;
}
public String getValue() {
return value;
}
public void setCol(String value) {
this.value = value;
}
@Override
public String toString() {
return this.getValue();
}
}
public void setSortColumns(WxProfitSharingResult.Field... fields)
{
if (fields == null || fields.length == 0) {
return;
}
for (int k = 0; k < fields.length; k++) {
if (fields[k] == null) {
return;
}
}
StringBuilder sb = new StringBuilder(fields[0].toString());
for (int k = 1; k < fields.length; k++) {
sb.append(",");
sb.append(fields[k].toString());
}
}
public void setSortColumns(String sortColumns)
{
if (sortColumns == null || "".equals(sortColumns.trim())) {
return;
}
if (sortColumns.contains(",")) {
String[] cols = sortColumns.split(",");
java.util.List<Field> fList = new java.util.ArrayList();
for (int k = 0; k < cols.length; k++) {
fList.add(Field.valueOf(cols[k]));
}
this.setSortColumns(fList.toArray(new Field[fList.size()]));
} else {
this.setSortColumns(Field.valueOf(sortColumns));
}
}
}

+ 6
- 6
mallinkService/src/main/java/com/simple/domain/po/WxRefundOrder.java Просмотреть файл

@@ -71,10 +71,10 @@ public class WxRefundOrder implements Serializable {
private Integer refundFee;
/*退款发起时间(秒)**/
@io.swagger.annotations.ApiModelProperty(value="退款发起时间(秒)",name="refundTimeStart")
private Integer refundTimeStart;
private Date refundTimeStart;
/*退款结束时间(秒)**/
@io.swagger.annotations.ApiModelProperty(value="退款结束时间(秒)",name="refundTimeEnd")
private Integer refundTimeEnd;
private Date refundTimeEnd;
/*支付渠道: 0-微信 1-支付宝 2-银联 **/
@io.swagger.annotations.ApiModelProperty(value="支付渠道: 0-微信 1-支付宝 2-银联 ",name="refundVendor")
private Integer refundVendor;
@@ -141,16 +141,16 @@ public class WxRefundOrder implements Serializable {
public void setRefundFee(Integer _refundFee) {
refundFee = _refundFee;
}
public Integer getRefundTimeStart() {
public Date getRefundTimeStart() {
return refundTimeStart;
}
public void setRefundTimeStart(Integer _refundTimeStart) {
public void setRefundTimeStart(Date _refundTimeStart) {
refundTimeStart = _refundTimeStart;
}
public Integer getRefundTimeEnd() {
public Date getRefundTimeEnd() {
return refundTimeEnd;
}
public void setRefundTimeEnd(Integer _refundTimeEnd) {
public void setRefundTimeEnd(Date _refundTimeEnd) {
refundTimeEnd = _refundTimeEnd;
}
public Integer getRefundVendor() {


+ 15
- 5
mallinkService/src/main/java/com/simple/domain/po/WxShop.java Просмотреть файл

@@ -1,12 +1,12 @@
package com.simple.domain.po;

import javax.persistence.*;
import java.util.*;
import java.math.*;
import javax.persistence.Transient;
import java.util.List;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@Table(name = "wx_shop")
public class WxShop implements Serializable {
@@ -86,6 +86,10 @@ public class WxShop implements Serializable {
/*更新时间**/
@io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate")
private Date updateDate;

@io.swagger.annotations.ApiModelProperty(value="图片",name="imgUrl")
private String imgUrl;

public String getTenantId() {
return tenantId;
}
@@ -177,7 +181,13 @@ public class WxShop implements Serializable {
updateDate = _updateDate;
}

public String getImgUrl() {
return imgUrl;
}

public void setImgUrl(String imgUrl) {
this.imgUrl = imgUrl;
}

public static enum Field
{


+ 43
- 24
mallinkService/src/main/java/com/simple/domain/vo/OrderVo.java Просмотреть файл

@@ -8,49 +8,60 @@ public class OrderVo implements Serializable {
/*租户ID**/
@io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId")
private String tenantId;
/*商户ID**/
@io.swagger.annotations.ApiModelProperty(value="商户ID",name="merchantId")
private Long merchantId;
/*订单ID**/
@io.swagger.annotations.ApiModelProperty(value="订单ID",name="orderId")
private Long orderId;
/*卡券ID**/
@io.swagger.annotations.ApiModelProperty(value="卡券ID",name="couponId")
private Long couponId;
/*商户ID**/
@io.swagger.annotations.ApiModelProperty(value="商户ID",name="merchantId")
private Long merchantId;
/*c端用户id**/
@io.swagger.annotations.ApiModelProperty(value="c端用户id",name="cUserId")
private Long cUserId;
/*b端用户id**/
@io.swagger.annotations.ApiModelProperty(value="b端用户id",name="bUserId")
private Long bUserId;
/*订单状态**/
@io.swagger.annotations.ApiModelProperty(value="订单状态",name="status")
private Integer status;
@io.swagger.annotations.ApiModelProperty(value="订单状态",name="orderStatus")
private Integer orderStatus;
/*券状态**/
@io.swagger.annotations.ApiModelProperty(value="券状态",name="status")
private Integer couponStatus;

public String getTenantId() {
public String getTenantId() {
return tenantId;
}
public void setTenantId(String _tenantId) {
tenantId = _tenantId;

public void setTenantId(String tenantId) {
this.tenantId = tenantId;
}
public Long getOrderId() {
return orderId;

public Long getMerchantId() {
return merchantId;
}
public void setOrderId(Long _orderId) {
orderId = _orderId;

public void setMerchantId(Long merchantId) {
this.merchantId = merchantId;
}
public Long getCouponId() {
return couponId;

public Long getOrderId() {
return orderId;
}
public void setCouponId(Long _couponId) {
couponId = _couponId;

public void setOrderId(Long orderId) {
this.orderId = orderId;
}
public Long getMerchantId() {
return merchantId;

public Long getCouponId() {
return couponId;
}
public void setMerchantId(Long _merchantId) {
merchantId = _merchantId;

public void setCouponId(Long couponId) {
this.couponId = couponId;
}

public Long getcUserId() {
return cUserId;
}
@@ -59,12 +70,20 @@ public class OrderVo implements Serializable {
this.cUserId = cUserId;
}

public Integer getStatus() {
return status;
public Long getbUserId() {
return bUserId;
}

public void setbUserId(Long bUserId) {
this.bUserId = bUserId;
}

public Integer getOrderStatus() {
return orderStatus;
}

public void setStatus(Integer status) {
this.status = status;
public void setOrderStatus(Integer orderStatus) {
this.orderStatus = orderStatus;
}

public Integer getCouponStatus() {


+ 41
- 0
mallinkService/src/main/java/com/simple/enums/EnumCarCmd.java Просмотреть файл

@@ -0,0 +1,41 @@
package com.simple.enums;

/**
* Created by Stormeye on 2018/08/09.
*/
public enum EnumCarCmd {

CAR_ETCP_LOGIN(600, "ETCP"),
CAR_ETCP_CALLBACK_PARK_IN(601, "ETCP入场通知"),
CAR_ETCP_CALLBACK_PARK_OUT(602, "ETCP出场通知"),
CAR_ETCP_CALLBACK_UNBIND(603, "ETCP车辆解绑通知"),
CAR_ETCP_CALLBACK_PAY_MANUAL(604, "主动支付结果通知"),
CAR_TJD_CALLBACK_PARK_IN(610, "停简单入场通知"),
CAR_TJD_CALLBACK_PARK_OUT(611, "停简单出场通知"),
;

public static EnumCarCmd getEnum(Integer code) {
for (EnumCarCmd value : values()) {
if (value.getCode().equals(code)) {
return value;
}
}
return null;
}

private Integer code;
private String message;

EnumCarCmd(Integer code, String message) {
this.code = code;
this.message = message;
}

public Integer getCode() {
return code;
}

public String getMessage() {
return message;
}
}

+ 35
- 0
mallinkService/src/main/java/com/simple/enums/EnumPayDomain.java Просмотреть файл

@@ -0,0 +1,35 @@
package com.simple.enums;

/**
* Created by Stormeye on 2018/08/09.
*/
public enum EnumPayDomain {

PAY_DOMAIN_MASTER_ACCOUNT_ID(8, ""),
PAY_DOMAIN_MASTER_APPINFO_ID(8, "");

public static EnumPayDomain getEnum(Integer code) {
for (EnumPayDomain value : values()) {
if (value.getCode().equals(code)) {
return value;
}
}
return null;
}

private Integer code;
private String message;

EnumPayDomain(Integer code, String message) {
this.code = code;
this.message = message;
}

public Integer getCode() {
return code;
}

public String getMessage() {
return message;
}
}

+ 1
- 0
mallinkService/src/main/java/com/simple/enums/EnumPayStatus.java Просмотреть файл

@@ -8,6 +8,7 @@ public enum EnumPayStatus {
PAY_WAY_WAIT(0, "支付中"),
PAY_WAY_SUCCESS(1, "支付成功"),
PAY_WAY_FAIL(2, "支付失败"),
PAY_WAY_CANCEL(3, "取消支付")
;

public static EnumPayStatus getEnum(Integer code) {


+ 37
- 0
mallinkService/src/main/java/com/simple/enums/EnumProfitSharingReceiverType.java Просмотреть файл

@@ -0,0 +1,37 @@
package com.simple.enums;

/**
* Created by Stormeye on 2018/08/09.
*/
public enum EnumProfitSharingReceiverType {
PROFIT_SHARING_RECEIVER_MERCHANT_ID(1, "MERCHANT_ID"),
PROFIT_SHARING_RECEIVER_PERSONAL_WECHATID(2, "PERSONAL_WECHATID"),
PROFIT_SHARING_RECEIVER_PERSONAL_OPENID(3, "PERSONAL_OPENID"),
PROFIT_SHARING_RECEIVER_PERSONAL_SUB_OPENID(4, "PERSONAL_SUB_OPENID"),
;

public static EnumProfitSharingReceiverType getEnum(Integer code) {
for (EnumProfitSharingReceiverType value : values()) {
if (value.getCode().equals(code)) {
return value;
}
}
return null;
}

private Integer code;
private String message;

EnumProfitSharingReceiverType(Integer code, String message) {
this.code = code;
this.message = message;
}

public Integer getCode() {
return code;
}

public String getMessage() {
return message;
}
}

+ 40
- 0
mallinkService/src/main/java/com/simple/enums/EnumProfitSharingStatus.java Просмотреть файл

@@ -0,0 +1,40 @@
package com.simple.enums;

/**
* Created by Stormeye on 2018/08/09.
*/
public enum EnumProfitSharingStatus {
PROFIT_SHARING_UNKNOWN(-1, "未知"),
PROFIT_SHARING_REQ_FAILED(1, "提交订单失败"),
PROFIT_SHARING_APPLY_FAILED(2, "提交业务失败"),
PROFIT_SHARING_ACCEPTED(3, "受理成功"),
PROFIT_SHARING_PROCESSING(4, "处理中"),
PROFIT_SHARING_DONE(5, "处理完成"),
PROFIT_SHARING_FAILED(6, "处理失败"),
;

public static EnumProfitSharingStatus getEnum(Integer code) {
for (EnumProfitSharingStatus value : values()) {
if (value.getCode().equals(code)) {
return value;
}
}
return null;
}

private Integer code;
private String message;

EnumProfitSharingStatus(Integer code, String message) {
this.code = code;
this.message = message;
}

public Integer getCode() {
return code;
}

public String getMessage() {
return message;
}
}

+ 17
- 0
mallinkService/src/main/java/com/simple/mapper/WxCUserCarMapper.java Просмотреть файл

@@ -0,0 +1,17 @@
package com.simple.mapper;

import java.util.*;
import com.simple.common.CommonMapper;
import org.apache.ibatis.annotations.Param;
import com.simple.domain.po.WxCUserCar;

public interface WxCUserCarMapper extends CommonMapper<WxCUserCar, Long> {

List<WxCUserCar> findList(WxCUserCar wxCUserCar);

}

+ 0
- 17
mallinkService/src/main/java/com/simple/mapper/WxCUserCarsMapper.java Просмотреть файл

@@ -1,17 +0,0 @@
package com.simple.mapper;

import java.util.*;
import com.simple.common.CommonMapper;
import org.apache.ibatis.annotations.Param;
import com.simple.domain.po.WxCUserCars;

public interface WxCUserCarsMapper extends CommonMapper<WxCUserCars, String> {

List<WxCUserCars> findList(WxCUserCars wxCUserCars);

}

+ 17
- 0
mallinkService/src/main/java/com/simple/mapper/WxCarCmdLogMapper.java Просмотреть файл

@@ -0,0 +1,17 @@
package com.simple.mapper;

import java.util.*;
import com.simple.common.CommonMapper;
import org.apache.ibatis.annotations.Param;
import com.simple.domain.po.WxCarCmdLog;

public interface WxCarCmdLogMapper extends CommonMapper<WxCarCmdLog, Long> {

List<WxCarCmdLog> findList(WxCarCmdLog wxCarCmdLog);

}

+ 0
- 17
mallinkService/src/main/java/com/simple/mapper/WxCarCmdLogsMapper.java Просмотреть файл

@@ -1,17 +0,0 @@
package com.simple.mapper;

import java.util.*;
import com.simple.common.CommonMapper;
import org.apache.ibatis.annotations.Param;
import com.simple.domain.po.WxCarCmdLogs;

public interface WxCarCmdLogsMapper extends CommonMapper<WxCarCmdLogs, String> {

List<WxCarCmdLogs> findList(WxCarCmdLogs wxCarCmdLogs);

}

+ 2
- 0
mallinkService/src/main/java/com/simple/mapper/WxCouponMapper.java Просмотреть файл

@@ -12,6 +12,8 @@ public interface WxCouponMapper extends CommonMapper<WxCoupon, Long> {

List<WxCoupon> findEnableList(WxCoupon wxCoupon);

List<WxCoupon> findCanSendList(WxCoupon record);




+ 0
- 6
mallinkService/src/main/java/com/simple/mapper/WxCouponOrderMapper.java Просмотреть файл

@@ -8,10 +8,4 @@ import com.simple.domain.po.WxCouponOrder;
public interface WxCouponOrderMapper extends CommonMapper<WxCouponOrder, Long> {

List<WxCouponOrder> findList(WxCouponOrder wxCouponOrder);

}

+ 1
- 1
mallinkService/src/main/java/com/simple/mapper/WxPayOrderMapper.java Просмотреть файл

@@ -5,7 +5,7 @@ import com.simple.common.CommonMapper;
import org.apache.ibatis.annotations.Param;
import com.simple.domain.po.WxPayOrder;

public interface WxPayOrderMapper extends CommonMapper<WxPayOrder, String> {
public interface WxPayOrderMapper extends CommonMapper<WxPayOrder, Long> {

List<WxPayOrder> findList(WxPayOrder wxPayOrder);


+ 17
- 0
mallinkService/src/main/java/com/simple/mapper/WxProfitSharingOrderMapper.java Просмотреть файл

@@ -0,0 +1,17 @@
package com.simple.mapper;

import java.util.*;
import com.simple.common.CommonMapper;
import org.apache.ibatis.annotations.Param;
import com.simple.domain.po.WxProfitSharingOrder;

public interface WxProfitSharingOrderMapper extends CommonMapper<WxProfitSharingOrder, Long> {

List<WxProfitSharingOrder> findList(WxProfitSharingOrder wxProfitSharingOrder);

}

+ 17
- 0
mallinkService/src/main/java/com/simple/mapper/WxProfitSharingReceiverMapper.java Просмотреть файл

@@ -0,0 +1,17 @@
package com.simple.mapper;

import java.util.*;
import com.simple.common.CommonMapper;
import org.apache.ibatis.annotations.Param;
import com.simple.domain.po.WxProfitSharingReceiver;

public interface WxProfitSharingReceiverMapper extends CommonMapper<WxProfitSharingReceiver, Long> {

List<WxProfitSharingReceiver> findList(WxProfitSharingReceiver wxProfitSharingReceiver);

}

+ 17
- 0
mallinkService/src/main/java/com/simple/mapper/WxProfitSharingResultMapper.java Просмотреть файл

@@ -0,0 +1,17 @@
package com.simple.mapper;

import java.util.*;
import com.simple.common.CommonMapper;
import org.apache.ibatis.annotations.Param;
import com.simple.domain.po.WxProfitSharingResult;

public interface WxProfitSharingResultMapper extends CommonMapper<WxProfitSharingResult, Long> {

List<WxProfitSharingResult> findList(WxProfitSharingResult wxProfitSharingResult);

}

+ 20
- 0
mallinkService/src/main/java/com/simple/pay/WxPayment.java Просмотреть файл

@@ -153,6 +153,26 @@ public class WxPayment {

}

/**
* 小程序统一下单后二次签名
*
* @param appId
* @param timestamp
* @param prepay_id
* @param paternerKey
* @return
*/
public static Map<String, String> buildWeappSecondSignMap(String appId, String timestamp, String prepay_id, String paternerKey) {
Map<String, String> params = new HashMap<String, String>();
Map<String, String> sighMap = MapUtil.getOrderMap();
sighMap.put("appId", appId);
sighMap.put("timeStamp", timestamp);
sighMap.put("package", "prepay_id="+prepay_id);
sighMap.put("signType", "MD5");

return buildSignAfterParasMap(params, paternerKey);
}

/**
* 关闭订单
*


+ 48
- 0
mallinkService/src/main/java/com/simple/pay/WxProfitSharing.java Просмотреть файл

@@ -0,0 +1,48 @@
package com.simple.pay;

import java.util.HashMap;
import java.util.Map;

import com.simple.utils.HttpUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class WxProfitSharing {
protected static Logger log = LoggerFactory.getLogger(WxProfitSharing.class);

// 分账接口
private static final String PROFIT_SHARING_URL = "https://api.mch.weixin.qq.com/secapi/pay/profitsharing";
// 查询接口
private static final String PROFIT_SHARING_QUERY_URL = "https://api.mch.weixin.qq.com/pay/profitsharingquery";
// 添加分账账户
private static final String RPOFIT_SHARING_ADD_RECEIVER_URL = "https://api.mch.weixin.qq.com/pay/profitsharingaddreceiver";
// 删除分账账户
private static final String RPOFIT_SHARING_REMOVE_RECEIVER_URL = "https://api.mch.weixin.qq.com/pay/profitsharingremovereceiver";


private WxProfitSharing() {
}

/**
* 分账下单
* @param params
* @return
*/
public static String pushOrder(Map<String, String> params) {
return doPost(PROFIT_SHARING_URL, params);
}

/**
* 分账查询
* @param params 请求参数
* @return
*/
public static String queryOrder(Map<String, String> params) {
return doPost(PROFIT_SHARING_URL, params);
}


public static String doPost(String url, Map<String, String> params) {
return HttpUtil.payPost(url, WxPayment.toXml(params));
}
}

+ 89
- 0
mallinkService/src/main/java/com/simple/pay/WxProfitSharingP.java Просмотреть файл

@@ -0,0 +1,89 @@
package com.simple.pay;

import java.io.Serializable;

/**
* Created by Peng on 2018/8/10.
*/
public class WxProfitSharingP implements Serializable {
private static final long serialVersionUID = 1L;

private String mch_id; // 商户号
private String sub_mch_id; // 子商户号
private String appid; // 公众账号ID
private String sub_appid; // 子公众账号ID
private String nonce_str; // 随机字符串
private String sign; // 签名
private String transaction_id ; // 支付订单号
private String out_trade_no; // 商户订单号
private String receivers; // 分账接收方

public String getMch_id() {
return mch_id;
}

public void setMch_id(String mch_id) {
this.mch_id = mch_id;
}

public String getSub_mch_id() { return sub_mch_id; }

public void setSub_mch_id(String sub_mch_id) {
this.sub_mch_id = sub_mch_id;
}

public String getAppid() {
return appid;
}

public void setAppid(String appid) {
this.appid = appid;
}

public String getSub_appid() {
return sub_appid;
}

public void setSub_appid(String sub_appid) {
this.sub_appid = sub_appid;
}

public String getNonce_str() {
return nonce_str;
}

public void setNonce_str(String nonce_str) {
this.nonce_str = nonce_str;
}

public String getSign() {
return sign;
}

public void setSign(String sign) {
this.sign = sign;
}

public String getTransaction_id() {
return transaction_id;
}

public void setTransaction_id(String transaction_id) {
this.transaction_id = transaction_id;
}

public String getOut_trade_no() { return out_trade_no; }

public void setOut_trade_no(String out_trade_no) {
this.out_trade_no = out_trade_no;
}

public String getReceivers() {
return receivers;
}

public void setReceivers(String receivers) {
this.receivers = receivers;
}

}

+ 63
- 0
mallinkService/src/main/java/com/simple/service/WxCUserCarService.java Просмотреть файл

@@ -0,0 +1,63 @@
package com.simple.service;

import java.util.*;
import com.github.pagehelper.PageInfo;
import com.simple.domain.po.WxCUserCar;

public interface WxCUserCarService {

/**
* 根据实体查询分页列表
*
* @param record
* @param pageIndex
* @param pageSize
* @return
*/
PageInfo<WxCUserCar> listAsPage(WxCUserCar record, Integer pageIndex, Integer pageSize);

/**
* 根据实体查询列表
*
* @param record
* @return
*/
List<WxCUserCar> getList(WxCUserCar record);

/**
* 根据实体查询
* @param record
* @return
*/
WxCUserCar getOne(WxCUserCar record);
/**
* 根据Id获得实体
*
* @param id
* @return
*/
WxCUserCar getById(Long id);
/**
* 保存或更新实体
*
* @param record
*/
void saveOrUpdate(WxCUserCar record);

/**
* 根据Id删除实体
*
* @param id
*/
void deleteById(Long id);

/**
* 根据WxCUserCar删除实体
* @param record
*/
void deleteByObj(WxCUserCar record);
}

mallinkService/src/main/java/com/simple/service/WxCUserCarsService.java → mallinkService/src/main/java/com/simple/service/WxCarCmdLogService.java Просмотреть файл

@@ -2,9 +2,9 @@ package com.simple.service;

import java.util.*;
import com.github.pagehelper.PageInfo;
import com.simple.domain.po.WxCUserCars;
import com.simple.domain.po.WxCarCmdLog;

public interface WxCUserCarsService {
public interface WxCarCmdLogService {

/**
* 根据实体查询分页列表
@@ -14,7 +14,7 @@ public interface WxCUserCarsService {
* @param limit
* @return
*/
PageInfo<WxCUserCars> listAsPage(WxCUserCars record, Integer pageIndex, Integer pageSize);
PageInfo<WxCarCmdLog> listAsPage(WxCarCmdLog record, Integer pageIndex, Integer pageSize);
/**
* 根据Id获得实体
@@ -22,14 +22,14 @@ public interface WxCUserCarsService {
* @param id
* @return
*/
WxCUserCars getById(Long id);
WxCarCmdLog getById(Long id);
/**
* 保存或更新实体
*
* @param record
*/
void saveOrUpdate(WxCUserCars record);
void saveOrUpdate(WxCarCmdLog record);

/**
* 根据Id删除实体

+ 11
- 10
mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java Просмотреть файл

@@ -5,6 +5,7 @@ import com.github.pagehelper.PageInfo;
import com.simple.common.ResultData;
import com.simple.domain.po.MallUserInfo;
import com.simple.domain.po.WxCouponOrder;
import com.simple.domain.po.WxMerchantBUser;

public interface WxCouponOrderService {

@@ -12,8 +13,8 @@ public interface WxCouponOrderService {
* 根据实体查询分页列表
*
* @param record
* @param offset
* @param limit
* @param pageIndex
* @param pageSize
* @return
*/
PageInfo<WxCouponOrder> listAsPage(WxCouponOrder record, Integer pageIndex, Integer pageSize);
@@ -40,20 +41,20 @@ public interface WxCouponOrderService {
*/
void deleteById(Long id);
/**
* 根据主键Id(券码)核销
* 根据主键couponOrderId(券码)核销
*
* @param id
* @param mallUserInfo 核销人(登录用户)
* @param couponOrderId
* @param bUserId 核销人(登录用户)
*/
ResultData verify(Long id, MallUserInfo mallUserInfo);
ResultData verify(Long couponOrderId, Long bUserId);

/**
* 根据主键Id(券码)退券(款)
* 根据主键couponOrderId(券码)退券(款)
*
* @param id
* @param mallUserInfo 退券(款)人(登录用户)
* @param couponOrderId
* @param bUserId 退券(款)人(登录用户)
*/
ResultData refund(Long id, MallUserInfo mallUserInfo);
ResultData refund(Long couponOrderId, Long bUserId);



+ 4
- 1
mallinkService/src/main/java/com/simple/service/WxCouponService.java Просмотреть файл

@@ -48,7 +48,10 @@ public interface WxCouponService {
* @param id
*/
void deleteById(Long id);
/**
*
*/
PageInfo<WxCoupon> findCanSendList(WxCoupon record, Integer pageIndex, Integer pageSize);



+ 1
- 1
mallinkService/src/main/java/com/simple/service/WxMerchantService.java Просмотреть файл

@@ -39,6 +39,6 @@ public interface WxMerchantService {
void deleteById(Long id);


void saveOrUpdate(WxMerchant wxMerchant, String shopids, String userids);
void disable(Long id);

}

+ 6
- 7
mallinkService/src/main/java/com/simple/service/WxMerchantShopService.java Просмотреть файл

@@ -1,8 +1,8 @@
package com.simple.service;

import java.util.*;
import com.github.pagehelper.PageInfo;
import com.simple.domain.po.WxMerchantShop;
import com.simple.domain.po.WxShop;

public interface WxMerchantShopService {

@@ -37,12 +37,11 @@ public interface WxMerchantShopService {
* @param id
*/
void deleteById(Long id);



PageInfo<WxShop> queryShopList(WxMerchantShop record, Integer pageIndex, Integer pageSize);


}

+ 10
- 2
mallinkService/src/main/java/com/simple/service/WxParkService.java Просмотреть файл

@@ -10,8 +10,8 @@ public interface WxParkService {
* 根据实体查询分页列表
*
* @param record
* @param offset
* @param limit
* @param pageIndex
* @param pageSize
* @return
*/
PageInfo<WxPark> listAsPage(WxPark record, Integer pageIndex, Integer pageSize);
@@ -23,6 +23,14 @@ public interface WxParkService {
* @return
*/
WxPark getById(Long id);

/**
* 根据WxPark获得实体
*
* @param record
* @return
*/
WxPark getByObj(WxPark record);
/**
* 保存或更新实体


+ 31
- 24
mallinkService/src/main/java/com/simple/service/WxPayOrderService.java Просмотреть файл

@@ -13,7 +13,8 @@ public interface WxPayOrderService {

/**
* 创建支付订单
* @param record 支付订单请求
*
* @param record 支付订单请求
* @param payWay
* @return
*/
@@ -21,28 +22,45 @@ public interface WxPayOrderService {

/**
* 异步通知
* @param paramMap 异步通知参数
* @param payWay 支付方式
*
* @param paramMap 异步通知参数
* @param payWay 支付方式
* @return
*/
String notify(Map<String, String> paramMap, EnumPayWay payWay);

/**
* 支付成功处理
*
* @param record
* @param transactionId
*/
void handleOrderPaySuccess(WxPayOrder record, String transactionId);

/**
* 支付状态处理
*
* @param record
*/
void handlePayOrderStatusUpdate(WxPayOrder record);

/**
* 页面回调
* @param paramMap 页面通知参数
* @param payWay 支付方式
*
* @param paramMap 页面通知参数
* @param payWay 支付方式
* @return
*/
void callback(Map<String, String> paramMap, EnumPayWay payWay);

/**
/**
* 保存或更新实体
*
* @param record
*/
void saveOrUpdate(WxPayOrder record);

/**
* 根据实体查询分页列表
*
* @param record
@@ -50,22 +68,17 @@ public interface WxPayOrderService {
* @param pageSize
* @return
*/
PageInfo<WxPayOrder> listAsPage(WxPayOrder record, Integer pageIndex, Integer pageSize);
/**
PageInfo<WxPayOrder> listAsPage(WxPayOrder record, Integer pageIndex, Integer pageSize);
/**
* 根据Id获得实体
*
* @param id
* @return
*/
WxPayOrder getById(Long id);
/**
* 保存或更新实体
*
* @param record
*/
void saveOrUpdate(WxPayOrder record);



/**
* 根据Id删除实体
@@ -73,12 +86,6 @@ public interface WxPayOrderService {
* @param id
*/
void deleteById(Long id);



}

+ 58
- 0
mallinkService/src/main/java/com/simple/service/WxProfitSharingOrderService.java Просмотреть файл

@@ -0,0 +1,58 @@
package com.simple.service;

import java.util.*;
import com.github.pagehelper.PageInfo;
import com.simple.common.ResultData;
import com.simple.domain.po.WxAppinfo;
import com.simple.domain.po.WxPayOrder;
import com.simple.domain.po.WxProfitSharingOrder;

public interface WxProfitSharingOrderService {

/**
* 根据实体查询分页列表
*
* @param record
* @param offset
* @param limit
* @return
*/
PageInfo<WxProfitSharingOrder> listAsPage(WxProfitSharingOrder record, Integer pageIndex, Integer pageSize);
/**
* 根据Id获得实体
*
* @param id
* @return
*/
WxProfitSharingOrder getById(Long id);
/**
* 保存或更新实体
*
* @param record
*/
void saveOrUpdate(WxProfitSharingOrder record);

/**
* 根据Id删除实体
*
* @param id
*/
void deleteById(Long id);


/**
* 临时测试
*/
public void test();

/**
* 创建分账订单
*/
public ResultData createSharingOrder(WxAppinfo appInfo, WxPayOrder wxPayOrder);
}

+ 48
- 0
mallinkService/src/main/java/com/simple/service/WxProfitSharingReceiverService.java Просмотреть файл

@@ -0,0 +1,48 @@
package com.simple.service;

import java.util.*;
import com.github.pagehelper.PageInfo;
import com.simple.domain.po.WxProfitSharingReceiver;

public interface WxProfitSharingReceiverService {

/**
* 根据实体查询分页列表
*
* @param record
* @param offset
* @param limit
* @return
*/
PageInfo<WxProfitSharingReceiver> listAsPage(WxProfitSharingReceiver record, Integer pageIndex, Integer pageSize);
/**
* 根据Id获得实体
*
* @param id
* @return
*/
WxProfitSharingReceiver getById(Long id);
/**
* 保存或更新实体
*
* @param record
*/
void saveOrUpdate(WxProfitSharingReceiver record);

/**
* 根据Id删除实体
*
* @param id
*/
void deleteById(Long id);

}

mallinkService/src/main/java/com/simple/service/WxCarCmdLogsService.java → mallinkService/src/main/java/com/simple/service/WxProfitSharingResultService.java Просмотреть файл

@@ -2,19 +2,19 @@ package com.simple.service;

import java.util.*;
import com.github.pagehelper.PageInfo;
import com.simple.domain.po.WxCarCmdLogs;
import com.simple.domain.po.WxProfitSharingResult;

public interface WxCarCmdLogsService {
public interface WxProfitSharingResultService {

/**
* 根据实体查询分页列表
*
* @param record
* @param pageIndex
* @param pageSize
* @param offset
* @param limit
* @return
*/
PageInfo<WxCarCmdLogs> listAsPage(WxCarCmdLogs record, Integer pageIndex, Integer pageSize);
PageInfo<WxProfitSharingResult> listAsPage(WxProfitSharingResult record, Integer pageIndex, Integer pageSize);
/**
* 根据Id获得实体
@@ -22,14 +22,14 @@ public interface WxCarCmdLogsService {
* @param id
* @return
*/
WxCarCmdLogs getById(Long id);
WxProfitSharingResult getById(Long id);
/**
* 保存或更新实体
*
* @param record
*/
void saveOrUpdate(WxCarCmdLogs record);
void saveOrUpdate(WxProfitSharingResult record);

/**
* 根据Id删除实体

+ 2
- 1
mallinkService/src/main/java/com/simple/service/impl/MallPermissionServiceImpl.java Просмотреть файл

@@ -32,7 +32,8 @@ public class MallPermissionServiceImpl implements MallPermissionService {
public void saveOrUpdate(MallPermission record) {
if (record.getId() == null) {
//record.setId(UUID.randomUUID().toString().replaceAll("-", ""));
record.setId(new IdWorker(0, 0).nextId());
final IdWorker idWorker = IdWorker.get();
record.setId(idWorker.nextId());
mallPermissionMapper.insertSelective(record);
} else {
mallPermissionMapper.updateByPrimaryKeySelective(record);


+ 1
- 1
mallinkService/src/main/java/com/simple/service/impl/WxCUserBasicInfoServiceImpl.java Просмотреть файл

@@ -31,7 +31,7 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService {
public void saveOrUpdate(WxCUserBasicInfo record) {
if (record.getId() == null) {
//record.setId(UUID.randomUUID().toString().replaceAll("-", ""));
IdWorker idWorker = new IdWorker(0, 0);
final IdWorker idWorker = IdWorker.get();
record.setId(idWorker.nextId());
wxCUserBasicInfoMapper.insertSelective(record);
} else {


+ 69
- 0
mallinkService/src/main/java/com/simple/service/impl/WxCUserCarServiceImpl.java Просмотреть файл

@@ -0,0 +1,69 @@
package com.simple.service.impl;

import java.util.*;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.simple.domain.po.WxCUserCar;
import com.simple.mapper.WxCUserCarMapper;
import com.simple.service.WxCUserCarService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.simple.common.IdWorker;

@Service
public class WxCUserCarServiceImpl implements WxCUserCarService {
@Autowired
WxCUserCarMapper wxCUserCarMapper;


@Override
public PageInfo<WxCUserCar> listAsPage(WxCUserCar record, Integer pageIndex, Integer pageSize) {
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCUserCarMapper.findList(record));
}

@Override
public List<WxCUserCar> getList(WxCUserCar record) {
return wxCUserCarMapper.findList(record);
}

@Override
public WxCUserCar getOne(WxCUserCar record) {
return wxCUserCarMapper.selectOne(record);
}


@Override
public WxCUserCar getById(Long id) {
return wxCUserCarMapper.selectByPrimaryKey(id);
}

@Override
public void saveOrUpdate(WxCUserCar record) {
if (record.getId() == null) {
final IdWorker idWorker = IdWorker.get();
record.setId(idWorker.nextId());
wxCUserCarMapper.insertSelective(record);
} else {
wxCUserCarMapper.updateByPrimaryKeySelective(record);
}
}

@Override
public void deleteById(Long id) {
wxCUserCarMapper.deleteByPrimaryKey(id);
}

@Override
public void deleteByObj(WxCUserCar record) {
wxCUserCarMapper.delete(record);
}
}

mallinkService/src/main/java/com/simple/service/impl/WxCUserCarsServiceImpl.java → mallinkService/src/main/java/com/simple/service/impl/WxCarCmdLogServiceImpl.java Просмотреть файл

@@ -3,45 +3,45 @@ package com.simple.service.impl;
import java.util.*;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.simple.domain.po.WxCUserCars;
import com.simple.mapper.WxCUserCarsMapper;
import com.simple.service.WxCUserCarsService;
import com.simple.domain.po.WxCarCmdLog;
import com.simple.mapper.WxCarCmdLogMapper;
import com.simple.service.WxCarCmdLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.simple.common.IdWorker;

@Service
public class WxCUserCarsServiceImpl implements WxCUserCarsService {
public class WxCarCmdLogServiceImpl implements WxCarCmdLogService {
@Autowired
WxCUserCarsMapper wxCUserCarsMapper;
WxCarCmdLogMapper wxCarCmdLogMapper;


@Override
public PageInfo<WxCUserCars> listAsPage(WxCUserCars record, Integer pageIndex, Integer pageSize) {
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCUserCarsMapper.findList(record));
public PageInfo<WxCarCmdLog> listAsPage(WxCarCmdLog record, Integer pageIndex, Integer pageSize) {
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCarCmdLogMapper.findList(record));
}

@Override
public WxCUserCars getById(Long id) {
return wxCUserCarsMapper.selectByPrimaryKey(id);
public WxCarCmdLog getById(Long id) {
return wxCarCmdLogMapper.selectByPrimaryKey(id);
}

@Override
public void saveOrUpdate(WxCUserCars record) {
public void saveOrUpdate(WxCarCmdLog record) {
if (record.getId() == null) {
//record.setId(UUID.randomUUID().toString().replaceAll("-", ""));
final IdWorker idWorker = IdWorker.get();
record.setId(idWorker.nextId());
wxCUserCarsMapper.insertSelective(record);
wxCarCmdLogMapper.insertSelective(record);
} else {
wxCUserCarsMapper.updateByPrimaryKeySelective(record);
wxCarCmdLogMapper.updateByPrimaryKeySelective(record);
}
}

@Override
public void deleteById(Long id) {
wxCUserCarsMapper.deleteByPrimaryKey(id);
wxCarCmdLogMapper.deleteByPrimaryKey(id);
}

+ 0
- 54
mallinkService/src/main/java/com/simple/service/impl/WxCarCmdLogsServiceImpl.java Просмотреть файл

@@ -1,54 +0,0 @@
package com.simple.service.impl;

import java.util.*;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.simple.domain.po.WxCarCmdLogs;
import com.simple.mapper.WxCarCmdLogsMapper;
import com.simple.service.WxCarCmdLogsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.simple.common.IdWorker;

@Service
public class WxCarCmdLogsServiceImpl implements WxCarCmdLogsService {
@Autowired
WxCarCmdLogsMapper wxCarCmdLogsMapper;


@Override
public PageInfo<WxCarCmdLogs> listAsPage(WxCarCmdLogs record, Integer pageIndex, Integer pageSize) {
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCarCmdLogsMapper.findList(record));
}

@Override
public WxCarCmdLogs getById(Long id) {
return wxCarCmdLogsMapper.selectByPrimaryKey(id);
}

@Override
public void saveOrUpdate(WxCarCmdLogs record) {
if (record.getId() == null) {
//record.setId(UUID.randomUUID().toString().replaceAll("-", ""));
final IdWorker idWorker = IdWorker.get();
record.setId(idWorker.nextId());
wxCarCmdLogsMapper.insertSelective(record);
} else {
wxCarCmdLogsMapper.updateByPrimaryKeySelective(record);
}
}

@Override
public void deleteById(Long id) {
wxCarCmdLogsMapper.deleteByPrimaryKey(id);
}
}

+ 90
- 26
mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java Просмотреть файл

@@ -8,9 +8,16 @@ import com.simple.common.Result;
import com.simple.common.ResultData;
import com.simple.domain.po.MallUserInfo;
import com.simple.domain.po.WxCouponOrder;
import com.simple.domain.po.WxMerchantBUser;
import com.simple.domain.po.WxOrder;
import com.simple.enums.EnumCouponOrderStatus;
import com.simple.enums.EnumCouponStatus;
import com.simple.exception.MallinkException;
import com.simple.mapper.WxOrderMapper;
import com.simple.mapper.WxCouponOrderMapper;
import com.simple.mapper.WxMerchantBUserMapper;
import com.simple.service.WxCouponOrderService;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
@@ -20,10 +27,17 @@ import java.util.Date;

@Service
public class WxCouponOrderServiceImpl implements WxCouponOrderService {
private Logger logger = Logger.getLogger(WxCouponOrderServiceImpl.class);

@Autowired
WxCouponOrderMapper wxCouponOrderMapper;

@Autowired
WxOrderMapper wxOrderMapper;

@Autowired
WxMerchantBUserMapper wxMerchantBUserMapper;

@Override
public PageInfo<WxCouponOrder> listAsPage(WxCouponOrder record, Integer pageIndex, Integer pageSize) {
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponOrderMapper.findList(record));
@@ -38,7 +52,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
public void saveOrUpdate(WxCouponOrder record) {
if (record.getId() == null) {
//record.setId(UUID.randomUUID().toString().replaceAll("-", ""));
IdWorker idWorker = new IdWorker(0, 0);
final IdWorker idWorker = IdWorker.get();
record.setId(idWorker.nextId());
wxCouponOrderMapper.insertSelective(record);
} else {
@@ -52,48 +66,98 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
}



@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public ResultData verify(Long id, MallUserInfo mallUserInfo) {
WxCouponOrder wxCouponOrder = wxCouponOrderMapper.selectByPrimaryKey(id);
if (wxCouponOrder.getCouponOrderStatus() == 2) {
return new ResultData(Result.ERROR, "已过期");
public ResultData verify(Long couponOrderId, Long bUserId) {

WxCouponOrder wxCouponOrder = wxCouponOrderMapper.selectByPrimaryKey(couponOrderId);
if(wxCouponOrder == null){
logger.error("券ID不存在:"+ couponOrderId);
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL);
}

WxMerchantBUser wxMerchantBUser = wxMerchantBUserMapper.selectByPrimaryKey(bUserId.longValue());
if(wxMerchantBUser == null){
logger.error("核销员ID不存在:"+ bUserId);
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL);
}

WxOrder wxOrder = wxOrderMapper.selectByPrimaryKey(wxCouponOrder.getOrderId());

if (!wxOrder.getMerchantId().equals(wxMerchantBUser.getMerchantId())){
logger.error("券: couponMerchantId-" + wxOrder.getMerchantId()+"核销: couponMerchantId-"+wxMerchantBUser.getMerchantId());
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL);
}

if (wxCouponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_OVER_TIME.getCode()) {
logger.error("已过期: couponOrder-" + couponOrderId);
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_OVER_TIME);
}
if (wxCouponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode()) {
logger.error("已退款: couponOrder-" + couponOrderId);
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_INVALID);
}
if (wxCouponOrder.getCouponOrderStatus() == 3) {
return new ResultData(Result.ERROR, "已退款");
if (wxCouponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()) {
logger.error("已经核销过的券: couponOrder-" + couponOrderId);
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_USED);
}
if (wxCouponOrder.getCouponOrderStatus() == 1) {
return new ResultData(Result.ERROR, "已经核销过的券");
try {
wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()); //1核销
wxCouponOrder.setBUserId(bUserId);
wxCouponOrder.setUpdateDate(new Date());
wxCouponOrderMapper.updateByPrimaryKeySelective(wxCouponOrder);
} catch (Exception e) {
logger.error("db failed: couponOrder-" + couponOrderId + ", e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
}
wxCouponOrder.setCouponOrderStatus(1); //1核销
wxCouponOrder.setBUserId(mallUserInfo.getId());
wxCouponOrder.setUpdateDate(new Date());
wxCouponOrderMapper.updateByPrimaryKeySelective(wxCouponOrder);
return new ResultData();
return new ResultData(wxCouponOrder);


}

@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public ResultData refund(Long id, MallUserInfo mallUserInfo) {
WxCouponOrder wxCouponOrder = wxCouponOrderMapper.selectByPrimaryKey(id);
public ResultData refund(Long couponOrderId, Long bUserId) {

WxCouponOrder wxCouponOrder = wxCouponOrderMapper.selectByPrimaryKey(couponOrderId);
if(wxCouponOrder == null){
logger.error("券ID不存在:"+ couponOrderId);
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL);
}

WxMerchantBUser wxMerchantBUser = wxMerchantBUserMapper.selectByPrimaryKey(bUserId.longValue());
if(wxMerchantBUser == null){
logger.error("操作员ID不存在:"+ bUserId);
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL);
}

WxOrder wxOrder = wxOrderMapper.selectByPrimaryKey(wxCouponOrder.getOrderId());

if (!wxOrder.getMerchantId().equals(wxMerchantBUser.getMerchantId())){
logger.error("券: couponMerchantId-" + wxOrder.getMerchantId()+"核销: couponMerchantId-"+wxMerchantBUser.getMerchantId());
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL);
}
if (wxCouponOrder.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_OVER_TIME.getCode())) {
return new ResultData(ErrorCode.COUPON_ORDER_IS_OVER_TIME);
logger.error("已过期: couponOrder-" + couponOrderId);
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_OVER_TIME);
}
if (wxCouponOrder.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode())) {
return new ResultData(ErrorCode.COUPON_ORDER_IS_INVALID);
logger.error("已退款: couponOrder-" + couponOrderId);
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_OVER_TIME);
}
if (wxCouponOrder.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode())) {
return new ResultData(ErrorCode.COUPON_ORDER_IS_USED);
logger.error("已经核销过的券: couponOrder-" + couponOrderId);
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_USED);
}
try {
wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode()); //3退款,券作废
wxCouponOrder.setBUserId(bUserId);
wxCouponOrder.setUpdateDate(new Date());
wxCouponOrderMapper.updateByPrimaryKeySelective(wxCouponOrder);
} catch (Exception e) {
logger.error("db failed: couponOrder-" + couponOrderId + ", e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
}

wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode()); //3退款,券作废
wxCouponOrder.setBUserId(mallUserInfo.getId());
wxCouponOrder.setUpdateDate(new Date());
wxCouponOrderMapper.updateByPrimaryKeySelective(wxCouponOrder);
return new ResultData(wxCouponOrder);
}



+ 7
- 8
mallinkService/src/main/java/com/simple/service/impl/WxCouponServiceImpl.java Просмотреть файл

@@ -50,12 +50,11 @@ public class WxCouponServiceImpl implements WxCouponService {
public void deleteById(Long id) {
wxCouponMapper.deleteByPrimaryKey(id);
}

@Override
public PageInfo<WxCoupon> findCanSendList(WxCoupon record, Integer pageIndex, Integer pageSize) {
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponMapper.findCanSendList(record));
}


}

+ 1
- 1
mallinkService/src/main/java/com/simple/service/impl/WxDateAmountRecordServiceImpl.java Просмотреть файл

@@ -31,7 +31,7 @@ public class WxDateAmountRecordServiceImpl implements WxDateAmountRecordService
public void saveOrUpdate(WxDateAmountRecord record) {
if (record.getId() == null) {
//record.setId(UUID.randomUUID().toString().replaceAll("-", ""));
IdWorker idWorker = new IdWorker(0, 0);
final IdWorker idWorker = IdWorker.get();
record.setId(idWorker.nextId());
wxDateAmountRecordMapper.insertSelective(record);
} else {


+ 8
- 1
mallinkService/src/main/java/com/simple/service/impl/WxMerchantBUserServiceImpl.java Просмотреть файл

@@ -37,9 +37,16 @@ public class WxMerchantBUserServiceImpl implements WxMerchantBUserService {
if (record.getId() == null) {
//record.setId(UUID.randomUUID().toString().replaceAll("-", ""));
final IdWorker idWorker = IdWorker.get();
record.setId(idWorker.nextId());
long id = idWorker.nextId();
record.setId(id);
record.setBUserId(id);
Date date = new Date();
record.setCreateDate(date);
record.setUpdateDate(date);
wxMerchantBUserMapper.insertSelective(record);
} else {
Date date = new Date();
record.setUpdateDate(date);
wxMerchantBUserMapper.updateByPrimaryKeySelective(record);
}
}


+ 33
- 19
mallinkService/src/main/java/com/simple/service/impl/WxMerchantServiceImpl.java Просмотреть файл

@@ -17,6 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@@ -42,31 +43,43 @@ public class WxMerchantServiceImpl implements WxMerchantService {

@Override
public WxMerchant getById(Long id) {
return wxMerchantMapper.selectByPrimaryKey(id);
}
WxMerchant wxMerchant = wxMerchantMapper.selectByPrimaryKey(id);
WxMerchantShop wxMerchantShop=new WxMerchantShop();
wxMerchantShop.setMerchantId(wxMerchant.getId());
List<WxShop> shops = new ArrayList<>();

List<WxMerchantShop> wxMerchantShopList = wxMerchantShopMapper.findList(wxMerchantShop);
for(WxMerchantShop merchantShop:wxMerchantShopList){
WxShop wxShop = WxShopMapper.selectByPrimaryKey(merchantShop.getShopId());
if(wxShop!=null)
shops.add(wxShop);
}

@Override
public void saveOrUpdate(WxMerchant record) {
if (record.getId() == null) {
//record.setId(UUID.randomUUID().toString().replaceAll("-", ""));
final IdWorker idWorker = IdWorker.get();
record.setId(idWorker.nextId());
record.setCreateDate(new Date());
wxMerchant.setShops(shops);

wxMerchantMapper.insertSelective(record);
} else {
wxMerchantMapper.updateByPrimaryKeySelective(record);
}
WxMerchantBUser wxMerchantBUser = new WxMerchantBUser();
wxMerchantBUser.setMerchantId(wxMerchant.getId());
List<WxMerchantBUser> bUserList = wxMerchantBUserMapper.findList(wxMerchantBUser);
wxMerchant.setbUsers(bUserList);
return wxMerchant;
}


@Override
public void deleteById(Long id) {
wxMerchantMapper.deleteByPrimaryKey(id);
}

@Override
public void disable(Long id) {
WxMerchant wxMerchant = wxMerchantMapper.selectByPrimaryKey(id);
wxMerchant.setStatus(0);
wxMerchantMapper.updateByPrimaryKeySelective(wxMerchant);
}

@Transactional
@Override
public void saveOrUpdate(WxMerchant wxMerchant, String shopids, String userids) {
public void saveOrUpdate(WxMerchant wxMerchant) {


if (wxMerchant.getId() == null) {
@@ -74,12 +87,13 @@ public class WxMerchantServiceImpl implements WxMerchantService {
long merchantid = idWorker.nextId();
wxMerchant.setId(merchantid);
Date date = new Date();
wxMerchant.setStatus(1);
wxMerchant.setUpdateDate(date);
wxMerchant.setCreateDate(date);
wxMerchantMapper.insertSelective(wxMerchant);

//保存商户商铺的关联
List<Long> shopidlist = JSONArray.parseArray(shopids, Long.class);
List<Long> shopidlist = wxMerchant.getShopids();
for(Long shopid:shopidlist){
WxMerchantShop wxMerchantShop = new WxMerchantShop();
wxMerchantShop.setId(idWorker.nextId());
@@ -101,7 +115,7 @@ public class WxMerchantServiceImpl implements WxMerchantService {
}

//保存商户关联用户
List<Long> useridlist = JSONArray.parseArray(userids, Long.class);
List<Long> useridlist = wxMerchant.getUserids();
for(Long userid:useridlist){
WxMerchantBUser wxMerchantBUser = new WxMerchantBUser();
wxMerchantBUser.setId(userid);
@@ -133,13 +147,13 @@ public class WxMerchantServiceImpl implements WxMerchantService {
//更新商铺状态
WxShop wxShop = new WxShop();
wxShop.setId(merchantShop.getShopId());
wxShop.setStatus(0);//出租
wxShop.setStatus(0);//出租
WxShopMapper.updateByPrimaryKeySelective(wxShop);
}

final IdWorker idWorker = IdWorker.get();
//保存商户商铺的关联
List<Long> shopidlist = JSONArray.parseArray(shopids, Long.class);
List<Long> shopidlist = wxMerchant.getShopids();
for(Long shopid:shopidlist){
WxMerchantShop wxMerchantShop = new WxMerchantShop();
wxMerchantShop.setId(idWorker.nextId());
@@ -162,7 +176,7 @@ public class WxMerchantServiceImpl implements WxMerchantService {


//保存商户关联用户
List<Long> useridlist = JSONArray.parseArray(userids, Long.class);
List<Long> useridlist = wxMerchant.getUserids();
for(Long userid:useridlist){
WxMerchantBUser wxMerchantBUser = new WxMerchantBUser();
wxMerchantBUser.setId(userid);


+ 31
- 2
mallinkService/src/main/java/com/simple/service/impl/WxMerchantShopServiceImpl.java Просмотреть файл

@@ -1,14 +1,22 @@
package com.simple.service.impl;

import java.util.*;
import com.github.pagehelper.ISelect;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.simple.common.IdWorker;
import com.simple.domain.po.WxMerchantShop;
import com.simple.domain.po.WxShop;
import com.simple.mapper.WxMerchantShopMapper;
import com.simple.mapper.WxShopMapper;
import com.simple.service.WxMerchantShopService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.simple.common.IdWorker;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
public class WxMerchantShopServiceImpl implements WxMerchantShopService {
@@ -16,12 +24,33 @@ public class WxMerchantShopServiceImpl implements WxMerchantShopService {
@Autowired
WxMerchantShopMapper wxMerchantShopMapper;

@Autowired
WxShopMapper wxShopMapper;


@Override
public PageInfo<WxMerchantShop> listAsPage(WxMerchantShop record, Integer pageIndex, Integer pageSize) {
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxMerchantShopMapper.findList(record));
}

@Override
public PageInfo<WxShop> queryShopList(WxMerchantShop record, Integer pageIndex, Integer pageSize) {
List<WxShop> resultlist=new ArrayList<>();

List<WxMerchantShop> merchantShops = wxMerchantShopMapper.findList(record);
for(WxMerchantShop merchantShop:merchantShops){
WxShop wxShop = new WxShop();
wxShop.setId(merchantShop.getShopId());
List<WxShop> shopList = wxShopMapper.findList(wxShop);
if(shopList.size()>0){
resultlist.add(shopList.get(0));
}
}
PageHelper.startPage(pageIndex, pageSize);
PageInfo<WxShop> pageInfo = new PageInfo<>(resultlist);
return pageInfo;
}

@Override
public WxMerchantShop getById(Long id) {
return wxMerchantShopMapper.selectByPrimaryKey(id);


+ 1
- 1
mallinkService/src/main/java/com/simple/service/impl/WxMsgValidationcodeServiceImpl.java Просмотреть файл

@@ -145,7 +145,7 @@ public class WxMsgValidationcodeServiceImpl implements WxMsgValidationcodeServic
wxMsgValidationcode.setExpiretime(expiredate);
wxMsgValidationcode.setCreatetime(createtime);
wxMsgValidationcodeMapper.insertSelective(wxMsgValidationcode);
return new ResultData(200,"发送成功");
return new ResultData(Result.SUCCESS,"发送成功");
}
return new ResultData(500,"发送失败");



+ 12
- 7
mallinkService/src/main/java/com/simple/service/impl/WxOrderServiceImpl.java Просмотреть файл

@@ -103,22 +103,25 @@ public class WxOrderServiceImpl implements WxOrderService {
}

// check 购买是否超限
int count = 0;
try {
WxCouponOrder query = new WxCouponOrder();
query.setCouponId(couponId);
query.setCUserId(user.getId());
query.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode());
List<WxCouponOrder> list = wxCouponOrderMapper.findList(query);
if (list.size() >= coupon.getUseLimitQuantity()) {
//解锁
redisLock.unlock(couponIdStr, timeStr);
throw new MallinkException(ErrorCode.ORDER_IS_LIMITED);
}
count = wxCouponOrderMapper.selectCount(query);
}catch (Exception e) {
//解锁
redisLock.unlock(couponIdStr, timeStr);
logger.error("此券购买数量检查出问题了, couponId: " + couponIdStr);
logger.error("购买是否超限-DB, couponId: " + couponIdStr + ", e:" + e.getMessage());
throw new MallinkException(ErrorCode.ORDER_IS_FAIL);
}
if (count > coupon.getUseLimitQuantity()) {
//解锁
redisLock.unlock(couponIdStr, timeStr);
logger.error("此券购买数量已超限, couponId: " + couponIdStr + ", count: " + count);
throw new MallinkException(ErrorCode.ORDER_IS_LIMITED);
}

try {
// 减库存
@@ -155,6 +158,7 @@ public class WxOrderServiceImpl implements WxOrderService {
record.setTenantId(user.getTenantId());
record.setOrderNumber(orderNumber);
record.setCUserId(user.getId());
record.setMerchantId(coupon.getMerchantId());
record.setPaymentType(EnumPayType.PAY_PAYMENT.getCode());
record.setPayment(payment);
record.setOrderStatus(EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode());
@@ -171,6 +175,7 @@ public class WxOrderServiceImpl implements WxOrderService {
try {
WxCouponOrder couponOrder = new WxCouponOrder();
couponOrder.setId(idWorker.nextId());
couponOrder.setTenantId(user.getTenantId());
couponOrder.setCouponId(couponId);
couponOrder.setCUserId(user.getId());
couponOrder.setOrderId(orderNumber);


+ 5
- 0
mallinkService/src/main/java/com/simple/service/impl/WxParkServiceImpl.java Просмотреть файл

@@ -27,6 +27,11 @@ public class WxParkServiceImpl implements WxParkService {
return wxParkMapper.selectByPrimaryKey(id);
}

@Override
public WxPark getByObj(WxPark record) {
return wxParkMapper.selectOne(record);
}

@Override
public void saveOrUpdate(WxPark record) {
if (record.getId() == null) {


+ 198
- 100
mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java Просмотреть файл

@@ -1,5 +1,6 @@
package com.simple.service.impl;

import java.text.ParseException;
import java.util.*;

import com.alibaba.fastjson.JSON;
@@ -7,6 +8,7 @@ import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.simple.common.ErrorCode;
import com.simple.common.Result;
import com.simple.common.ResultData;
import com.simple.domain.po.*;
import com.simple.enums.EnumOrderStatus;
@@ -47,10 +49,10 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
@Autowired
WxOrderMapper wxOrderMapper;

@Autowired
@Autowired
WxPayOrderMapper wxPayOrderMapper;

@Autowired
@Autowired
WxOrderService wxOrderService;

JSONObject errorMap = JSON.parseObject("{\"NOAUTH\":{\"detail\":\"商户无此接口权限\",\"reason\":\"商户未开通此接口权限\",\"resolution\":\"请商户前往申请此接口权限\"}," +
@@ -77,82 +79,99 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
// 1. check 订单
WxOrder order = wxOrderMapper.selectByPrimaryKey(record.getOrderId());
if (order == null) {
logger.warn("pay order, order not allow, repaymentReq: " + record.toString() +", payWay: " + payWay.toString());
logger.error("pay order, order not allow, repaymentReq: " + record.toString() + ", payWay: " + payWay.toString());
throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND);
}
if (order.getOrderStatus() != EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode()) {
logger.warn("pay order, order status not allow, repaymentReq: " + order.toString() + " , payWay: " + payWay.toString());
logger.error("pay order, order status not allow, repaymentReq: " + order.toString() + " , payWay: " + payWay.toString());
throw new MallinkException(ErrorCode.ORDER_IS_NOT_PAY);
}
// 2. check 是否有支付订单
List<WxPayOrder> list = wxPayOrderMapper.findList(record);
if (list.size() > 0) {
throw new MallinkException(ErrorCode.PAY_ORDER_EXIST);
}
// 3. 创建支付订单
Long id = idworker.nextId();
Date currentDate = new Date();
List<WxPayOrder> list = wxPayOrderMapper.findList(record);
String payOrderNo = "";
if (list.size() <= 0) {
// 3. 创建支付订单
Long id = idworker.nextId();
payOrderNo = String.valueOf(id);
record.setId(id);
record.setTenantId(user.getTenantId());
record.setCUserId(user.getId());
record.setCreateTime(currentDate);
record.setUpdateTime(currentDate);
record.setPayTimeStart(currentDate);
record.setPayTimeEnd(currentDate);
// 支付单号
record.setPayOrderNo(payOrderNo);
record.setPayAmount(order.getPayment());
record.setPayVendor(EnumPayWay.PAY_WAY_WEAPP.getCode());
record.setPayOrderStatus(EnumPayStatus.PAY_WAY_WAIT.getCode());

record.setId(id);
record.setTenantId(user.getTenantId());
record.setCUserId(user.getId());
record.setCreateTime(currentDate);
record.setUpdateTime(currentDate);
int currentTime = Utility.convertDate2TimeStamp(currentDate);
record.setPayTimeStart(currentTime);
record.setPayTimeEnd(currentTime);
// 支付单号
record.setPayOrderNo(String.valueOf(id));
record.setPayAmount(order.getPayment());
record.setPayVendor(EnumPayWay.PAY_WAY_WEAPP.getCode());
record.setPayOrderStatus(EnumPayStatus.PAY_WAY_WAIT.getCode());

int sqlRow = wxPayOrderMapper.insertSelective(record);
if(sqlRow != 1) {
throw new MallinkException(ErrorCode.DB_FAIL);
int sqlRow = wxPayOrderMapper.insertSelective(record);
if (sqlRow != 1) {
logger.error("pay order insert error: " + record.toString());
throw new MallinkException(ErrorCode.DB_FAIL);
}
} else {
record = list.get(0);
payOrderNo = String.valueOf(record.getId());
}

WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(appInfo.getPayId());
{
// 统一下单
String noncestr = Utility.generate32UUID();
WxPayOrderP wxPayOrderP = new WxPayOrderP();
wxPayOrderP.setOpenid(user.getOpenId());
wxPayOrderP.setAppid(user.getAppId());
wxPayOrderP.setMch_id(payAccount.getMchId());
wxPayOrderP.setNonce_str(noncestr);
wxPayOrderP.setBody(order.getDetail());
wxPayOrderP.setOut_trade_no(record.getPayOrderNo());
wxPayOrderP.setTotal_fee(order.getPayment());
wxPayOrderP.setSpbill_create_ip(record.getIp()); // 终端IP
wxPayOrderP.setNotify_url(payAccount.getPayNotifyUrl());
wxPayOrderP.setTrade_type(WxPay.TradeType.JSAPI.name()); // 终端类型
wxPayOrderP.setProduct_id(String.valueOf(order.getId())); // 订单ID
wxPayOrderP.setTime_start(Utility.getDataFormatStringYYYYMMDDHHmmss(currentTime));
wxPayOrderP.setTime_expire(Utility.getDataFormatStringYYYYMMDDHHmmss(currentTime + 15 * 60)); // 15分钟结束
wxPayOrderP.setSign(WxPayment.createSign(BeanUtils.toStringMap(wxPayOrderP), payAccount.getApiKey()));
String response = WxPay.pushOrder(BeanUtils.toStringMap(wxPayOrderP));
logger.info("pay order, wechat pushOrder, wxPayOrder:" + wxPayOrderP.toString() + ", response: " + response.toString());
Map<String, String> returnMap = WxPayment.xmlToMap(response);
String result_no = returnMap.get("result_code");
if ("SUCCESS".equals(result_no)) {
String prepay_id = returnMap.get("prepay_id");
String timestamp = String.valueOf(Utility.getCurrentTimeStamp());
Map<String, String> sighMap = MapUtil.getOrderMap();
sighMap.put("appId", returnMap.get("appid"));
sighMap.put("timeStamp", timestamp);
sighMap.put("nonceStr", noncestr);
sighMap.put("package", "prepay_id="+prepay_id);
sighMap.put("signType", "MD5");
String signAgent = WxPayment.createSign(sighMap, payAccount.getApiKey());
returnMap.put("timeStamp", timestamp);
returnMap.put("nonceStr", noncestr);
returnMap.put("package", "prepay_id="+prepay_id);
returnMap.put("paySign", signAgent);
return new ResultData(200, "创建支付订单成功", returnMap);
} else {
JSONObject errObj = errorMap.getJSONObject(result_no);
return new ResultData(ErrorCode.PAY_ORDER_ERROR.getCode(), errObj.toJSONString(), returnMap);
}

// 统一下单
String noncestr = Utility.generate32UUID();
WxPayOrderP wxPayOrderP = new WxPayOrderP();
wxPayOrderP.setOpenid(user.getOpenId());
wxPayOrderP.setAppid(user.getAppId());
wxPayOrderP.setMch_id(payAccount.getMchId());
wxPayOrderP.setNonce_str(noncestr);
wxPayOrderP.setBody(order.getDetail());
wxPayOrderP.setOut_trade_no(record.getPayOrderNo());
wxPayOrderP.setTotal_fee(order.getPayment());
wxPayOrderP.setSpbill_create_ip(record.getIp()); // 终端IP
wxPayOrderP.setNotify_url(payAccount.getPayNotifyUrl());
wxPayOrderP.setTrade_type(WxPay.TradeType.JSAPI.name()); // 终端类型
wxPayOrderP.setProduct_id(String.valueOf(order.getId())); // 订单ID
wxPayOrderP.setTime_start(Utility.getDataFormatStringYYYYMMDDHHmmss(currentDate));
Date futureDate = new Date();
futureDate.setTime(currentDate.getTime() + 15*60*1000);
wxPayOrderP.setTime_expire(Utility.getDataFormatStringYYYYMMDDHHmmss(futureDate)); // 15分钟后结束
wxPayOrderP.setSign(WxPayment.createSign(BeanUtils.toStringMap(wxPayOrderP), payAccount.getApiKey()));
String response = WxPay.pushOrder(BeanUtils.toStringMap(wxPayOrderP));
logger.info("pay order, wechat pushOrder, " + wxPayOrderP.toString() + ", response: " + response.toString());
Map<String, String> returnMap = WxPayment.xmlToMap(response);
returnMap.put("payOrderId", payOrderNo);
String result_code = returnMap.get("result_code");
if ("SUCCESS".equals(result_code)) {
/*
Map<String, String> signMap = WxPayment.buildWeappSecondSignMap(returnMap.get("appid"),
String.valueOf(Utility.getCurrentTimeStamp()),
returnMap.get("prepay_id"),
payAccount.getApiKey());

String signAgent = signMap.remove("sign");
returnMap.putAll(signMap);
returnMap.put("paySign", signAgent);
*/
String prepay_id = returnMap.get("prepay_id");
String timestamp = String.valueOf(Utility.getCurrentTimeStamp());
Map<String, String> sighMap = MapUtil.getOrderMap();
sighMap.put("appId", returnMap.get("appid"));
sighMap.put("timeStamp", timestamp);
sighMap.put("nonceStr", noncestr);
sighMap.put("package", "prepay_id=" + prepay_id);
sighMap.put("signType", "MD5");
String signAgent = WxPayment.createSign(sighMap, payAccount.getApiKey());
returnMap.put("timeStamp", timestamp);
returnMap.put("nonceStr", noncestr);
returnMap.put("package", "prepay_id=" + prepay_id);
returnMap.put("paySign", signAgent);
logger.info("back to UI: " +returnMap.toString());
return new ResultData(Result.SUCCESS, "创建支付订单成功", returnMap);
} else {
JSONObject errObj = errorMap.getJSONObject(result_code);
return new ResultData(ErrorCode.PAY_ORDER_ERROR.getCode(), errObj.toJSONString(), returnMap);
}
} catch (RuntimeException e) {
throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage());
@@ -167,8 +186,9 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {

/**
* 提供微信支付回调调用
* @param paramMap 异步通知参数
* @param payWay 支付方式
*
* @param paramMap 异步通知参数
* @param payWay 支付方式
* @return
*/
@Override
@@ -188,16 +208,14 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
try {
if (payWay == EnumPayWay.PAY_WAY_WEAPP) {
boolean signVerified = false;
if (payWay == EnumPayWay.PAY_WAY_WECHAT) {
// 微信支付
signVerified = WxPayment.verifyNotify(paramMap, partnerKey);
}
// 微信支付
signVerified = WxPayment.verifyNotify(paramMap, partnerKey);
if (!signVerified) {
logger.warn("notify order, wxpay checksign error, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString());
logger.warn("notify order, wxpay checksign error, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString());
throw new MallinkException(ErrorCode.PAY_ORDER_NOTIFY_CHECK_SIGN_ERROR);
}
if (!"SUCCESS".equals(paramMap.get("return_code"))) {
logger.warn("notify order, wxpay status not success, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString());
logger.warn("notify order, wxpay status not success, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString());
Map<String, String> resultMap = new LinkedHashMap<>();
resultMap.put("return_code", "FAIL");
resultMap.put("return_msg", "订单状态码非SUCCESS");
@@ -205,34 +223,45 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
}

String payOrderNo = paramMap.get("out_trade_no");
String timEndStr = paramMap.get("time_end");
Long payOrderId = Long.valueOf(payOrderNo);
WxPayOrder payOrder = wxPayOrderMapper.selectByPrimaryKey(payOrderId);
if (payOrder == null) {
logger.warn("notify order, wxpay check pay order not exists, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString());
logger.warn("notify order, wxpay check pay order not exists, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString());
Map<String, String> resultMap = new LinkedHashMap<>();
resultMap.put("return_code", "FAIL");
resultMap.put("return_msg", "订单不存在");
return XmlUtil.parseDto2Xml(resultMap, "");
}
// 验证支付金额
if(!paramMap.get("total_fee").equals(payOrder.getPayAmount().toString())) {
logger.warn("notify order, wxpay check total_fee is invalid, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString());
if (!paramMap.get("total_fee").equals(payOrder.getPayAmount().toString())) {
logger.warn("notify order, wxpay check total_fee is invalid, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString());
Map<String, String> resultMap = new LinkedHashMap<>();
resultMap.put("return_code", "FAIL");
resultMap.put("return_msg", "订单总金额不一致");
return XmlUtil.parseDto2Xml(resultMap, "");
}

Date timeEnd = null;

try {
timeEnd = Utility.getDateFromString(timEndStr);
} catch (ParseException e) {
logger.error("解析timeEnd失败");
timeEnd = new Date();
}
payOrder.setPayTimeEnd(timeEnd);

// 处理支付成功
handleOrderPaySuccess(payOrder, paramMap.get("transaction_id"));
logger.info("notify order, wxpay checksign success, paramMap:{}, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString());
logger.info("notify order, wxpay checksign success, paramMap:{}, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString());
Map<String, String> resultMap = new LinkedHashMap<>();
resultMap.put("return_code", "SUCCESS");
resultMap.put("return_msg", "OK");
return XmlUtil.parseDto2Xml(resultMap, "");
}
} catch (RuntimeException e) {
logger.warn("notify order, alipay checksign error, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString() + ", e:" + e.getMessage());
logger.warn("notify order, alipay checksign error, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString() + ", e:" + e.getMessage());
throw new MallinkException(ErrorCode.PAY_ORDER_NOTIFY_CHECK_SIGN_ERROR);
}
return "";
@@ -246,8 +275,21 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public void handleOrderPaySuccess(WxPayOrder record, String transactionId) {
Date currentDate = new Date();
EnumPayStatus payStatus = EnumPayStatus.getEnum(record.getPayOrderStatus());
// 判断支付状态
if (payStatus == EnumPayStatus.PAY_WAY_SUCCESS) {
// 已经是成功状态,只更新transactionId
try {
record.setUpdateTime(currentDate);
record.setTransactionId(transactionId);
wxPayOrderMapper.updateByPrimaryKeySelective(record);
} catch (Exception e) {
logger.error(e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL);
}
return;
}
if (payStatus != EnumPayStatus.PAY_WAY_WAIT) {
logger.error("pay success handle, payOrder " + record.getPayOrderNo() +
"is paid success , orderId : " + record.getOrderId());
@@ -255,20 +297,20 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
}
WxOrder order = wxOrderMapper.selectByPrimaryKey(record.getOrderId());
if (order == null) {
logger.error("pay success handle, order " + record.getOrderId() +" not found , payOrderGid : " + record.getPayOrderNo());
logger.error("pay success handle, order " + record.getOrderId() + " not found , payOrderGid : " + record.getPayOrderNo());
throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND);
}

Date currentDate = new Date();
// 修改支付订单状态
try {
WxPayOrder updatePayOrder = new WxPayOrder();
updatePayOrder.setId(record.getId());
updatePayOrder.setOrderId(record.getOrderId());
updatePayOrder.setUpdateTime(currentDate);
updatePayOrder.setPayOrderStatus(EnumPayStatus.PAY_WAY_SUCCESS.getCode());
updatePayOrder.setTransactionId(transactionId);
wxPayOrderMapper.updateByPrimaryKeySelective(updatePayOrder);
WxPayOrder updateOrder = new WxPayOrder();
updateOrder.setId(record.getId());
updateOrder.setOrderId(record.getOrderId());
updateOrder.setUpdateTime(currentDate);
updateOrder.setPayOrderStatus(EnumPayStatus.PAY_WAY_SUCCESS.getCode());
updateOrder.setTransactionId(transactionId);
wxPayOrderMapper.updateByPrimaryKeySelective(updateOrder);
} catch (Exception e) {
logger.error(e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL);
@@ -297,6 +339,68 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
*/
}

@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public void handlePayOrderStatusUpdate(WxPayOrder record) {
// 判断支付状态
if (record.getPayOrderStatus() == EnumPayStatus.PAY_WAY_WAIT.getCode()) {
logger.error("pay handle, payOrder " + record.getPayOrderNo() +
"is complete, orderId : " + record.getOrderId());
return;
}
WxOrder order = wxOrderMapper.selectByPrimaryKey(record.getOrderId());
if (order == null) {
logger.error("pay handle, order " + record.getOrderId() + " not found , payOrderGid : " + record.getPayOrderNo());
throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND);
}

Date currentDate = new Date();
// 修改支付订单状态
try {
WxPayOrder updateOrder = new WxPayOrder();
updateOrder.setId(record.getId());
updateOrder.setOrderId(record.getOrderId());
updateOrder.setUpdateTime(currentDate);
updateOrder.setPayOrderStatus(record.getPayOrderStatus());
updateOrder.setPayTimeEnd(currentDate);
updateOrder.setFailReason(record.getFailReason());
wxPayOrderMapper.updateByPrimaryKeySelective(updateOrder);
} catch (Exception e) {
logger.error(e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL);
}

// 修改订单状态
if (record.getPayOrderStatus() == EnumPayStatus.PAY_WAY_SUCCESS.getCode()) {
try {
wxOrderService.updateOrderStatus(order.getId(), EnumOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS);
} catch (Exception e) {
logger.error(e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL);
}
} else if (record.getPayOrderStatus() == EnumPayStatus.PAY_WAY_CANCEL.getCode()) {
try {
wxOrderService.updateOrderStatus(order.getId(), EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL);
} catch (Exception e) {
logger.error(e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL);
}
}
/*
Map<String, String> msgMap = new HashMap<>();
try {
msgMap.put("name", String.valueOf(order.getCouponId()));
msgMap.put("orderNo", String.valueOf(order.getId()));
msgMap.put("createTime", Utility.getDataFormatString3(order.getCreateDate()));
msgMap.put("standingTime", order.getCreateDate() + "-" + currentDate );
// 短信 通知 商户
//smsSenderHandler.sendSms("SMS_18195394", order.getMobile(), msgMap);
} catch (Exception e) {
logger.error("pay success handle, sms send exception, payOrderi: " + updatePayOrder+ ", msgMap: " + msgMap.toString() + ", e: " + e.getMessage());
}
*/
}


@Override
public PageInfo<WxPayOrder> listAsPage(WxPayOrder record, Integer pageIndex, Integer pageSize) {
@@ -312,8 +416,8 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
public void saveOrUpdate(WxPayOrder record) {
if (record.getId() == null) {
//record.setId(UUID.randomUUID().toString().replaceAll("-", ""));
IdWorker idWorker = new IdWorker(0, 0);
record.setId(idWorker.nextId());
final IdWorker idWorker = IdWorker.get();
record.setId(idWorker.nextId());
wxPayOrderMapper.insertSelective(record);
} else {
wxPayOrderMapper.updateByPrimaryKeySelective(record);
@@ -324,12 +428,6 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
public void deleteById(Long id) {
wxPayOrderMapper.deleteByPrimaryKey(id);
}


}

+ 214
- 0
mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java Просмотреть файл

@@ -0,0 +1,214 @@
package com.simple.service.impl;

import java.util.*;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.simple.common.ErrorCode;
import com.simple.common.ResultData;
import com.simple.domain.po.*;
import com.simple.enums.EnumPayDomain;
import com.simple.enums.EnumProfitSharingReceiverType;
import com.simple.enums.EnumProfitSharingStatus;
import com.simple.exception.MallinkException;
import com.simple.mapper.*;
import com.simple.pay.WxPayment;
import com.simple.pay.WxProfitSharing;
import com.simple.pay.WxProfitSharingP;
import com.simple.service.WxProfitSharingOrderService;
import com.simple.utils.BeanUtils;
import com.simple.utils.Utility;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.simple.common.IdWorker;



@Service
public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderService {
@Autowired
WxProfitSharingOrderMapper wxProfitSharingOrderMapper;

@Autowired
WxAppinfoMapper wxAppinfoMapper;

@Autowired
WxPayAccountMapper wxPayAccountMapper;

@Autowired
WxOrderMapper wxOrderMapper;

@Autowired
WxProfitSharingReceiverMapper wxProfitSharingReceiverMapper;

@Autowired
WxProfitSharingResultMapper wxProfitSharingResultMapper;



final JSONObject errorMap = JSON.parseObject(
"{\"SYSTEMERROR\":{\"detail\":\"接口返回错误\",\"reason\":\"系统超时\",\"resolution\":\"系统异常,请用相同参数重新调用\"}," +
"\"AMOUNT_OVERDUE\":{\"detail\":\"分账金额超限\",\"reason\":\"分账金额大于可分金额 或大于分账最大比例 \",\"resolution\":\"请调整分账金额\"}," +
"\"RECEIVER_INVALID\":{\"detail\":\"分账接收方非法 \",\"reason\":\"未配置分账接收方\",\"resolution\":\"分账接收方在分账之前需要进行添加\"}," +
"\"INVALID_TRANSACTIONID\":{\"detail\":\"无效的微信支付订单号\",\"reason\":\"请求参数未按指引进行填写\",\"resolution\":\"检查原交易单号是否存在\"}," +
"\"PARAM_ERROR\":{\"detail\":\"参数错误\t\",\"reason\":\"请求参数未按指引进行填写\",\"resolution\":\"请求参数错误,请重新检查再调用分账接口\"}," +
"\"INVALID_REQUEST\":{\"detail\":\"请求不合法\",\"reason\":\"参数中APPID或MCHID不存在等 \",\"resolution\":\"请重新检查再调用分账接口\"}," +
"\"OPENID_MISMATCH\":{\"detail\":\"Openid错误\",\"reason\":\"Openid与Appid不匹配\",\"resolution\":\"请检查openid是否正确\"}," +
"\"FREQUENCY_LIMITED\":{\"detail\":\"频率限制\",\"reason\":\"请求过多被频率限制\",\"resolution\":\"该被请求未受理,请降低频率后原单重试,请勿更换商户分账单号\"}," +
"\"ORDER_NOT_READY\":{\"detail\":\"订单处理中\",\"reason\":\"订单处理中暂时无法分账\",\"resolution\":\"订单处理中暂时无法分账,请稍后再试\"}," +
"\"NOAUTH \":{\"detail\":\"无分账权限\",\"reason\":\"未开通分账权限\",\"resolution\":\"请先开通分账权限\"}," +
"\"NOT_SHARE_ORDER\":{\"detail\":\"非分账订单\t\",\"reason\":\"不是分账订单,无法分账\",\"resolution\":\"下单时请用合适的参数\"}}");

@Override
public PageInfo<WxProfitSharingOrder> listAsPage(WxProfitSharingOrder record, Integer pageIndex, Integer pageSize) {
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxProfitSharingOrderMapper.findList(record));
}

@Override
public WxProfitSharingOrder getById(Long id) {
return wxProfitSharingOrderMapper.selectByPrimaryKey(id);
}

@Override
public void saveOrUpdate(WxProfitSharingOrder record) {
if (record.getId() == null) {
//record.setId(UUID.randomUUID().toString().replaceAll("-", ""));
final IdWorker idWorker = IdWorker.get();
record.setId(idWorker.nextId());
wxProfitSharingOrderMapper.insertSelective(record);
} else {
wxProfitSharingOrderMapper.updateByPrimaryKeySelective(record);
}
}

@Override
public void deleteById(Long id) {
wxProfitSharingOrderMapper.deleteByPrimaryKey(id);
}

@Autowired
WxPayOrderMapper wxPayOrderMapper;

@Override
public void test() {
createSharingOrder(wxAppinfoMapper.selectByPrimaryKey(new Long(1L)),wxPayOrderMapper.selectByPrimaryKey(new Long(190403470006681600L)));
}

@Override
public ResultData createSharingOrder(WxAppinfo subAppInfo, WxPayOrder wxPayOrder) {
final IdWorker idworker = IdWorker.get();

WxProfitSharingOrder record = new WxProfitSharingOrder();
try {
WxOrder wxOrder = wxOrderMapper.selectByPrimaryKey(wxPayOrder.getOrderId());
//是否已创建分账订单
record.setOrderId(wxPayOrder.getId().toString());
record = wxProfitSharingOrderMapper.selectOne(record);
if (record == null) {
//创建分账订单
Date currentDate = new Date();
record = new WxProfitSharingOrder();
record.setId(idworker.nextId());
record.setTenantId(wxPayOrder.getTenantId());
record.setTransactionId(wxPayOrder.getTransactionId());
record.setOrderId(wxPayOrder.getId().toString());
record.setPayAmount(wxPayOrder.getPayAmount());
record.setMerchantId(wxOrder.getMerchantId().toString());
record.setCreateTime(currentDate);
record.setUpdateTime(currentDate);
record.setPayTimeStart(currentDate);
record.setPayTimeEnd(currentDate);

wxProfitSharingOrderMapper.insertSelective(record);
}

WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(subAppInfo.getPayId());
//WxPayAccount mainPayAccount = wxPayAccountMapper.selectByPrimaryKey(new Long(EnumPayDomain.PAY_DOMAIN_MASTER_ACCOUNT_ID.getCode()));
//WxAppinfo mainAppInfo = wxAppinfoMapper.selectByPrimaryKey(new Long(EnumPayDomain.PAY_DOMAIN_MASTER_APPINFO_ID.getCode()));

//分账提交
WxProfitSharingP wxProfitSharingP = new WxProfitSharingP();
//wxProfitSharingP.setAppid(mainAppInfo.getAppId());
//wxProfitSharingP.setMch_id(mainPayAccount.getMchId());
wxProfitSharingP.setAppid(subAppInfo.getAppId());
wxProfitSharingP.setMch_id(payAccount.getMchId());
wxProfitSharingP.setSub_appid(subAppInfo.getAppId());
wxProfitSharingP.setSub_mch_id(payAccount.getMchId());
wxProfitSharingP.setNonce_str(Utility.generate32UUID());
wxProfitSharingP.setTransaction_id(wxPayOrder.getTransactionId());
wxProfitSharingP.setOut_trade_no(record.getId().toString());

//添加分账接受方
WxProfitSharingReceiver wxProfitSharingReceiver = new WxProfitSharingReceiver();
wxProfitSharingReceiver.setMerchantId(wxOrder.getMerchantId().toString());
wxProfitSharingReceiver.setSharingType(1);
List<WxProfitSharingReceiver> wxProfitSharingReceiverList = wxProfitSharingReceiverMapper.findList(wxProfitSharingReceiver);
if (wxProfitSharingReceiverList.size()<=0 || wxProfitSharingReceiverList.size() > 50) {
throw new MallinkException(ErrorCode.PROFIT_SHARING_RECEIVER_INVALID.getCode(), ErrorCode.PROFIT_SHARING_RECEIVER_INVALID.getMessage());
}
JSONArray receivers = new JSONArray();
List <WxProfitSharingResult> resultList = new ArrayList<WxProfitSharingResult>();
for (int i=0;i<wxProfitSharingReceiverList.size();i++){
WxProfitSharingReceiver receiver = wxProfitSharingReceiverList.get(i);
Date currentDate = new Date();
JSONObject jo = new JSONObject();
jo.put("type",EnumProfitSharingReceiverType.getEnum(receiver.getReceiverType()).getMessage());
jo.put("acount",receiver.getReceiverAccount());
jo.put("amount",record.getPayAmount()); //temp: sharing all money with only owner
jo.put("description",receiver.getReceiverComments());
receivers.add(jo);

WxProfitSharingResult result = new WxProfitSharingResult();

result.setId(idworker.nextId());
result.setSharingOrderId(record.getSharingOrderId());
result.setSharingReceiverId(receiver.getId().toString());
result.setCreateTime(currentDate);
result.setUpdateTime(currentDate);
resultList.add(result);
}

wxProfitSharingP.setReceivers(receivers.toJSONString());

wxProfitSharingP.setSign(WxPayment.createSign(BeanUtils.toStringMap(wxProfitSharingP), payAccount.getApiKey()));
String response = WxProfitSharing.pushOrder(BeanUtils.toStringMap(wxProfitSharingP));

Map<String, String> returnMap = WxPayment.xmlToMap(response);
String return_code = returnMap.get("return_code");
if (!"SUCCESS".equals(return_code)) {
record.setSharingStatus(EnumProfitSharingStatus.PROFIT_SHARING_REQ_FAILED.getCode());
record.setUpdateTime(new Date());
wxProfitSharingOrderMapper.updateByPrimaryKey(record);
return new ResultData(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(), returnMap.get("return_msg"));
}

if (!WxPayment.verifyNotify(returnMap,payAccount.getApiKey())){
return new ResultData(ErrorCode.PROFIT_SHARING_RETURN_INVALID.getCode(), ErrorCode.PROFIT_SHARING_RETURN_INVALID.getMessage());
}

String result_code = returnMap.get("result_code");
if (!"SUCCESS".equals(result_code)) {
record.setSharingStatus(EnumProfitSharingStatus.PROFIT_SHARING_APPLY_FAILED.getCode());
record.setUpdateTime(new Date());
wxProfitSharingOrderMapper.updateByPrimaryKey(record);
return new ResultData(ErrorCode.PROFIT_SHARING_APPLY_FAILED.getCode(), returnMap.get("result_msg"));
}

record.setSharingOrderId(returnMap.get("order_id"));
record.setSharingStatus(EnumProfitSharingStatus.PROFIT_SHARING_ACCEPTED.getCode());
record.setUpdateTime(new Date());
wxProfitSharingOrderMapper.updateByPrimaryKey(record);
wxProfitSharingResultMapper.insertList(resultList);
return new ResultData(returnMap);

} catch (RuntimeException e) {
throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage());
} catch (Exception e) {
throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage());
}
}
}

+ 54
- 0
mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingReceiverServiceImpl.java Просмотреть файл

@@ -0,0 +1,54 @@
package com.simple.service.impl;

import java.util.*;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.simple.domain.po.WxProfitSharingReceiver;
import com.simple.mapper.WxProfitSharingReceiverMapper;
import com.simple.service.WxProfitSharingReceiverService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.simple.common.IdWorker;

@Service
public class WxProfitSharingReceiverServiceImpl implements WxProfitSharingReceiverService {
@Autowired
WxProfitSharingReceiverMapper wxProfitSharingReceiverMapper;


@Override
public PageInfo<WxProfitSharingReceiver> listAsPage(WxProfitSharingReceiver record, Integer pageIndex, Integer pageSize) {
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxProfitSharingReceiverMapper.findList(record));
}

@Override
public WxProfitSharingReceiver getById(Long id) {
return wxProfitSharingReceiverMapper.selectByPrimaryKey(id);
}

@Override
public void saveOrUpdate(WxProfitSharingReceiver record) {
if (record.getId() == null) {
//record.setId(UUID.randomUUID().toString().replaceAll("-", ""));
final IdWorker idWorker = IdWorker.get();
record.setId(idWorker.nextId());
wxProfitSharingReceiverMapper.insertSelective(record);
} else {
wxProfitSharingReceiverMapper.updateByPrimaryKeySelective(record);
}
}

@Override
public void deleteById(Long id) {
wxProfitSharingReceiverMapper.deleteByPrimaryKey(id);
}
}

+ 54
- 0
mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingResultServiceImpl.java Просмотреть файл

@@ -0,0 +1,54 @@
package com.simple.service.impl;

import java.util.*;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.simple.domain.po.WxProfitSharingResult;
import com.simple.mapper.WxProfitSharingResultMapper;
import com.simple.service.WxProfitSharingResultService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.simple.common.IdWorker;

@Service
public class WxProfitSharingResultServiceImpl implements WxProfitSharingResultService {
@Autowired
WxProfitSharingResultMapper wxProfitSharingResultMapper;


@Override
public PageInfo<WxProfitSharingResult> listAsPage(WxProfitSharingResult record, Integer pageIndex, Integer pageSize) {
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxProfitSharingResultMapper.findList(record));
}

@Override
public WxProfitSharingResult getById(Long id) {
return wxProfitSharingResultMapper.selectByPrimaryKey(id);
}

@Override
public void saveOrUpdate(WxProfitSharingResult record) {
if (record.getId() == null) {
//record.setId(UUID.randomUUID().toString().replaceAll("-", ""));
final IdWorker idWorker = IdWorker.get();
record.setId(idWorker.nextId());
wxProfitSharingResultMapper.insertSelective(record);
} else {
wxProfitSharingResultMapper.updateByPrimaryKeySelective(record);
}
}

@Override
public void deleteById(Long id) {
wxProfitSharingResultMapper.deleteByPrimaryKey(id);
}
}

+ 91
- 47
mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java Просмотреть файл

@@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONObject;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.simple.common.ErrorCode;
import com.simple.common.Result;
import com.simple.common.ResultData;
import com.simple.domain.po.*;
import com.simple.enums.EnumOrderStatus;
@@ -18,10 +19,12 @@ import com.simple.mapper.*;
import com.simple.pay.WxPay;
import com.simple.pay.WxPayment;
import com.simple.pay.WxRefundOrderP;
import com.simple.service.WxOrderService;
import com.simple.service.WxRefundOrderService;
import com.simple.utils.BeanUtils;
import com.simple.utils.Utility;
import com.simple.utils.XmlUtil;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -48,6 +51,9 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
@Autowired
WxPayAccountMapper wxPayAccountMapper;

@Autowired
WxOrderService wxOrderService;

JSONObject errorRefundReqMap = JSON.parseObject("{\n" +
" \"SYSTEMERROR\": {\n" +
" \"detail\": \"接口返回错误\",\n" +
@@ -206,33 +212,51 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {

@Override
public ResultData createRefundOrder(WxAppinfo appInfo, WxRefundOrder record, EnumPayWay payWay) {
WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(appInfo.getPayId());
if (StringUtils.isBlank(payAccount.getApiKey())) {
logger.error("支付密钥为空");
throw new MallinkException(ErrorCode.API_KEY_NOT_FOUND.getCode(), "支付密钥为空,请联系商城管理员");
}
if (StringUtils.isBlank(payAccount.getCertPath())) {
logger.error("证书路径为空");
throw new MallinkException(ErrorCode.CERT_PATH_NOT_FOUND.getCode(), "证书路径为空,请联系商城管理员");
}
// check 是否有退款订单
List<WxRefundOrder> list = wxRefundOrderMapper.findList(record);
if (list.size() > 0) {
throw new MallinkException(ErrorCode.REFUND_ORDER_EXIST);
logger.error("退款订单已存在, 无法再提交退款申请");
throw new MallinkException(ErrorCode.REFUND_ORDER_EXIST.getCode(), "退款订单已存在, 无法再提交退款申请");
}
// check 支付 订单
WxPayOrder payOrder = null;
Long payOrderId = 0L;
try {
payOrderId = Long.valueOf(record.getPayOrderNo());
} catch (NumberFormatException e) {
logger.error("参数转换异常: payOrderId-" + record.getPayOrderNo());
throw new MallinkException(ErrorCode.PARAMETER_CAST_ERROR.getCode(), "参数转换异常: payOrderId-" + record.getPayOrderNo());
}
try {
WxPayOrder payOrderQ = new WxPayOrder();
payOrderQ.setOrderId(record.getOrderId());
payOrderQ.setId(Long.valueOf(record.getPayOrderNo()));
payOrderQ.setId(payOrderId);
payOrderQ.setPayOrderNo(record.getPayOrderNo());
payOrderQ.setPayOrderStatus(EnumPayStatus.PAY_WAY_SUCCESS.getCode());
payOrder = wxPayOrderMapper.selectOne(payOrderQ);
} catch (Exception e) {
logger.error("数据库获取异常: " + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL);
}

if (payOrder == null) {
logger.error("支付订单不存在: " + record.toString());
throw new MallinkException(ErrorCode.REFUND_PAY_ORDER_IS_NOT_EXIST);
}
if (payOrder.getPayAmount() <= 0) {
throw new MallinkException(ErrorCode.REFUND_PAY_ORDER_IS_NOT_EXIST);
logger.error("支付订单金额小于等于0: " + record.toString());
throw new MallinkException(ErrorCode.REFUND_PAY_ORDER_IS_ZERO);
}

// TODO check 可退券????

// 创建退款订单
final IdWorker idWorker = IdWorker.get();
Long id = idWorker.nextId();
@@ -247,55 +271,75 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
record.setCUserId(payOrder.getCUserId());
record.setTotalFee(payOrder.getPayAmount());
record.setRefundFee(payOrder.getPayAmount());
record.setRefundTimeStart((int)(currentDate.getTime()/1000));
record.setRefundTimeStart(currentDate);
record.setRefundOrderStatus(EnumRefundStatus.REFUND_WAIT.getCode());
int sqlRow = wxRefundOrderMapper.insertSelective(record);
if(sqlRow != 1) {
logger.error("退款订单数据库插入出错: " + record.toString());
throw new MallinkException(ErrorCode.DB_FAIL);
}
} catch (Exception e) {
logger.error("退款订单数据库插入出错: " + record.toString());
throw new MallinkException(ErrorCode.DB_FAIL);
}

WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(appInfo.getPayId());

// 退款申请
try {
String noncestr = Utility.generate32UUID();
WxRefundOrderP wxRefundOrderP = new WxRefundOrderP();
wxRefundOrderP.setAppid(appInfo.getAppId());
wxRefundOrderP.setMch_id(payAccount.getMchId());
wxRefundOrderP.setNonce_str(noncestr);
String noncestr = Utility.generate32UUID();
WxRefundOrderP wxRefundOrderP = new WxRefundOrderP();
wxRefundOrderP.setAppid(appInfo.getAppId());
wxRefundOrderP.setMch_id(payAccount.getMchId());
wxRefundOrderP.setNonce_str(noncestr);
if (record.getTransactionId() == null)
wxRefundOrderP.setTransaction_id(record.getTransactionId());
wxRefundOrderP.setOut_trade_no(record.getPayOrderNo());
wxRefundOrderP.setTotal_fee(record.getTotalFee());
wxRefundOrderP.setRefund_fee(record.getRefundFee());
wxRefundOrderP.setSign(WxPayment.createSign(BeanUtils.toStringMap(wxRefundOrderP), payAccount.getApiKey()));
String response = WxPay.orderRefund(BeanUtils.toStringMap(wxRefundOrderP), payAccount.getCertPath(), payAccount.getApiKey());
logger.info("微信退款订单:" + wxRefundOrderP.toString() + ", response: " + response.toString());
Map<String, String> returnMap = WxPayment.xmlToMap(response);
String result_no = returnMap.get("result_code");
if ("SUCCESS".equals(result_no)) {
String refund_id = returnMap.get("refund_id");
record.setRefundId(refund_id);
wxRefundOrderP.setOut_trade_no(record.getPayOrderNo());
wxRefundOrderP.setTotal_fee(record.getTotalFee());
wxRefundOrderP.setRefund_fee(record.getRefundFee());

Map signMap = new HashMap();
try {
signMap = BeanUtils.toStringMap(wxRefundOrderP);
} catch (Exception e) {
logger.error("退款签名异常");
throw new MallinkException(ErrorCode.PARAMETER_CAST_ERROR.getCode(), "退款签名异常");
}
String signAgent = WxPayment.createSign(signMap, payAccount.getApiKey());
signMap.put("sign", signAgent);
String response = WxPay.orderRefund(signMap, payAccount.getCertPath(), payAccount.getApiKey());
logger.info("微信退款订单:" + wxRefundOrderP.toString() + ", response: " + response.toString());
Map<String, String> returnMap = WxPayment.xmlToMap(response);
String result_no = returnMap.get("result_code");
String refund_id = returnMap.get("refund_id");
// 设置 微信退款订单号
record.setRefundId(refund_id);
if ("SUCCESS".equals(result_no)) {
logger.error("微信退款订单申请成功: " + returnMap.toString());
try {
record.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_SUCCESS.getCode());
wxRefundOrderMapper.updateByPrimaryKey(record);
return new ResultData(200, "退款订单申请成功", returnMap);
} else {
String refund_id = returnMap.get("refund_id");
record.setRefundId(refund_id);
return new ResultData(Result.SUCCESS, "退款订单申请成功", returnMap);
} catch (Exception e) {
logger.error("微信退款订单更新入库出错: " + e.getMessage() + ", record: " + record.toString());
throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR);
}
} else {
logger.error("微信退款订单申请失败: " + returnMap.toString());
try {
record.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_FAIL.getCode());
wxRefundOrderMapper.updateByPrimaryKey(record);
JSONObject errObj = errorRefundReqMap.getJSONObject(result_no);
return new ResultData(ErrorCode.PAY_ORDER_ERROR.getCode(), errObj.toJSONString(), returnMap);
} catch(Exception e) {
logger.error("微信退款订单更新入库出错: " + e.getMessage() + ", record: " + record.toString());
throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR);
}
} catch(Exception e) {
throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR);
}
}

// TODO
// 微信退款查询
/**
* 微信退款查询
* @param appInfo
* @param record
*/
@Override
public ResultData queryRefundOrder(WxAppinfo appInfo, WxRefundOrder record) {
WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(appInfo.getPayId());
@@ -307,7 +351,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
String result_no = returnMap.get("result_code");
if ("SUCCESS".equals(result_no)) {
String refund_id = returnMap.get("refund_id");
return new ResultData(200, "退款", returnMap);
return new ResultData(Result.SUCCESS, "退款", returnMap);
} else {
wxRefundOrderMapper.updateByPrimaryKey(record);
JSONObject errObj = errorRefundReqMap.getJSONObject(result_no);
@@ -433,23 +477,24 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {
"is paid success , orderId : " + refundOrder.getOrderId());
return;
}
/*
WxOrder order = wxRefundOrderMapper.selectByPrimaryKey(record.getOrderId());
WxOrder order = wxOrderMapper.selectByPrimaryKey(refundOrder.getOrderId());
if (order == null) {
logger.error("pay success handle, order " + record.getOrderId() +" not found , payOrderGid : " + record.getPayOrderNo());
logger.error("pay success handle, order " + refundOrder.getOrderId() +" not found , refundId : " + refundOrder.getId());
throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND);
}

Date currentDate = new Date();
// 修改支付订单状态
// 修改退款订单状态
try {
WxPayOrder updatePayOrder = new WxPayOrder();
updatePayOrder.setId(record.getId());
updatePayOrder.setOrderId(record.getOrderId());
updatePayOrder.setUpdateTime(currentDate);
updatePayOrder.setPayOrderStatus(EnumPayStatus.PAY_WAY_SUCCESS.getCode());
updatePayOrder.setTransactionId(transactionId);
wxPayOrderMapper.updateByPrimaryKeySelective(updatePayOrder);
WxRefundOrder updateOrder = new WxRefundOrder();
updateOrder.setId(refundOrder.getId());
updateOrder.setOrderId(refundOrder.getOrderId());
updateOrder.setUpdateTime(currentDate);
updateOrder.setRefundOrderStatus(EnumRefundStatus.REFUND_SUCCESS.getCode());
updateOrder.setTransactionId(transactionId);
updateOrder.setRefundId(refundId);
wxRefundOrderMapper.updateByPrimaryKeySelective(updateOrder);
} catch (Exception e) {
logger.error(e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL);
@@ -457,12 +502,11 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService {

// 修改订单状态
try {
wxOrderService.updateOrderStatus(order.getId(), EnumOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS);
wxOrderService.updateOrderStatus(order.getId(), EnumOrderStatus.ORDER_STATUS_REFUND_SUCCESS);
} catch (Exception e) {
logger.error(e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL);
}
*/
/*
Map<String, String> msgMap = new HashMap<>();
try {


+ 10
- 0
mallinkService/src/main/java/com/simple/utils/Utility.java Просмотреть файл

@@ -526,6 +526,16 @@ public final class Utility {
return sf.format(((long) currentSec) * 1000);
}

public static String getDataFormatStringYYYYMMDDHHmmss(Date currentDate) {
SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");
return sf.format(currentDate);
}

public static Date getDateFromString(String timeEnd) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
return sdf.parse(timeEnd);
}

public static String getOrderNo() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = sdf.format(new Date());


mallinkService/src/main/resources/mapper/WxCUserCarsMapper.xml → mallinkService/src/main/resources/mapper/WxCUserCarMapper.xml Просмотреть файл

@@ -1,7 +1,7 @@
<?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.simple.mapper.WxCUserCarsMapper">
<resultMap id="BaseResultMap" type="com.simple.domain.po.WxCUserCars">
<mapper namespace="com.simple.mapper.WxCUserCarMapper">
<resultMap id="BaseResultMap" type="com.simple.domain.po.WxCUserCar">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="tenant_id" jdbcType="VARCHAR" property="tenantId" />
<result column="c_user_id" jdbcType="BIGINT" property="cUserId" />
@@ -67,14 +67,9 @@
<if test=" null != sortColumns"> order by ${sortColumns} </if>
</sql>
<select id="findList" parameterType="com.simple.domain.po.WxCUserCars" resultMap="BaseResultMap">
select <include refid="allColumns" /> from wx_c_user_cars
<select id="findList" parameterType="com.simple.domain.po.WxCUserCar" resultMap="BaseResultMap">
select <include refid="allColumns" /> from wx_c_user_car
<include refid="dynamicWhereConditions" />
</select>
</mapper>

mallinkService/src/main/resources/mapper/WxCarCmdLogsMapper.xml → mallinkService/src/main/resources/mapper/WxCarCmdLogMapper.xml Просмотреть файл

@@ -1,18 +1,18 @@
<?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.simple.mapper.WxCarCmdLogsMapper">
<resultMap id="BaseResultMap" type="com.simple.domain.po.WxCarCmdLogs">
<mapper namespace="com.simple.mapper.WxCarCmdLogMapper">
<resultMap id="BaseResultMap" type="com.simple.domain.po.WxCarCmdLog">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="tenant_id" jdbcType="VARCHAR" property="tenantId" />
<result column="support_vendor" jdbcType="INTEGER" property="supportVendor" />
<result column="cmd_type" jdbcType="VARCHAR" property="cmdType" />
<result column="vendor_type" jdbcType="INTEGER" property="vendorType" />
<result column="cmd_type" jdbcType="INTEGER" property="cmdType" />
<result column="create_date" jdbcType="TIMESTAMP" property="createDate" />
<result column="update_date" jdbcType="TIMESTAMP" property="updateDate" />
<result column="cmd_json" jdbcType="VARCHAR" property="cmdJson" />
</resultMap>
<sql id="allColumns">
`id`,`tenant_id`,`support_vendor`,`cmd_type`,`create_date`,`update_date`,`cmd_json`
`id`,`tenant_id`,`vendor_type`,`cmd_type`,`create_date`,`update_date`,`cmd_json`
</sql>

<sql id="dynamicWhereConditions">
@@ -28,13 +28,13 @@
</if>
<if test=" null != supportVendor ">
and `support_vendor` = #{supportVendor}
<if test=" null != vendorType ">
and `vendor_type` = #{vendorType}
</if>
<if test=" null != cmdType ">
and `cmd_type` like concat('%', #{cmdType},'%')
and `cmd_type` = #{cmdType}
</if>
@@ -61,8 +61,8 @@
<if test=" null != sortColumns"> order by ${sortColumns} </if>
</sql>
<select id="findList" parameterType="com.simple.domain.po.WxCarCmdLogs" resultMap="BaseResultMap">
select <include refid="allColumns" /> from wx_car_cmd_logs
<select id="findList" parameterType="com.simple.domain.po.WxCarCmdLog" resultMap="BaseResultMap">
select <include refid="allColumns" /> from wx_car_cmd_log
<include refid="dynamicWhereConditions" />
</select>

+ 146
- 0
mallinkService/src/main/resources/mapper/WxCouponMapper.xml Просмотреть файл

@@ -327,6 +327,145 @@
<if test=" null != sortColumns"> order by ${sortColumns} </if>
</sql>

<sql id="findCanSendConditions">
where 1 = 1

<if test=" null != id ">
and `id` = #{id}

</if>

<if test=" null != tenantId ">
and `tenant_id` like concat('%', #{tenantId},'%')

</if>

<if test=" null != merchantId ">
and `merchant_id` = #{merchantId}

</if>

<if test=" null != type ">
and `type` = #{type}

</if>

<if test=" null != coverImg ">
and `cover_img` like concat('%', #{coverImg},'%')

</if>

<if test=" null != title ">
and `title` like concat('%', #{title},'%')

</if>

<if test=" null != subTitle ">
and `sub_title` like concat('%', #{subTitle},'%')

</if>

<if test=" null != salePrice ">
and `sale_price` = #{salePrice}

</if>

<if test=" null != usePrice ">
and `use_price` = #{usePrice}

</if>

<if test=" null != useLimitQuantity ">
and `use_limit_quantity` = #{useLimitQuantity}

</if>

<if test=" null != targetAd ">
and `target_ad` = #{targetAd}

</if>

<if test=" null != sendType ">
and `send_type` = #{sendType}

</if>

and `send_end_date` &gt;= NOW()
and `send_start_date` &lt;= NOW()

<if test=" null != validType ">
and `valid_type` = #{validType}

</if>

<if test=" null != validStartDate ">
and `valid_start_date` = #{validStartDate}

</if>

<if test=" null != validEndDate ">
and `valid_end_date` = #{validEndDate}

</if>

<if test=" null != validDays ">
and `valid_days` = #{validDays}

</if>

<if test=" null != detail ">
and `detail` like concat('%', #{detail},'%')

</if>

<if test=" null != price ">
and `price` = #{price}

</if>

<if test=" null != remainInventory ">
and `remain_inventory` = #{remainInventory}

</if>

<if test=" null != inventory ">
and `inventory` = #{inventory}

</if>

<if test=" null != remark ">
and `remark` like concat('%', #{remark},'%')

</if>

<if test=" null != status ">
and `status` in (0,1,2)

</if>

<if test=" null != createDate ">
and `create_date` = #{createDate}

</if>

<if test=" null != updateDate ">
and `update_date` = #{updateDate}

</if>

<if test=" null != business ">
and `business` like concat('%', #{business},'%')

</if>
<if test=" null != ids ">
and id in
<foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")">
#{idItem}
</foreach>
</if>
<if test=" null != sortColumns"> order by ${sortColumns} </if>
</sql>

<select id="findList" parameterType="com.simple.domain.po.WxCoupon" resultMap="BaseResultMap">
select <include refid="allColumns" /> from wx_coupon
<include refid="dynamicWhereConditions" />
@@ -337,6 +476,13 @@
<include refid="findEnableConditions" />
</select>

<select id="findCanSendList" parameterType="com.simple.domain.po.WxCoupon" resultMap="BaseResultMap">
select <include refid="allColumns" /> from wx_coupon
<include refid="findCanSendConditions" />
</select>






+ 0
- 5
mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml Просмотреть файл

@@ -90,9 +90,4 @@
<include refid="dynamicWhereConditions" />
</select>






</mapper>

+ 80
- 58
mallinkService/src/main/resources/mapper/WxCouponSendMapper.xml Просмотреть файл

@@ -9,78 +9,100 @@
<result column="type" jdbcType="INTEGER" property="type" />
<result column="title" jdbcType="VARCHAR" property="title" />
<result column="send_type" jdbcType="INTEGER" property="sendType" />
<result column="status" jdbcType="INTEGER" property="status" />
<result column="send_start_time" jdbcType="TIMESTAMP" property="sendStartTime" />
<result column="send_end_time" jdbcType="TIMESTAMP" property="sendEndTime" />
<result column="create_date" jdbcType="TIMESTAMP" property="createDate" />
<result column="update_date" jdbcType="TIMESTAMP" property="updateDate" />
</resultMap>
<sql id="allColumns">
`id`,`tenant_id`,`merchant_id`,`coupon_id`,`type`,`title`,`send_type`,`create_date`,`update_date`
`id`,`tenant_id`,`merchant_id`,`coupon_id`,`type`,`title`,`send_type`,`status`,`send_start_time`,`send_end_time`,`create_date`,`update_date`
</sql>

<sql id="dynamicWhereConditions">
where 1 = 1
<if test=" null != id ">
and `id` = #{id}
</if>
<if test=" null != tenantId ">
and `tenant_id` like concat('%', #{tenantId},'%')
</if>
<if test=" null != merchantId ">
and `merchant_id` = #{merchantId}
</if>
<if test=" null != couponId ">
and `coupon_id` = #{couponId}
</if>
<if test=" null != type ">
and `type` = #{type}
</if>
<if test=" null != title ">
and `title` like concat('%', #{title},'%')
</if>
<if test=" null != sendType ">
and `send_type` = #{sendType}
</if>
<if test=" null != createDate ">
and `create_date` = #{createDate}
</if>
<if test=" null != updateDate ">
and `update_date` = #{updateDate}
</if>
where 1 = 1

<if test=" null != id ">
and `id` = #{id}

</if>

<if test=" null != tenantId ">
and `tenant_id` like concat('%', #{tenantId},'%')

</if>

<if test=" null != merchantId ">
and `merchant_id` = #{merchantId}

</if>

<if test=" null != couponId ">
and `coupon_id` = #{couponId}

</if>

<if test=" null != type ">
and `type` = #{type}

</if>

<if test=" null != title ">
and `title` like concat('%', #{title},'%')

</if>

<if test=" null != sendType ">
and `send_type` = #{sendType}

</if>

<if test=" null != status ">
and `status` = #{status}

</if>

<if test=" null != sendStartTime ">
and `send_start_time` = #{sendStartTime}

</if>

<if test=" null != sendEndTime ">
and `send_end_time` = #{sendEndTime}

</if>
<if test=" null != status and status==0">
and `send_end_time` &gt;= NOW()
and `send_start_time` &lt;= NOW()
</if>

<if test=" null != createDate ">
and `create_date` = #{createDate}

</if>

<if test=" null != updateDate ">
and `update_date` = #{updateDate}

</if>
<if test=" null != ids ">
and id in
and id in
<foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")">
#{idItem}
#{idItem}
</foreach>
</if>
</if>
<if test=" null != sortColumns"> order by ${sortColumns} </if>
</sql>
<select id="findList" parameterType="com.simple.domain.po.WxCouponSend" resultMap="BaseResultMap">
select <include refid="allColumns" /> from wx_coupon_send
<include refid="dynamicWhereConditions" />
</select>
</mapper>

+ 24
- 13
mallinkService/src/main/resources/mapper/WxOrderMapper.xml Просмотреть файл

@@ -6,6 +6,7 @@
<result column="order_number" jdbcType="BIGINT" property="orderNumber" />
<result column="tenant_id" jdbcType="VARCHAR" property="tenantId" />
<result column="c_user_id" jdbcType="BIGINT" property="cUserId" />
<result column="merchant_id" jdbcType="BIGINT" property="merchantId" />
<result column="b_user_id" jdbcType="BIGINT" property="bUserId" />
<result column="payment_type" jdbcType="INTEGER" property="paymentType" />
<result column="payment" jdbcType="INTEGER" property="payment" />
@@ -17,7 +18,7 @@
</resultMap>
<sql id="allColumns">
`id`,`order_number`,`tenant_id`,`c_user_id`,`b_user_id`,`payment_type`,`payment`,`payment_time`,`order_status`,`create_date`,`update_date`,`detail`
`id`,`order_number`,`tenant_id`,`c_user_id`,`merchant_id`,`b_user_id`,`payment_type`,`payment`,`payment_time`,`order_status`,`create_date`,`update_date`,`detail`
</sql>

<sql id="dynamicWhereConditions">
@@ -43,6 +44,11 @@
</if>
<if test=" null != merchantId ">
and `merchant_id` = #{merchantId}
</if>
<if test=" null != bUserId ">
and `b_user_id` = #{bUserId}
@@ -98,13 +104,15 @@


<select id="queryListMap" parameterType="com.simple.domain.vo.OrderVo" resultType="hashmap">
select o.id, o.coupon_id, c.title, v.verification_date,
o.c_user_id, u.phone, u.nick_name, c.price, c.sale_price,
o.status, o.coupon_status
select o.id orderId, c.title, v.verification_date,
o.c_user_id, uc.phone, uc.nick_name, c.price, c.sale_price,
o.`order_status`, co.`coupon_status`
from wx_order o
left join wx_coupon c on c.id = o.coupon_id
left join wx_coupon_verify v on v.coupon_id= o.coupon_id
left join wx_c_user u on u.id = o.c_user_id
left join wx_coupon_order co on co.order_id = o.id
left join wx_coupon c on c.id = co.coupon_id
left join wx_coupon_verify v on v.coupon_id= co.coupon_id
left join wx_c_user uc on uc.id = o.c_user_id
left join wx_merchant_b_user ub on ub.id = o.b_user_id
<where>
<if test="tenantId != null and tenantId !=''">
and c.`tenant_id` = #{tenantId}
@@ -116,21 +124,24 @@
and o.`id` = #{orderId}
</if>
<if test="couponId != null and couponId!=''">
and o.`coupon_id` = #{couponId}
and co.`coupon_id` = #{couponId}
</if>
<if test="cUserId != null and cUserId !=''">
and o.`c_user_id` = #{cUserId}
</if>
<if test="status != null and status != ''" >
and o.`status` = #{status}
<if test="bUserId != null and bUserId !=''">
and o.`b_user_id` = #{bUserId}
</if>
<if test="couponStatus != null and couponStatus.trim() != ''">
and o.`coupon_status` = #{couponStatus}
<if test="orderStatus != null and orderStatus != ''" >
and o.`order_status` = #{status}
</if>
<if test="couponStatus != null and couponStatus != ''">
and co.`coupon_status` = #{couponStatus}
</if>
</where>
<choose>
<otherwise>
order by id desc
order by o.`id` desc
</otherwise>
</choose>
</select>


+ 7
- 1
mallinkService/src/main/resources/mapper/WxParkMapper.xml Просмотреть файл

@@ -9,12 +9,13 @@
<result column="entry_exit" jdbcType="INTEGER" property="entryExit" />
<result column="create_date" jdbcType="TIMESTAMP" property="createDate" />
<result column="update_date" jdbcType="TIMESTAMP" property="updateDate" />
<result column="park_id" jdbcType="VARCHAR" property="parkId" />
<result column="vendor_type" jdbcType="INTEGER" property="vendorType" />
<result column="vendor_params" jdbcType="VARCHAR" property="vendorParams" />
</resultMap>
<sql id="allColumns">
`id`,`tenant_id`,`addr`,`number`,`entry_exit`,`create_date`,`update_date`,`vendor_type`,`vendor_params`
`id`,`tenant_id`,`addr`,`number`,`entry_exit`,`create_date`,`update_date`,`park_id`,`vendor_type`,`vendor_params`
</sql>

<sql id="dynamicWhereConditions">
@@ -55,6 +56,11 @@
</if>
<if test=" null != parkId ">
and `park_id` like concat('%', #{parkId},'%')
</if>
<if test=" null != vendorType ">
and `vendor_type` = #{vendorType}


+ 4
- 4
mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml Просмотреть файл

@@ -3,15 +3,15 @@
<mapper namespace="com.simple.mapper.WxPayOrderMapper">
<resultMap id="BaseResultMap" type="com.simple.domain.po.WxPayOrder">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="tenant_id" jdbcType="BIGINT" property="tenantId" />
<result column="tenant_id" jdbcType="VARCHAR" property="tenantId" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
<result column="order_id" jdbcType="BIGINT" property="orderId" />
<result column="c_user_id" jdbcType="BIGINT" property="cUserId" />
<result column="ip" jdbcType="VARCHAR" property="ip" />
<result column="pay_amount" jdbcType="INTEGER" property="payAmount" />
<result column="pay_time_start" jdbcType="INTEGER" property="payTimeStart" />
<result column="pay_time_end" jdbcType="INTEGER" property="payTimeEnd" />
<result column="pay_time_start" jdbcType="TIMESTAMP" property="payTimeStart" />
<result column="pay_time_end" jdbcType="TIMESTAMP" property="payTimeEnd" />
<result column="transaction_id" jdbcType="VARCHAR" property="transactionId" />
<result column="pay_vendor" jdbcType="INTEGER" property="payVendor" />
<result column="pay_order_no" jdbcType="VARCHAR" property="payOrderNo" />
@@ -32,7 +32,7 @@
</if>
<if test=" null != tenantId ">
and `tenant_id` = #{tenantId}
and `tenant_id` like concat('%', #{tenantId},'%')
</if>


+ 110
- 0
mallinkService/src/main/resources/mapper/WxProfitSharingOrderMapper.xml Просмотреть файл

@@ -0,0 +1,110 @@
<?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.simple.mapper.WxProfitSharingOrderMapper">
<resultMap id="BaseResultMap" type="com.simple.domain.po.WxProfitSharingOrder">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="tenant_id" jdbcType="VARCHAR" property="tenantId" />
<result column="merchant_id" jdbcType="VARCHAR" property="merchantId" />
<result column="order_id" jdbcType="VARCHAR" property="orderId" />
<result column="pay_amount" jdbcType="INTEGER" property="payAmount" />
<result column="pay_time_end" jdbcType="TIMESTAMP" property="payTimeEnd" />
<result column="pay_time_start" jdbcType="TIMESTAMP" property="payTimeStart" />
<result column="transaction_id" jdbcType="VARCHAR" property="transactionId" />
<result column="sharing_order_id" jdbcType="VARCHAR" property="sharingOrderId" />
<result column="error_msg" jdbcType="VARCHAR" property="errorMsg" />
<result column="sharing_status" jdbcType="INTEGER" property="sharingStatus" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
</resultMap>
<sql id="allColumns">
`id`,`tenant_id`,`merchant_id`,`order_id`,`pay_amount`,`pay_time_end`,`pay_time_start`,`transaction_id`,`sharing_order_id`,`error_msg`,`sharing_status`,`update_time`,`create_time`
</sql>

<sql id="dynamicWhereConditions">
where 1 = 1
<if test=" null != id ">
and `id` = #{id}
</if>
<if test=" null != tenantId ">
and `tenant_id` = #{tenantId}
</if>
<if test=" null != merchantId ">
and `merchant_id` = #{merchantId}
</if>
<if test=" null != orderId ">
and `order_id` = #{orderId}
</if>
<if test=" null != payAmount ">
and `pay_amount` = #{payAmount}
</if>
<if test=" null != payTimeEnd ">
and `pay_time_end` = #{payTimeEnd}
</if>
<if test=" null != payTimeStart ">
and `pay_time_start` = #{payTimeStart}
</if>
<if test=" null != transactionId ">
and `transaction_id` like concat('%', #{transactionId},'%')
</if>
<if test=" null != sharingOrderId ">
and `sharing_order_id` like concat('%', #{sharingOrderId},'%')
</if>
<if test=" null != errorMsg ">
and `error_msg` like concat('%', #{errorMsg},'%')
</if>
<if test=" null != sharingStatus ">
and `sharing_status` like concat('%', #{sharingStatus},'%')
</if>
<if test=" null != updateTime ">
and `update_time` = #{updateTime}
</if>
<if test=" null != createTime ">
and `create_time` = #{createTime}
</if>
<if test=" null != ids ">
and id in
<foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")">
#{idItem}
</foreach>
</if>
<if test=" null != sortColumns"> order by ${sortColumns} </if>
</sql>
<select id="findList" parameterType="com.simple.domain.po.WxProfitSharingOrder" resultMap="BaseResultMap">
select <include refid="allColumns" /> from wx_profit_sharing_order
<include refid="dynamicWhereConditions" />
</select>
</mapper>

+ 98
- 0
mallinkService/src/main/resources/mapper/WxProfitSharingReceiverMapper.xml Просмотреть файл

@@ -0,0 +1,98 @@
<?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.simple.mapper.WxProfitSharingReceiverMapper">
<resultMap id="BaseResultMap" type="com.simple.domain.po.WxProfitSharingReceiver">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="merchant_id" jdbcType="VARCHAR" property="merchantId" />
<result column="receiver_type" jdbcType="INTEGER" property="receiverType" />
<result column="receiver_account" jdbcType="VARCHAR" property="receiverAccount" />
<result column="receiver_comments" jdbcType="VARCHAR" property="receiverComments" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
<result column="sharing_type" jdbcType="INTEGER" property="sharingType" />
<result column="bank_no" jdbcType="VARCHAR" property="bankNo" />
<result column="true_name" jdbcType="VARCHAR" property="trueName" />
<result column="bank_code" jdbcType="VARCHAR" property="bankCode" />
</resultMap>
<sql id="allColumns">
`id`,`merchant_id`,`receiver_type`,`receiver_account`,`receiver_comments`,`create_time`,`update_time`,`sharing_type`,`bank_no`,`true_name`,`bank_code`
</sql>

<sql id="dynamicWhereConditions">
where 1 = 1
<if test=" null != id ">
and `id` = #{id}
</if>
<if test=" null != merchantId ">
and `merchant_id` = #{merchantId}
</if>
<if test=" null != receiverType ">
and `receiver_type` = #{receiverType}
</if>
<if test=" null != receiverAccount ">
and `receiver_account` like concat('%', #{receiverAccount},'%')
</if>
<if test=" null != receiverComments ">
and `receiver_comments` like concat('%', #{receiverComments},'%')
</if>
<if test=" null != createTime ">
and `create_time` = #{createTime}
</if>
<if test=" null != updateTime ">
and `update_time` = #{updateTime}
</if>
<if test=" null != sharingType ">
and `sharing_type` = #{sharingType}
</if>
<if test=" null != bankNo ">
and `bank_no` like concat('%', #{bankNo},'%')
</if>
<if test=" null != trueName ">
and `true_name` like concat('%', #{trueName},'%')
</if>
<if test=" null != bankCode ">
and `bank_code` like concat('%', #{bankCode},'%')
</if>
<if test=" null != ids ">
and id in
<foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")">
#{idItem}
</foreach>
</if>
<if test=" null != sortColumns"> order by ${sortColumns} </if>
</sql>
<select id="findList" parameterType="com.simple.domain.po.WxProfitSharingReceiver" resultMap="BaseResultMap">
select <include refid="allColumns" /> from wx_profit_sharing_receiver
<include refid="dynamicWhereConditions" />
</select>
</mapper>

Некоторые файлы не были показаны из-за большого количества измененных файлов

Загрузка…
Отмена
Сохранить