From d94ff7a63d55b13b5aeb1297522c1ee97000750d Mon Sep 17 00:00:00 2001 From: gongbiao Date: Wed, 15 Aug 2018 19:35:41 +0800 Subject: [PATCH 01/30] =?UTF-8?q?[=E5=95=86=E9=93=BA=E5=95=86=E6=88=B7][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9]:=E6=B7=BB=E5=8A=A0=E5=95=86=E6=88=B7?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E7=9A=84=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WxMerchantController.java | 4 +-- .../controller/WxMerchantShopController.java | 22 +++++++++---- .../java/com/simple/domain/po/WxMerchant.java | 23 +++++++++++-- .../com/simple/service/WxMerchantService.java | 2 -- .../simple/service/WxMerchantShopService.java | 13 ++++---- .../impl/WxMerchantBUserServiceImpl.java | 9 ++++- .../service/impl/WxMerchantServiceImpl.java | 23 +++---------- .../impl/WxMerchantShopServiceImpl.java | 33 +++++++++++++++++-- 8 files changed, 89 insertions(+), 40 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxMerchantController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxMerchantController.java index 37034ab3e..00b496687 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxMerchantController.java +++ b/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(); } diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxMerchantShopController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxMerchantShopController.java index f0c78f729..566c72eba 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxMerchantShopController.java +++ b/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 page = wxMerchantShopService.queryShopList(wxMerchantShop, pageNum, pageSize); + return new ResultData(page); + } + + @ApiOperation("新增接口") @PostMapping("add") public ResultData add(@RequestBody WxMerchantShop wxMerchantShop) { diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxMerchant.java b/mallinkService/src/main/java/com/simple/domain/po/WxMerchant.java index 19f28ca54..e7fe5b37d 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxMerchant.java +++ b/mallinkService/src/main/java/com/simple/domain/po/WxMerchant.java @@ -37,8 +37,11 @@ public class WxMerchant implements Serializable { public void setIds(List ids) { this.ids = ids; } - - + + @Transient + private String userids; + @Transient + private String shopids; /*租户ID**/ @io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId") @@ -152,6 +155,22 @@ public class WxMerchant implements Serializable { this.status = status; } + public String getUserids() { + return userids; + } + + public void setUserids(String userids) { + this.userids = userids; + } + + public String getShopids() { + return shopids; + } + + public void setShopids(String shopids) { + this.shopids = shopids; + } + public static enum Field { Id_ASC("`id` ASC"),Id_DESC("`id` DESC") diff --git a/mallinkService/src/main/java/com/simple/service/WxMerchantService.java b/mallinkService/src/main/java/com/simple/service/WxMerchantService.java index c5e2f6645..40f9af375 100644 --- a/mallinkService/src/main/java/com/simple/service/WxMerchantService.java +++ b/mallinkService/src/main/java/com/simple/service/WxMerchantService.java @@ -39,6 +39,4 @@ public interface WxMerchantService { void deleteById(Long id); - void saveOrUpdate(WxMerchant wxMerchant, String shopids, String userids); - } diff --git a/mallinkService/src/main/java/com/simple/service/WxMerchantShopService.java b/mallinkService/src/main/java/com/simple/service/WxMerchantShopService.java index 4184dd87a..7208a7646 100644 --- a/mallinkService/src/main/java/com/simple/service/WxMerchantShopService.java +++ b/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 queryShopList(WxMerchantShop record, Integer pageIndex, Integer pageSize); + + } diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxMerchantBUserServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxMerchantBUserServiceImpl.java index f5279f232..845b38577 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxMerchantBUserServiceImpl.java +++ b/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); } } diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxMerchantServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxMerchantServiceImpl.java index 3264ac35f..8c8cc6bc2 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxMerchantServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxMerchantServiceImpl.java @@ -45,19 +45,6 @@ public class WxMerchantServiceImpl implements WxMerchantService { return wxMerchantMapper.selectByPrimaryKey(id); } - @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()); - - wxMerchantMapper.insertSelective(record); - } else { - wxMerchantMapper.updateByPrimaryKeySelective(record); - } - } @Override public void deleteById(Long id) { @@ -66,7 +53,7 @@ public class WxMerchantServiceImpl implements WxMerchantService { @Transactional @Override - public void saveOrUpdate(WxMerchant wxMerchant, String shopids, String userids) { + public void saveOrUpdate(WxMerchant wxMerchant) { if (wxMerchant.getId() == null) { @@ -79,7 +66,7 @@ public class WxMerchantServiceImpl implements WxMerchantService { wxMerchantMapper.insertSelective(wxMerchant); //保存商户商铺的关联 - List shopidlist = JSONArray.parseArray(shopids, Long.class); + List shopidlist = JSONArray.parseArray(wxMerchant.getShopids(), Long.class); for(Long shopid:shopidlist){ WxMerchantShop wxMerchantShop = new WxMerchantShop(); wxMerchantShop.setId(idWorker.nextId()); @@ -101,7 +88,7 @@ public class WxMerchantServiceImpl implements WxMerchantService { } //保存商户关联用户 - List useridlist = JSONArray.parseArray(userids, Long.class); + List useridlist = JSONArray.parseArray(wxMerchant.getUserids(), Long.class); for(Long userid:useridlist){ WxMerchantBUser wxMerchantBUser = new WxMerchantBUser(); wxMerchantBUser.setId(userid); @@ -139,7 +126,7 @@ public class WxMerchantServiceImpl implements WxMerchantService { final IdWorker idWorker = IdWorker.get(); //保存商户商铺的关联 - List shopidlist = JSONArray.parseArray(shopids, Long.class); + List shopidlist = JSONArray.parseArray(wxMerchant.getShopids(), Long.class); for(Long shopid:shopidlist){ WxMerchantShop wxMerchantShop = new WxMerchantShop(); wxMerchantShop.setId(idWorker.nextId()); @@ -162,7 +149,7 @@ public class WxMerchantServiceImpl implements WxMerchantService { //保存商户关联用户 - List useridlist = JSONArray.parseArray(userids, Long.class); + List useridlist = JSONArray.parseArray(wxMerchant.getUserids(), Long.class); for(Long userid:useridlist){ WxMerchantBUser wxMerchantBUser = new WxMerchantBUser(); wxMerchantBUser.setId(userid); diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxMerchantShopServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxMerchantShopServiceImpl.java index 990924ebf..fdbf2cc5b 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxMerchantShopServiceImpl.java +++ b/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 listAsPage(WxMerchantShop record, Integer pageIndex, Integer pageSize) { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxMerchantShopMapper.findList(record)); } + @Override + public PageInfo queryShopList(WxMerchantShop record, Integer pageIndex, Integer pageSize) { + List resultlist=new ArrayList<>(); + + List merchantShops = wxMerchantShopMapper.findList(record); + for(WxMerchantShop merchantShop:merchantShops){ + WxShop wxShop = new WxShop(); + wxShop.setId(merchantShop.getShopId()); + List shopList = wxShopMapper.findList(wxShop); + if(shopList.size()>0){ + resultlist.add(shopList.get(0)); + } + } + PageHelper.startPage(pageIndex, pageSize); + PageInfo pageInfo = new PageInfo<>(resultlist); + return pageInfo; + } + @Override public WxMerchantShop getById(Long id) { return wxMerchantShopMapper.selectByPrimaryKey(id); From 37cfebf33050b4ab802a75fe43bc2016c3579f63 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Wed, 15 Aug 2018 21:06:13 +0800 Subject: [PATCH 02/30] =?UTF-8?q?[=E9=80=80=E6=AC=BE=E5=9B=9E=E8=B0=83][?= =?UTF-8?q?=E6=96=B0=E5=A2=9E]:=E5=BE=AE=E4=BF=A1=E9=80=80=E6=AC=BE?= =?UTF-8?q?=E5=9B=9E=E8=B0=83=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/WxPayOrderServiceImpl.java | 14 ++++----- .../impl/WxRefundOrderServiceImpl.java | 30 +++++++++++-------- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java index 0dda1ca2f..508939db2 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java @@ -262,13 +262,13 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { 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); diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java index bc9674490..a8bd70173 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java @@ -18,6 +18,7 @@ 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; @@ -48,6 +49,9 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { @Autowired WxPayAccountMapper wxPayAccountMapper; + @Autowired + WxOrderService wxOrderService; + JSONObject errorRefundReqMap = JSON.parseObject("{\n" + " \"SYSTEMERROR\": {\n" + " \"detail\": \"接口返回错误\",\n" + @@ -433,23 +437,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 +462,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 msgMap = new HashMap<>(); try { From 442855f52641dac56f21ad19a25ff309ce23616c Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Wed, 15 Aug 2018 23:40:07 +0800 Subject: [PATCH 03/30] =?UTF-8?q?[=E6=94=AF=E4=BB=98][=E4=BF=AE=E5=A4=8D]:?= =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E6=94=AF=E4=BB=98=E6=88=90=E5=8A=9F=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WxPayOrderController.java | 51 +--- .../java/com/simple/enums/EnumPayStatus.java | 1 + .../simple/mapper/WxCouponOrderMapper.java | 6 - .../main/java/com/simple/pay/WxPayment.java | 20 ++ .../com/simple/service/WxPayOrderService.java | 55 ++-- .../service/impl/WxOrderServiceImpl.java | 17 +- .../service/impl/WxPayOrderServiceImpl.java | 265 ++++++++++++------ .../resources/mapper/WxCouponOrderMapper.xml | 5 - 8 files changed, 244 insertions(+), 176 deletions(-) diff --git a/mallinkCApi/src/main/java/com/simple/controller/WxPayOrderController.java b/mallinkCApi/src/main/java/com/simple/controller/WxPayOrderController.java index 55c31fa32..4645a89cd 100644 --- a/mallinkCApi/src/main/java/com/simple/controller/WxPayOrderController.java +++ b/mallinkCApi/src/main/java/com/simple/controller/WxPayOrderController.java @@ -70,54 +70,21 @@ 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 paramMap = null; - String response; + @ApiOperation("更新支付订单状态") + @PostMapping("/updatePayOrder") + public ResultData updatePayOrder(@RequestBody WxPayOrder wxPayOrder) { 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(wxPayOrder); + return new ResultData(); } catch (MallinkException e) { - logger.error("payment wxpay, notify error, req: " + paramMap.toString() + ", e:" +e.getLocalizedMessage()); - return e.getMessage(); + logger.error("payment wechat, order create error, update 2: " + wxPayOrder.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("payment wechat, order create error, update 3: " + wxPayOrder.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" + - "\n" + - "\n" + - " \n" + - " \n" + - "\n"; - } - @ApiOperation("分页列表接口") @GetMapping("/list") @ApiImplicitParams({ diff --git a/mallinkService/src/main/java/com/simple/enums/EnumPayStatus.java b/mallinkService/src/main/java/com/simple/enums/EnumPayStatus.java index 5a06c1bd4..2f2f89621 100644 --- a/mallinkService/src/main/java/com/simple/enums/EnumPayStatus.java +++ b/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) { diff --git a/mallinkService/src/main/java/com/simple/mapper/WxCouponOrderMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxCouponOrderMapper.java index 0d35df6ad..2d0387bca 100644 --- a/mallinkService/src/main/java/com/simple/mapper/WxCouponOrderMapper.java +++ b/mallinkService/src/main/java/com/simple/mapper/WxCouponOrderMapper.java @@ -8,10 +8,4 @@ import com.simple.domain.po.WxCouponOrder; public interface WxCouponOrderMapper extends CommonMapper { List findList(WxCouponOrder wxCouponOrder); - - - - - - } diff --git a/mallinkService/src/main/java/com/simple/pay/WxPayment.java b/mallinkService/src/main/java/com/simple/pay/WxPayment.java index 63b222451..215e4bb5d 100644 --- a/mallinkService/src/main/java/com/simple/pay/WxPayment.java +++ b/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 buildWeappSecondSignMap(String appId, String timestamp, String prepay_id, String paternerKey) { + Map params = new HashMap(); + Map 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); + } + /** * 关闭订单 * diff --git a/mallinkService/src/main/java/com/simple/service/WxPayOrderService.java b/mallinkService/src/main/java/com/simple/service/WxPayOrderService.java index 267d790c6..1187f71a4 100644 --- a/mallinkService/src/main/java/com/simple/service/WxPayOrderService.java +++ b/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 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 paramMap, EnumPayWay payWay); - /** + /** + * 保存或更新实体 + * + * @param record + */ + void saveOrUpdate(WxPayOrder record); + + /** * 根据实体查询分页列表 * * @param record @@ -50,22 +68,17 @@ public interface WxPayOrderService { * @param pageSize * @return */ - PageInfo listAsPage(WxPayOrder record, Integer pageIndex, Integer pageSize); - - /** + PageInfo 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); - - - - - - - - + + } diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxOrderServiceImpl.java index 60519fac9..98f08bb9f 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxOrderServiceImpl.java +++ b/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 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 { // 减库存 diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java index 508939db2..480cc9fc9 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java @@ -47,10 +47,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 +77,98 @@ 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 list = wxPayOrderMapper.findList(record); - if (list.size() > 0) { - throw new MallinkException(ErrorCode.PAY_ORDER_EXIST); - } - // 3. 创建支付订单 - Long id = idworker.nextId(); Date currentDate = new Date(); - - 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); + List 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(currentTime); + record.setPayTimeEnd(currentTime); + // 支付单号 + record.setPayOrderNo(payOrderNo); + 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) { + 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 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 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(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, " + wxPayOrderP.toString() + ", response: " + response.toString()); + Map returnMap = WxPayment.xmlToMap(response); + returnMap.put("payOrderId", payOrderNo); + String result_code = returnMap.get("result_code"); + if ("SUCCESS".equals(result_code)) { + /* + Map 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 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(200, "创建支付订单成功", 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 +183,9 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { /** * 提供微信支付回调调用 - * @param paramMap 异步通知参数 - * @param payWay 支付方式 + * + * @param paramMap 异步通知参数 + * @param payWay 支付方式 * @return */ @Override @@ -188,16 +205,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 resultMap = new LinkedHashMap<>(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", "订单状态码非SUCCESS"); @@ -208,15 +223,15 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { 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 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 resultMap = new LinkedHashMap<>(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", "订单总金额不一致"); @@ -225,14 +240,14 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { // 处理支付成功 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 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 +261,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,11 +283,11 @@ 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 updateOrder = new WxPayOrder(); @@ -297,6 +325,65 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { */ } + @Override + public void handlePayOrderStatusUpdate(WxPayOrder record) { + // 判断支付状态 + if (record.getPayOrderStatus() != EnumPayStatus.PAY_WAY_WAIT.getCode()) { + logger.error("pay handle, payOrder " + record.getPayOrderNo() + + "is complete s , orderId : " + record.getOrderId()); + return; + } + WxOrder order = wxOrderMapper.selectByPrimaryKey(record.getOrderId()); + if (order == null) { + 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 updateOrder = new WxPayOrder(); + updateOrder.setId(record.getId()); + updateOrder.setOrderId(record.getOrderId()); + updateOrder.setUpdateTime(currentDate); + updateOrder.setPayOrderStatus(record.getPayOrderStatus()); + 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 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 listAsPage(WxPayOrder record, Integer pageIndex, Integer pageSize) { @@ -313,7 +400,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { if (record.getId() == null) { //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); IdWorker idWorker = new IdWorker(0, 0); - record.setId(idWorker.nextId()); + record.setId(idWorker.nextId()); wxPayOrderMapper.insertSelective(record); } else { wxPayOrderMapper.updateByPrimaryKeySelective(record); @@ -324,12 +411,6 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { public void deleteById(Long id) { wxPayOrderMapper.deleteByPrimaryKey(id); } - - - - - - - - + + } diff --git a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml index 3d7ba0907..3656f4487 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml @@ -90,9 +90,4 @@ - - - - - From 54dc60ea041d5aedb4e0f5f4c59ffc040b2224b0 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Thu, 16 Aug 2018 11:17:05 +0800 Subject: [PATCH 04/30] =?UTF-8?q?[=E6=94=AF=E4=BB=98/=E9=80=80=E6=AC=BE][?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D]:=E5=BE=AE=E4=BF=A1=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E6=88=90=E5=8A=9F=E5=90=8E=E6=94=AF=E4=BB=98=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E4=BF=AE=E6=94=B9=EF=BC=8C=E9=80=80=E6=AC=BE?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=E5=8F=91=E8=B5=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WxRefundOrderController.java | 43 ++++----- .../controller/WxPayOrderController.java | 57 ++++++++++-- .../service/impl/WxPayOrderServiceImpl.java | 8 +- .../impl/WxRefundOrderServiceImpl.java | 87 +++++++++++++------ 4 files changed, 136 insertions(+), 59 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxRefundOrderController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxRefundOrderController.java index d426b9126..03b27c97b 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxRefundOrderController.java +++ b/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 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)); } - - - + + } diff --git a/mallinkCApi/src/main/java/com/simple/controller/WxPayOrderController.java b/mallinkCApi/src/main/java/com/simple/controller/WxPayOrderController.java index 4645a89cd..4bca943e5 100644 --- a/mallinkCApi/src/main/java/com/simple/controller/WxPayOrderController.java +++ b/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 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,17 +77,51 @@ public class WxPayOrderController extends BaseController { return new ResultData(ErrorCode.PAY_ORDER_ERROR); } - @ApiOperation("更新支付订单状态") + @ApiOperation(value = "更新支付订单状态", notes = "{\"id\":\"string\",\"orderId\":\"string\",\"status\":integer,\"reason\":\"string\"}") @PostMapping("/updatePayOrder") - public ResultData updatePayOrder(@RequestBody WxPayOrder wxPayOrder) { + public ResultData updatePayOrder(@RequestBody Map 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 { - wxPayOrderService.handlePayOrderStatusUpdate(wxPayOrder); - return new ResultData(); + wxPayOrderService.handlePayOrderStatusUpdate(payOrder); + return new ResultData(200, "支付状态更新成功"); } catch (MallinkException e) { - logger.error("payment wechat, order create error, update 2: " + wxPayOrder.toString() + ", e:" + e.getMessage()); + logger.error("支付状态更新失败2: " + payOrder.toString() + ", e:" + e.getMessage()); return new ResultData(e.getErrorCode(), e.getMessage()); } catch (Exception e) { - logger.error("payment wechat, order create error, update 3: " + wxPayOrder.toString() + ", e:" + e.getMessage()); + logger.error("支付状态更新失败3: " + payOrder.toString() + ", e:" + e.getMessage()); } return new ResultData(ErrorCode.PAY_ORDER_ERROR); } diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java index 480cc9fc9..cc03b86a8 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java @@ -326,16 +326,17 @@ 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()) { + if (record.getPayOrderStatus() == EnumPayStatus.PAY_WAY_WAIT.getCode()) { logger.error("pay handle, payOrder " + record.getPayOrderNo() + - "is complete s , orderId : " + record.getOrderId()); + "is complete, orderId : " + record.getOrderId()); return; } 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 handle, order " + record.getOrderId() + " not found , payOrderGid : " + record.getPayOrderNo()); throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND); } @@ -347,6 +348,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { updateOrder.setOrderId(record.getOrderId()); updateOrder.setUpdateTime(currentDate); updateOrder.setPayOrderStatus(record.getPayOrderStatus()); + updateOrder.setFailReason(record.getFailReason()); wxPayOrderMapper.updateByPrimaryKeySelective(updateOrder); } catch (Exception e) { logger.error(e.getMessage()); diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java index a8bd70173..4b6d33815 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java @@ -213,26 +213,37 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { // check 是否有退款订单 List 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 可退券???? @@ -255,51 +266,73 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { 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 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 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); + } 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()); From aa0a8b65a7b552f8db7cff4b6a660dbedbe04e21 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Thu, 16 Aug 2018 14:33:03 +0800 Subject: [PATCH 05/30] =?UTF-8?q?[=E5=95=86=E9=93=BA=E5=95=86=E6=88=B7][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9]:=E6=B7=BB=E5=8A=A0=E5=95=86=E6=88=B7?= =?UTF-8?q?=E5=8F=AF=E5=81=9C=E7=94=A8=E5=8A=9F=E8=83=BD=E5=8F=8A=E7=9F=AD?= =?UTF-8?q?=E4=BF=A1=E4=B8=8A=E4=BC=A0EXCEL=E6=8E=A5=E5=8F=A3=E7=9A=84?= =?UTF-8?q?=E5=90=8D=E5=AD=97=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/simple/controller/WxMerchantController.java | 10 ++++++++-- .../java/com/simple/controller/WxMsgController.java | 2 +- .../java/com/simple/service/WxMerchantService.java | 2 ++ .../com/simple/service/impl/WxMerchantServiceImpl.java | 7 +++++++ 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxMerchantController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxMerchantController.java index 00b496687..cbd515257 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxMerchantController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxMerchantController.java @@ -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,"停用成功"); + } } diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxMsgController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxMsgController.java index 7ee4890d0..984af8ce3 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxMsgController.java +++ b/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,"上传文件不能为空"); } diff --git a/mallinkService/src/main/java/com/simple/service/WxMerchantService.java b/mallinkService/src/main/java/com/simple/service/WxMerchantService.java index 40f9af375..9965c1059 100644 --- a/mallinkService/src/main/java/com/simple/service/WxMerchantService.java +++ b/mallinkService/src/main/java/com/simple/service/WxMerchantService.java @@ -39,4 +39,6 @@ public interface WxMerchantService { void deleteById(Long id); + void disable(Long id); + } diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxMerchantServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxMerchantServiceImpl.java index 8c8cc6bc2..70db66d25 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxMerchantServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxMerchantServiceImpl.java @@ -51,6 +51,13 @@ public class WxMerchantServiceImpl implements WxMerchantService { 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) { From 5e77a94c2788bb31998740330522d46b7f25d8f0 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Thu, 16 Aug 2018 14:35:57 +0800 Subject: [PATCH 06/30] =?UTF-8?q?[B=E7=AB=AF=E6=A0=B8=E9=94=80/=E9=80=80?= =?UTF-8?q?=E6=AC=BE][=E6=96=B0=E5=A2=9E|=E4=BF=AE=E5=A4=8D]:B=E7=AB=AF?= =?UTF-8?q?=E5=8F=91=E8=B5=B7=E6=A0=B8=E9=94=80,=E9=80=80=E5=88=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WxCouponOrderController.java | 10 -- .../controller/WxCouponOrderController.java | 113 +++++++++++++++++ .../controller/WxRefundOrderController.java | 115 ++++++++++++++++++ .../simple/service/WxCouponOrderService.java | 21 ++-- .../impl/WxCouponOrderServiceImpl.java | 66 ++++++---- 5 files changed, 282 insertions(+), 43 deletions(-) create mode 100644 mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java create mode 100644 mallinkBApi/src/main/java/com/simple/controller/WxRefundOrderController.java diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxCouponOrderController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxCouponOrderController.java index b834d8612..2b3656de5 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxCouponOrderController.java +++ b/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(); - } - - - } diff --git a/mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java b/mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java new file mode 100644 index 000000000..62623aabd --- /dev/null +++ b/mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java @@ -0,0 +1,113 @@ +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("wxCouponOrder") +@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)}) + public ResultData list(@ModelAttribute WxCouponOrder wxCouponOrder, Integer pageNum, Integer pageSize) { + if (null == wxCouponOrder) wxCouponOrder = new WxCouponOrder(); + final PageInfo page = wxCouponOrderService.listAsPage(wxCouponOrder, pageNum, pageSize); + return new ResultData(page); + } + + @ApiOperation("新增接口") + @PostMapping("add") + public ResultData add(@RequestBody WxCouponOrder wxCouponOrder) { + //Assert.notNull(wxCouponOrder.getName(), "角色名不能为空"); + //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); + wxCouponOrderService.saveOrUpdate(wxCouponOrder); + return new ResultData(); + } + + @ApiOperation("根据id更新接口") + @PostMapping("update") + public ResultData update(@RequestBody WxCouponOrder wxCouponOrder) { + wxCouponOrderService.saveOrUpdate(wxCouponOrder); + return new ResultData(); + } + + @ApiOperation("根据id删除接口") + @GetMapping("/del") + @ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true) + public ResultData delete(Long id) { + wxCouponOrderService.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,"查询成功",wxCouponOrderService.getById(id)); + } + + @ApiOperation(value = "核销接口", notes = "{\"couponOrderId\":\"string\"}") + @PostMapping("verify") + public ResultData verify(@RequestBody Map 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 wxCouponOrderService.verify(couponOrderId, getUser()); + } + + @ApiOperation(value = "退券接口", notes = "{\"couponOrderId\":\"string\"}") + @PostMapping("refund") + public ResultData refund(@RequestBody Map 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 wxCouponOrderService.refund(couponOrderId, getUser()); + } +} diff --git a/mallinkBApi/src/main/java/com/simple/controller/WxRefundOrderController.java b/mallinkBApi/src/main/java/com/simple/controller/WxRefundOrderController.java new file mode 100644 index 000000000..b86f6a1e9 --- /dev/null +++ b/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 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 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)); + } + + + +} diff --git a/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java b/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java index ceaf624f0..a98520c62 100644 --- a/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java +++ b/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 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 bUser 核销人(登录用户) */ - ResultData verify(Long id, MallUserInfo mallUserInfo); + ResultData verify(Long couponOrderId, WxMerchantBUser bUser); /** - * 根据主键Id(券码)退券(款) + * 根据主键couponOrderId(券码)退券(款) * - * @param id - * @param mallUserInfo 退券(款)人(登录用户) + * @param couponOrderId + * @param bUser 退券(款)人(登录用户) */ - ResultData refund(Long id, MallUserInfo mallUserInfo); + ResultData refund(Long couponOrderId, WxMerchantBUser bUser); diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java index b3245402c..94c67fcb3 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java @@ -8,9 +8,13 @@ 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.enums.EnumCouponOrderStatus; +import com.simple.enums.EnumCouponStatus; +import com.simple.exception.MallinkException; import com.simple.mapper.WxCouponOrderMapper; 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,7 +24,8 @@ import java.util.Date; @Service public class WxCouponOrderServiceImpl implements WxCouponOrderService { - + private Logger logger = Logger.getLogger(WxCouponOrderServiceImpl.class); + @Autowired WxCouponOrderMapper wxCouponOrderMapper; @@ -55,45 +60,60 @@ 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, WxMerchantBUser bUser) { + WxCouponOrder wxCouponOrder = wxCouponOrderMapper.selectByPrimaryKey(couponOrderId); + 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(bUser.getId()); + 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, WxMerchantBUser bUser) { + WxCouponOrder wxCouponOrder = wxCouponOrderMapper.selectByPrimaryKey(couponOrderId); 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())) { + logger.error("已经核销过的券: couponOrder-" + couponOrderId); return new ResultData(ErrorCode.COUPON_ORDER_IS_USED); } - - wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode()); //3退款,券作废 - wxCouponOrder.setBUserId(mallUserInfo.getId()); - wxCouponOrder.setUpdateDate(new Date()); - wxCouponOrderMapper.updateByPrimaryKeySelective(wxCouponOrder); + try { + wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode()); //3退款,券作废 + wxCouponOrder.setBUserId(bUser.getId()); + 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()); + } return new ResultData(wxCouponOrder); } From 3d5547af95b7e6c8755ba23216dc49a16ec49803 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Thu, 16 Aug 2018 15:14:22 +0800 Subject: [PATCH 07/30] =?UTF-8?q?[IdWorker=E6=95=B4=E7=90=86][=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D]:IdWorker=E8=B0=83=E7=94=A8=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/simple/controller/WxCouponOrderController.java | 4 ++-- .../java/com/simple/service/WxCouponOrderService.java | 8 ++++---- .../simple/service/impl/MallPermissionServiceImpl.java | 3 ++- .../service/impl/WxCUserBasicInfoServiceImpl.java | 2 +- .../simple/service/impl/WxCouponOrderServiceImpl.java | 10 +++++----- .../service/impl/WxDateAmountRecordServiceImpl.java | 2 +- .../com/simple/service/impl/WxOrderServiceImpl.java | 1 + .../com/simple/service/impl/WxPayOrderServiceImpl.java | 2 +- 8 files changed, 17 insertions(+), 15 deletions(-) diff --git a/mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java b/mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java index 62623aabd..94dde5fec 100644 --- a/mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java +++ b/mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java @@ -88,7 +88,7 @@ public class WxCouponOrderController extends BaseController logger.error("couponOrderId参数不正确: " + paramMap.toString()); return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "couponOrderId参数不正确"); } - return wxCouponOrderService.verify(couponOrderId, getUser()); + return wxCouponOrderService.verify(couponOrderId, getUser().getId()); } @ApiOperation(value = "退券接口", notes = "{\"couponOrderId\":\"string\"}") @@ -108,6 +108,6 @@ public class WxCouponOrderController extends BaseController logger.error("couponOrderId参数不正确: " + paramMap.toString()); return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "couponOrderId参数不正确"); } - return wxCouponOrderService.refund(couponOrderId, getUser()); + return wxCouponOrderService.refund(couponOrderId, getUser().getId()); } } diff --git a/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java b/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java index a98520c62..897e2a2fe 100644 --- a/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java +++ b/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java @@ -44,17 +44,17 @@ public interface WxCouponOrderService { * 根据主键couponOrderId(券码)核销 * * @param couponOrderId - * @param bUser 核销人(登录用户) + * @param bUserId 核销人(登录用户) */ - ResultData verify(Long couponOrderId, WxMerchantBUser bUser); + ResultData verify(Long couponOrderId, Long bUserId); /** * 根据主键couponOrderId(券码)退券(款) * * @param couponOrderId - * @param bUser 退券(款)人(登录用户) + * @param bUserId 退券(款)人(登录用户) */ - ResultData refund(Long couponOrderId, WxMerchantBUser bUser); + ResultData refund(Long couponOrderId, Long bUserId); diff --git a/mallinkService/src/main/java/com/simple/service/impl/MallPermissionServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/MallPermissionServiceImpl.java index 6bf23751c..466be284d 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/MallPermissionServiceImpl.java +++ b/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); diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxCUserBasicInfoServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxCUserBasicInfoServiceImpl.java index 66f172cd9..aad9d9abc 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxCUserBasicInfoServiceImpl.java +++ b/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 { diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java index 94c67fcb3..b47b9e890 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java @@ -43,7 +43,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 { @@ -60,7 +60,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public ResultData verify(Long couponOrderId, WxMerchantBUser bUser) { + public ResultData verify(Long couponOrderId, Long bUserId) { WxCouponOrder wxCouponOrder = wxCouponOrderMapper.selectByPrimaryKey(couponOrderId); if (wxCouponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_OVER_TIME.getCode()) { logger.error("已过期: couponOrder-" + couponOrderId); @@ -76,7 +76,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } try { wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()); //1核销 - wxCouponOrder.setBUserId(bUser.getId()); + wxCouponOrder.setBUserId(bUserId); wxCouponOrder.setUpdateDate(new Date()); wxCouponOrderMapper.updateByPrimaryKeySelective(wxCouponOrder); } catch (Exception e) { @@ -90,7 +90,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public ResultData refund(Long couponOrderId, WxMerchantBUser bUser) { + public ResultData refund(Long couponOrderId, Long bUserId) { WxCouponOrder wxCouponOrder = wxCouponOrderMapper.selectByPrimaryKey(couponOrderId); if (wxCouponOrder.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_OVER_TIME.getCode())) { @@ -107,7 +107,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } try { wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode()); //3退款,券作废 - wxCouponOrder.setBUserId(bUser.getId()); + wxCouponOrder.setBUserId(bUserId); wxCouponOrder.setUpdateDate(new Date()); wxCouponOrderMapper.updateByPrimaryKeySelective(wxCouponOrder); } catch (Exception e) { diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxDateAmountRecordServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxDateAmountRecordServiceImpl.java index 71733e067..e5761b636 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxDateAmountRecordServiceImpl.java +++ b/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 { diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxOrderServiceImpl.java index 98f08bb9f..4306270ac 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxOrderServiceImpl.java @@ -174,6 +174,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); diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java index cc03b86a8..c1bb5393f 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java @@ -401,7 +401,7 @@ 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); + final IdWorker idWorker = IdWorker.get(); record.setId(idWorker.nextId()); wxPayOrderMapper.insertSelective(record); } else { From aa580f4ced163314aa7eb1bae4dbc7598b12f20d Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Thu, 16 Aug 2018 16:07:31 +0800 Subject: [PATCH 08/30] =?UTF-8?q?[B=E7=AB=AF=E9=80=80=E6=AC=BE][=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D]:B=E7=AB=AF=E5=B0=8F=E7=A8=8B=E5=BA=8F=E6=A0=B8?= =?UTF-8?q?=E9=94=80=E9=80=80=E6=AC=BE=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/simple/config/WebMvcConfig.java | 21 ++++++++++++++++ .../com/simple/controller/BaseController.java | 13 ++++++++++ .../simple/controller/WxCouponController.java | 4 +-- .../controller/WxCouponOrderController.java | 25 ++++++++++++++++--- .../java/com/simple/common/ErrorCode.java | 7 ++++++ .../impl/WxCouponOrderServiceImpl.java | 2 +- .../impl/WxRefundOrderServiceImpl.java | 14 ++++++++--- 7 files changed, 75 insertions(+), 11 deletions(-) diff --git a/mallinkBApi/src/main/java/com/simple/config/WebMvcConfig.java b/mallinkBApi/src/main/java/com/simple/config/WebMvcConfig.java index 4ba634305..07acb359e 100644 --- a/mallinkBApi/src/main/java/com/simple/config/WebMvcConfig.java +++ b/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> 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); + } } \ No newline at end of file diff --git a/mallinkBApi/src/main/java/com/simple/controller/BaseController.java b/mallinkBApi/src/main/java/com/simple/controller/BaseController.java index 36ad754cc..3120c1fa3 100644 --- a/mallinkBApi/src/main/java/com/simple/controller/BaseController.java +++ b/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; + } } diff --git a/mallinkBApi/src/main/java/com/simple/controller/WxCouponController.java b/mallinkBApi/src/main/java/com/simple/controller/WxCouponController.java index dd39b05b8..a74c1a659 100644 --- a/mallinkBApi/src/main/java/com/simple/controller/WxCouponController.java +++ b/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({ diff --git a/mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java b/mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java index 94dde5fec..82dfed688 100644 --- a/mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java +++ b/mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java @@ -19,7 +19,7 @@ import org.springframework.web.bind.annotation.*; import java.util.Map; @RestController -@RequestMapping("wxCouponOrder") +@RequestMapping("/api/couponOrder") @Api(description="核销和用户卡券查询接口") public class WxCouponOrderController extends BaseController { @@ -88,7 +88,16 @@ public class WxCouponOrderController extends BaseController logger.error("couponOrderId参数不正确: " + paramMap.toString()); return new ResultData(ErrorCode.PARAMETER_NOT_NULL.getCode(), "couponOrderId参数不正确"); } - return wxCouponOrderService.verify(couponOrderId, getUser().getId()); + 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\"}") @@ -104,10 +113,18 @@ public class WxCouponOrderController extends BaseController 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 wxCouponOrderService.refund(couponOrderId, getUser().getId()); + 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()); + } } } diff --git a/mallinkService/src/main/java/com/simple/common/ErrorCode.java b/mallinkService/src/main/java/com/simple/common/ErrorCode.java index 8ab875756..a1f94a842 100644 --- a/mallinkService/src/main/java/com/simple/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/simple/common/ErrorCode.java @@ -108,6 +108,13 @@ 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, "双向证书未配置"), + + /** + * 核销 + */ + VERIFY_ERROR(12050, "核销异常") ; diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java index b47b9e890..661b413a6 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java @@ -103,7 +103,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } if (wxCouponOrder.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode())) { logger.error("已经核销过的券: couponOrder-" + couponOrderId); - return new ResultData(ErrorCode.COUPON_ORDER_IS_USED); + throw new MallinkException(ErrorCode.COUPON_ORDER_IS_USED); } try { wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode()); //3退款,券作废 diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java index 4b6d33815..d1915a8f4 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java @@ -23,6 +23,7 @@ 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; @@ -210,6 +211,15 @@ 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 list = wxRefundOrderMapper.findList(record); if (list.size() > 0) { @@ -246,8 +256,6 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { throw new MallinkException(ErrorCode.REFUND_PAY_ORDER_IS_ZERO); } - // TODO check 可退券???? - // 创建退款订单 final IdWorker idWorker = IdWorker.get(); Long id = idWorker.nextId(); @@ -274,8 +282,6 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { throw new MallinkException(ErrorCode.DB_FAIL); } - WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(appInfo.getPayId()); - // 退款申请 String noncestr = Utility.generate32UUID(); WxRefundOrderP wxRefundOrderP = new WxRefundOrderP(); From a955c867f6989bce3b1d235d809511126696210c Mon Sep 17 00:00:00 2001 From: masterspirit Date: Thu, 16 Aug 2018 16:09:09 +0800 Subject: [PATCH 09/30] =?UTF-8?q?[=E5=8D=A1=E5=88=B8=E5=9C=BA=E6=99=AF?= =?UTF-8?q?=E6=8A=95=E6=94=BE][=E4=BF=AE=E6=94=B9]:=E7=94=9F=E6=95=88=20?= =?UTF-8?q?=E5=A4=B1=E6=95=88=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WxCouponChannelController.java | 4 +- .../controller/WxCouponSendController.java | 21 +++ .../com/simple/domain/po/WxCouponSend.java | 85 +++++++---- .../resources/mapper/WxCouponSendMapper.xml | 138 ++++++++++-------- 4 files changed, 160 insertions(+), 88 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxCouponChannelController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxCouponChannelController.java index c02ab3fe0..aca90be61 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxCouponChannelController.java +++ b/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 list = new ArrayList<>(); MallUserInfo user = getUser(); wxCouponChannelService.addBatch(ids,channelId,user.getTenantId()); return new ResultData(); diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxCouponSendController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxCouponSendController.java index b43a78ab1..ad4da0932 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxCouponSendController.java +++ b/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); @@ -38,6 +45,20 @@ public class WxCouponSendController extends BaseController @ApiOperation("新增接口") @PostMapping("add") public ResultData add(@RequestBody WxCouponSend wxCouponSend) { + List 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().after(new Date())){ + return new ResultData(Result.ERROR,"发放日期异常"); + } + + wxCouponSend.setMerchantId(wxCoupon.getMerchantId()); + 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); diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxCouponSend.java b/mallinkService/src/main/java/com/simple/domain/po/WxCouponSend.java index 730acce5d..21148cf16 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxCouponSend.java +++ b/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 ids; - @Transient - protected String sortColumns; - + protected Long id; + + @Transient + protected List 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 getIds() { + + public List getIds() { return ids; } - public void setIds(List ids) { + + public void setIds(List 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())) { diff --git a/mallinkService/src/main/resources/mapper/WxCouponSendMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponSendMapper.xml index 092b603c4..67e4be2a7 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponSendMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponSendMapper.xml @@ -9,78 +9,100 @@ + + + - + - `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` - where 1 = 1 - - - and `id` = #{id} - - - - - and `tenant_id` like concat('%', #{tenantId},'%') - - - - - and `merchant_id` = #{merchantId} - - - - - and `coupon_id` = #{couponId} - - - - - and `type` = #{type} - - - - - and `title` like concat('%', #{title},'%') - - - - - and `send_type` = #{sendType} - - - - - and `create_date` = #{createDate} - - - - - and `update_date` = #{updateDate} - - + where 1 = 1 + + + and `id` = #{id} + + + + + and `tenant_id` like concat('%', #{tenantId},'%') + + + + + and `merchant_id` = #{merchantId} + + + + + and `coupon_id` = #{couponId} + + + + + and `type` = #{type} + + + + + and `title` like concat('%', #{title},'%') + + + + + and `send_type` = #{sendType} + + + + + and `status` = #{status} + + + + + and `send_start_time` = #{sendStartTime} + + + + + and `send_end_time` = #{sendEndTime} + + + + and `send_end_time` >= NOW() + and `send_start_time` <= NOW() + + + + and `create_date` = #{createDate} + + + + + and `update_date` = #{updateDate} + + - and id in + and id in - #{idItem} + #{idItem} - + order by ${sortColumns} - + - - - - - - + + + + + + From 506a04261beac0880a6d7e2dc31a41909f66f189 Mon Sep 17 00:00:00 2001 From: masterspirit Date: Thu, 16 Aug 2018 17:13:42 +0800 Subject: [PATCH 10/30] =?UTF-8?q?[=E5=8D=A1=E5=88=B8=E5=9C=BA=E6=99=AF?= =?UTF-8?q?=E6=8A=95=E6=94=BE][=E4=BF=AE=E6=94=B9]:bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../simple/controller/WxCouponController.java | 17 +- .../controller/WxCouponSendController.java | 5 +- .../com/simple/mapper/WxCouponMapper.java | 2 + .../com/simple/service/WxCouponService.java | 5 +- .../service/impl/WxCouponServiceImpl.java | 15 +- .../main/resources/mapper/WxCouponMapper.xml | 146 ++++++++++++++++++ .../resources/mapper/WxCouponSendMapper.xml | 2 +- 7 files changed, 180 insertions(+), 12 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxCouponController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxCouponController.java index e3813a4b7..fb4d73720 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxCouponController.java +++ b/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 page = null; + page = wxCouponService.findCanSendList(wxCoupon, pageNum, pageSize); + + return new ResultData(page); + } } diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxCouponSendController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxCouponSendController.java index ad4da0932..413bc9ecf 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxCouponSendController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxCouponSendController.java @@ -38,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 page = wxCouponSendService.listAsPage(wxCouponSend, pageNum, pageSize); return new ResultData(page); } @@ -50,11 +51,12 @@ public class WxCouponSendController extends BaseController return new ResultData(Result.ERROR,"已经添加过该券"); } WxCoupon wxCoupon = wxCouponService.getById(wxCouponSend.getCouponId()); - if(wxCoupon.getSendEndDate().after(new Date())){ + 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()); @@ -68,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(); } diff --git a/mallinkService/src/main/java/com/simple/mapper/WxCouponMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxCouponMapper.java index a0c8168d1..55acf79f6 100644 --- a/mallinkService/src/main/java/com/simple/mapper/WxCouponMapper.java +++ b/mallinkService/src/main/java/com/simple/mapper/WxCouponMapper.java @@ -12,6 +12,8 @@ public interface WxCouponMapper extends CommonMapper { List findEnableList(WxCoupon wxCoupon); + List findCanSendList(WxCoupon record); + diff --git a/mallinkService/src/main/java/com/simple/service/WxCouponService.java b/mallinkService/src/main/java/com/simple/service/WxCouponService.java index 12ecd5dc8..2b7ac2300 100644 --- a/mallinkService/src/main/java/com/simple/service/WxCouponService.java +++ b/mallinkService/src/main/java/com/simple/service/WxCouponService.java @@ -48,7 +48,10 @@ public interface WxCouponService { * @param id */ void deleteById(Long id); - + /** + * + */ + PageInfo findCanSendList(WxCoupon record, Integer pageIndex, Integer pageSize); diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxCouponServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxCouponServiceImpl.java index d6fe80afe..fc870d8ea 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxCouponServiceImpl.java +++ b/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 findCanSendList(WxCoupon record, Integer pageIndex, Integer pageSize) { + return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponMapper.findCanSendList(record)); + } + + } diff --git a/mallinkService/src/main/resources/mapper/WxCouponMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponMapper.xml index 28aab475c..3b4ed7811 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponMapper.xml @@ -327,6 +327,145 @@ order by ${sortColumns} + + where 1 = 1 + + + and `id` = #{id} + + + + + and `tenant_id` like concat('%', #{tenantId},'%') + + + + + and `merchant_id` = #{merchantId} + + + + + and `type` = #{type} + + + + + and `cover_img` like concat('%', #{coverImg},'%') + + + + + and `title` like concat('%', #{title},'%') + + + + + and `sub_title` like concat('%', #{subTitle},'%') + + + + + and `sale_price` = #{salePrice} + + + + + and `use_price` = #{usePrice} + + + + + and `use_limit_quantity` = #{useLimitQuantity} + + + + + and `target_ad` = #{targetAd} + + + + + and `send_type` = #{sendType} + + + + and `send_end_date` >= NOW() + and `send_start_date` <= NOW() + + + and `valid_type` = #{validType} + + + + + and `valid_start_date` = #{validStartDate} + + + + + and `valid_end_date` = #{validEndDate} + + + + + and `valid_days` = #{validDays} + + + + + and `detail` like concat('%', #{detail},'%') + + + + + and `price` = #{price} + + + + + and `remain_inventory` = #{remainInventory} + + + + + and `inventory` = #{inventory} + + + + + and `remark` like concat('%', #{remark},'%') + + + + + and `status` in (0,1,2) + + + + + and `create_date` = #{createDate} + + + + + and `update_date` = #{updateDate} + + + + + and `business` like concat('%', #{business},'%') + + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxCouponSendMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponSendMapper.xml index 67e4be2a7..bfc8a822e 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponSendMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponSendMapper.xml @@ -72,7 +72,7 @@ and `send_end_time` = #{sendEndTime} - + and `send_end_time` >= NOW() and `send_start_time` <= NOW() From 2e181c34fb96a6ff4fee1626f873f7314fedeea7 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Thu, 16 Aug 2018 17:32:18 +0800 Subject: [PATCH 11/30] =?UTF-8?q?[=E6=94=AF=E4=BB=98][=E4=BF=AE=E5=A4=8D]:?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=AD=97=E6=AE=B5int=E6=94=B9=E4=B8=BAdateti?= =?UTF-8?q?me?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WxPayOrderController.java | 2 +- .../java/com/simple/domain/po/WxPayOrder.java | 31 ++++++++++--------- .../com/simple/domain/po/WxRefundOrder.java | 12 +++---- .../com/simple/mapper/WxPayOrderMapper.java | 2 +- .../service/impl/WxPayOrderServiceImpl.java | 27 ++++++++++++---- .../impl/WxRefundOrderServiceImpl.java | 7 +++-- .../main/java/com/simple/utils/Utility.java | 10 ++++++ .../resources/mapper/WxPayOrderMapper.xml | 8 ++--- .../resources/mapper/WxRefundOrderMapper.xml | 4 +-- 9 files changed, 65 insertions(+), 38 deletions(-) diff --git a/mallinkCApi/src/main/java/com/simple/controller/WxPayOrderController.java b/mallinkCApi/src/main/java/com/simple/controller/WxPayOrderController.java index 4bca943e5..a8fe6c438 100644 --- a/mallinkCApi/src/main/java/com/simple/controller/WxPayOrderController.java +++ b/mallinkCApi/src/main/java/com/simple/controller/WxPayOrderController.java @@ -116,7 +116,7 @@ public class WxPayOrderController extends BaseController { payOrder.setFailReason(reasonStr); try { wxPayOrderService.handlePayOrderStatusUpdate(payOrder); - return new ResultData(200, "支付状态更新成功"); + return new ResultData(Result.SUCCESS, "支付状态更新成功"); } catch (MallinkException e) { logger.error("支付状态更新失败2: " + payOrder.toString() + ", e:" + e.getMessage()); return new ResultData(e.getErrorCode(), e.getMessage()); diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxPayOrder.java b/mallinkService/src/main/java/com/simple/domain/po/WxPayOrder.java index dc7b669fa..d7b697bae 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxPayOrder.java +++ b/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 ids; + protected List ids; @Transient protected String sortColumns; @@ -32,17 +32,18 @@ public class WxPayOrder implements Serializable { return sortColumns; } - public List getIds() { + public List getIds() { return ids; } - public void setIds(List ids) { + + public void setIds(List 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() { diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxRefundOrder.java b/mallinkService/src/main/java/com/simple/domain/po/WxRefundOrder.java index 27f5a1e4d..c576f17cc 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxRefundOrder.java +++ b/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() { diff --git a/mallinkService/src/main/java/com/simple/mapper/WxPayOrderMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxPayOrderMapper.java index c5bbdb30e..9f64bd266 100644 --- a/mallinkService/src/main/java/com/simple/mapper/WxPayOrderMapper.java +++ b/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 { +public interface WxPayOrderMapper extends CommonMapper { List findList(WxPayOrder wxPayOrder); diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java index c1bb5393f..07c218eb9 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java +++ b/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; @@ -86,7 +88,6 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } // 2. check 是否有支付订单 Date currentDate = new Date(); - int currentTime = Utility.convertDate2TimeStamp(currentDate); List list = wxPayOrderMapper.findList(record); String payOrderNo = ""; if (list.size() <= 0) { @@ -98,8 +99,8 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { record.setCUserId(user.getId()); record.setCreateTime(currentDate); record.setUpdateTime(currentDate); - record.setPayTimeStart(currentTime); - record.setPayTimeEnd(currentTime); + record.setPayTimeStart(currentDate); + record.setPayTimeEnd(currentDate); // 支付单号 record.setPayOrderNo(payOrderNo); record.setPayAmount(order.getPayment()); @@ -132,8 +133,10 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { 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.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()); @@ -165,7 +168,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { returnMap.put("package", "prepay_id=" + prepay_id); returnMap.put("paySign", signAgent); logger.info("back to UI: " +returnMap.toString()); - return new ResultData(200, "创建支付订单成功", returnMap); + return new ResultData(Result.SUCCESS, "创建支付订单成功", returnMap); } else { JSONObject errObj = errorMap.getJSONObject(result_code); return new ResultData(ErrorCode.PAY_ORDER_ERROR.getCode(), errObj.toJSONString(), returnMap); @@ -220,6 +223,7 @@ 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) { @@ -238,6 +242,16 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { 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()); @@ -348,6 +362,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { updateOrder.setOrderId(record.getOrderId()); updateOrder.setUpdateTime(currentDate); updateOrder.setPayOrderStatus(record.getPayOrderStatus()); + updateOrder.setPayTimeEnd(currentDate); updateOrder.setFailReason(record.getFailReason()); wxPayOrderMapper.updateByPrimaryKeySelective(updateOrder); } catch (Exception e) { diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java index d1915a8f4..1a50cf5d8 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java +++ b/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; @@ -270,7 +271,7 @@ 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) { @@ -315,7 +316,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { try { record.setRefundOrderStatus(EnumRefundStatus.REFUND_REQ_SUCCESS.getCode()); wxRefundOrderMapper.updateByPrimaryKey(record); - return new ResultData(200, "退款订单申请成功", returnMap); + return new ResultData(Result.SUCCESS, "退款订单申请成功", returnMap); } catch (Exception e) { logger.error("微信退款订单更新入库出错: " + e.getMessage() + ", record: " + record.toString()); throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR); @@ -350,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); diff --git a/mallinkService/src/main/java/com/simple/utils/Utility.java b/mallinkService/src/main/java/com/simple/utils/Utility.java index e86068665..26e39c725 100644 --- a/mallinkService/src/main/java/com/simple/utils/Utility.java +++ b/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()); diff --git a/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml index 60de75590..03f72127a 100644 --- a/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml @@ -3,15 +3,15 @@ - + - - + + @@ -32,7 +32,7 @@ - and `tenant_id` = #{tenantId} + and `tenant_id` like concat('%', #{tenantId},'%') diff --git a/mallinkService/src/main/resources/mapper/WxRefundOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxRefundOrderMapper.xml index 7f86d8a5f..f20bf75d5 100644 --- a/mallinkService/src/main/resources/mapper/WxRefundOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxRefundOrderMapper.xml @@ -12,8 +12,8 @@ - - + + From ae9b2606df204b7a9d90e5bedfab89147d408341 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Thu, 16 Aug 2018 17:33:22 +0800 Subject: [PATCH 12/30] =?UTF-8?q?[=E8=BD=A6=E6=B5=81][=E4=BF=AE=E5=A4=8D]:?= =?UTF-8?q?=E4=BF=AE=E6=94=B9wx=5Fc=5Fuser=5Fcars=E4=B8=BAwx=5Fc=5Fuser=5F?= =?UTF-8?q?car?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...troller.java => WxCUserCarController.java} | 29 +++++---- ...troller.java => WxCUserCarController.java} | 29 +++++---- .../simple/controller/WxCarController.java | 23 ++++---- .../controller/WxUserGrantController.java | 23 +++++++- .../po/{WxCUserCars.java => WxCUserCar.java} | 33 +++++++++-- .../com/simple/mapper/WxCUserCarMapper.java | 17 ++++++ .../com/simple/mapper/WxCUserCarsMapper.java | 17 ------ ...arsService.java => WxCUserCarService.java} | 22 ++++--- .../com/simple/service/WxParkService.java | 12 +++- .../service/impl/WxCUserCarServiceImpl.java | 59 +++++++++++++++++++ .../service/impl/WxCUserCarsServiceImpl.java | 54 ----------------- .../impl/WxMsgValidationcodeServiceImpl.java | 2 +- .../service/impl/WxParkServiceImpl.java | 7 +++ ...serCarsMapper.xml => WxCUserCarMapper.xml} | 13 ++-- .../main/resources/mapper/WxOrderMapper.xml | 2 +- 15 files changed, 203 insertions(+), 139 deletions(-) rename mallinkAdmin/src/main/java/com/simple/controller/{WxCUserCarsController.java => WxCUserCarController.java} (66%) rename mallinkBApi/src/main/java/com/simple/controller/{WxCUserCarsController.java => WxCUserCarController.java} (66%) rename mallinkService/src/main/java/com/simple/domain/po/{WxCUserCars.java => WxCUserCar.java} (77%) create mode 100644 mallinkService/src/main/java/com/simple/mapper/WxCUserCarMapper.java delete mode 100644 mallinkService/src/main/java/com/simple/mapper/WxCUserCarsMapper.java rename mallinkService/src/main/java/com/simple/service/{WxCUserCarsService.java => WxCUserCarService.java} (52%) create mode 100644 mallinkService/src/main/java/com/simple/service/impl/WxCUserCarServiceImpl.java delete mode 100644 mallinkService/src/main/java/com/simple/service/impl/WxCUserCarsServiceImpl.java rename mallinkService/src/main/resources/mapper/{WxCUserCarsMapper.xml => WxCUserCarMapper.xml} (92%) diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxCUserCarsController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxCUserCarController.java similarity index 66% rename from mallinkAdmin/src/main/java/com/simple/controller/WxCUserCarsController.java rename to mallinkAdmin/src/main/java/com/simple/controller/WxCUserCarController.java index 8b9374f21..38faec706 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxCUserCarsController.java +++ b/mallinkAdmin/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 page = wxCUserCarsService.listAsPage(wxCUserCars, pageNum, pageSize); + public ResultData list(@ModelAttribute WxCUserCar wxCUserCars,Integer pageNum, Integer pageSize) { + if (null == wxCUserCars) wxCUserCars = new WxCUserCar(); + final PageInfo page = wxCUserCarService.listAsPage(wxCUserCars, pageNum, pageSize); return new ResultData(page); } @ApiOperation("新增接口") @PostMapping("add") - public ResultData add(@RequestBody WxCUserCars wxCUserCars) { + public ResultData add(@RequestBody WxCUserCar wxCUserCar) { //Assert.notNull(wxCUserCars.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 wxCUserCars) { + wxCUserCarService.saveOrUpdate(wxCUserCars); 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)); } diff --git a/mallinkBApi/src/main/java/com/simple/controller/WxCUserCarsController.java b/mallinkBApi/src/main/java/com/simple/controller/WxCUserCarController.java similarity index 66% rename from mallinkBApi/src/main/java/com/simple/controller/WxCUserCarsController.java rename to mallinkBApi/src/main/java/com/simple/controller/WxCUserCarController.java index 8b9374f21..1f3136a83 100644 --- a/mallinkBApi/src/main/java/com/simple/controller/WxCUserCarsController.java +++ b/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 page = wxCUserCarsService.listAsPage(wxCUserCars, pageNum, pageSize); + public ResultData list(@ModelAttribute WxCUserCar wxCUserCars,Integer pageNum, Integer pageSize) { + if (null == wxCUserCars) wxCUserCars = new WxCUserCar(); + final PageInfo 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)); } diff --git a/mallinkCApi/src/main/java/com/simple/controller/WxCarController.java b/mallinkCApi/src/main/java/com/simple/controller/WxCarController.java index 5f667c37b..57c314e52 100644 --- a/mallinkCApi/src/main/java/com/simple/controller/WxCarController.java +++ b/mallinkCApi/src/main/java/com/simple/controller/WxCarController.java @@ -3,13 +3,15 @@ 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.WxCUser; +import com.simple.domain.po.WxCUserCar; import com.simple.domain.po.WxCarCmdLogs; import com.simple.domain.po.WxPark; import com.simple.enums.EnumCarVendor; +import com.simple.service.WxCUserCarService; import com.simple.service.WxCarCmdLogsService; import com.simple.service.WxParkService; import com.simple.utils.ETCPUtil; @@ -38,17 +40,15 @@ public class WxCarController extends BaseController @Autowired WxParkService wxParkService; - + @Autowired + WxCUserCarService wxCUserCarService; private WxPark getCurrentPark() { + WxCUser user = getUser(); + WxPark wxPark = wxParkService.getByTenantId(user.getTenantId()); // 1, get mall's park // future use redis to optimize - final PageInfo 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="") @@ -75,6 +75,7 @@ public class WxCarController extends BaseController 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,7 +92,6 @@ public class WxCarController extends BaseController // 获取绑定的车牌 JSONObject dataObj = retObj.getJSONObject("data"); String etcpToken = dataObj.getString("token"); - // TODO 异步 ret = etcp.carNum(url, merchantNo, merchantKey, version, etcpToken); /* { @@ -112,10 +112,13 @@ public class WxCarController extends BaseController JSONArray arr = dataObj1.getJSONArray("carList"); for(int i=0;i list = wxCUserCarService.getList(userCar); + return new ResultData(Result.SUCCESS,"获取查询成功", list); + } + + } diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxCUserCars.java b/mallinkService/src/main/java/com/simple/domain/po/WxCUserCar.java similarity index 77% rename from mallinkService/src/main/java/com/simple/domain/po/WxCUserCars.java rename to mallinkService/src/main/java/com/simple/domain/po/WxCUserCar.java index 1d58646a1..0cf018354 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxCUserCars.java +++ b/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 ids; + protected List ids; @Transient protected String sortColumns; @@ -32,10 +32,11 @@ public class WxCUserCars implements Serializable { return sortColumns; } - public List getIds() { + public List getIds() { return ids; } - public void setIds(List ids) { + + public void setIds(List 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; diff --git a/mallinkService/src/main/java/com/simple/mapper/WxCUserCarMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxCUserCarMapper.java new file mode 100644 index 000000000..aa6a2780b --- /dev/null +++ b/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 { + + List findList(WxCUserCar wxCUserCar); + + + + + + +} diff --git a/mallinkService/src/main/java/com/simple/mapper/WxCUserCarsMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxCUserCarsMapper.java deleted file mode 100644 index bbcaf9c38..000000000 --- a/mallinkService/src/main/java/com/simple/mapper/WxCUserCarsMapper.java +++ /dev/null @@ -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 { - - List findList(WxCUserCars wxCUserCars); - - - - - - -} diff --git a/mallinkService/src/main/java/com/simple/service/WxCUserCarsService.java b/mallinkService/src/main/java/com/simple/service/WxCUserCarService.java similarity index 52% rename from mallinkService/src/main/java/com/simple/service/WxCUserCarsService.java rename to mallinkService/src/main/java/com/simple/service/WxCUserCarService.java index 24c3e48c1..98549d691 100644 --- a/mallinkService/src/main/java/com/simple/service/WxCUserCarsService.java +++ b/mallinkService/src/main/java/com/simple/service/WxCUserCarService.java @@ -2,19 +2,27 @@ package com.simple.service; import java.util.*; import com.github.pagehelper.PageInfo; -import com.simple.domain.po.WxCUserCars; +import com.simple.domain.po.WxCUserCar; -public interface WxCUserCarsService { +public interface WxCUserCarService { /** * 根据实体查询分页列表 * * @param record - * @param offset - * @param limit + * @param pageIndex + * @param pageSize * @return */ - PageInfo listAsPage(WxCUserCars record, Integer pageIndex, Integer pageSize); + PageInfo listAsPage(WxCUserCar record, Integer pageIndex, Integer pageSize); + + /** + * 根据实体查询列表 + * + * @param record + * @return + */ + List getList(WxCUserCar record); /** * 根据Id获得实体 @@ -22,14 +30,14 @@ public interface WxCUserCarsService { * @param id * @return */ - WxCUserCars getById(Long id); + WxCUserCar getById(Long id); /** * 保存或更新实体 * * @param record */ - void saveOrUpdate(WxCUserCars record); + void saveOrUpdate(WxCUserCar record); /** * 根据Id删除实体 diff --git a/mallinkService/src/main/java/com/simple/service/WxParkService.java b/mallinkService/src/main/java/com/simple/service/WxParkService.java index 1c2d5ceb6..425418f76 100644 --- a/mallinkService/src/main/java/com/simple/service/WxParkService.java +++ b/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 listAsPage(WxPark record, Integer pageIndex, Integer pageSize); @@ -23,6 +23,14 @@ public interface WxParkService { * @return */ WxPark getById(Long id); + + /** + * 根据tenantId获得实体 + * + * @param tenantId + * @return + */ + WxPark getByTenantId(String tenantId); /** * 保存或更新实体 diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxCUserCarServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxCUserCarServiceImpl.java new file mode 100644 index 000000000..78c5c7d2b --- /dev/null +++ b/mallinkService/src/main/java/com/simple/service/impl/WxCUserCarServiceImpl.java @@ -0,0 +1,59 @@ +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 listAsPage(WxCUserCar record, Integer pageIndex, Integer pageSize) { + return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCUserCarMapper.findList(record)); + } + + @Override + public List getList(WxCUserCar record) { + return wxCUserCarMapper.findList(record); + } + + @Override + public WxCUserCar getById(Long id) { + return wxCUserCarMapper.selectByPrimaryKey(id); + } + + @Override + public void saveOrUpdate(WxCUserCar record) { + if (record.getId() == null) { + //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); + 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); + } + + + + + + + + +} diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxCUserCarsServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxCUserCarsServiceImpl.java deleted file mode 100644 index dac16838d..000000000 --- a/mallinkService/src/main/java/com/simple/service/impl/WxCUserCarsServiceImpl.java +++ /dev/null @@ -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.WxCUserCars; -import com.simple.mapper.WxCUserCarsMapper; -import com.simple.service.WxCUserCarsService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.simple.common.IdWorker; - -@Service -public class WxCUserCarsServiceImpl implements WxCUserCarsService { - - @Autowired - WxCUserCarsMapper wxCUserCarsMapper; - - - @Override - public PageInfo listAsPage(WxCUserCars record, Integer pageIndex, Integer pageSize) { - return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCUserCarsMapper.findList(record)); - } - - @Override - public WxCUserCars getById(Long id) { - return wxCUserCarsMapper.selectByPrimaryKey(id); - } - - @Override - public void saveOrUpdate(WxCUserCars record) { - if (record.getId() == null) { - //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); - final IdWorker idWorker = IdWorker.get(); - record.setId(idWorker.nextId()); - wxCUserCarsMapper.insertSelective(record); - } else { - wxCUserCarsMapper.updateByPrimaryKeySelective(record); - } - } - - @Override - public void deleteById(Long id) { - wxCUserCarsMapper.deleteByPrimaryKey(id); - } - - - - - - - - -} diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxMsgValidationcodeServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxMsgValidationcodeServiceImpl.java index 3817aaa05..d2957c49a 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxMsgValidationcodeServiceImpl.java +++ b/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,"发送失败"); diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxParkServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxParkServiceImpl.java index 249fba95b..60f304218 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxParkServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxParkServiceImpl.java @@ -27,6 +27,13 @@ public class WxParkServiceImpl implements WxParkService { return wxParkMapper.selectByPrimaryKey(id); } + @Override + public WxPark getByTenantId(String tenantId) { + WxPark wxPark = new WxPark(); + wxPark.setTenantId(tenantId); + return wxParkMapper.selectOne(wxPark); + } + @Override public void saveOrUpdate(WxPark record) { if (record.getId() == null) { diff --git a/mallinkService/src/main/resources/mapper/WxCUserCarsMapper.xml b/mallinkService/src/main/resources/mapper/WxCUserCarMapper.xml similarity index 92% rename from mallinkService/src/main/resources/mapper/WxCUserCarsMapper.xml rename to mallinkService/src/main/resources/mapper/WxCUserCarMapper.xml index 31f261e49..65e963ceb 100644 --- a/mallinkService/src/main/resources/mapper/WxCUserCarsMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCUserCarMapper.xml @@ -1,7 +1,7 @@ - - + + @@ -67,14 +67,9 @@ order by ${sortColumns} - + select from wx_c_user_car - - - - - diff --git a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml index 45cdb4408..d008602fb 100644 --- a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml @@ -102,7 +102,7 @@ o.c_user_id, u.phone, u.nick_name, c.price, c.sale_price, o.status, o.coupon_status from wx_order o - left join wx_coupon c on c.id = o.coupon_id + left join wx_coupon_order co on co.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 From e603e0e5cba9b9f5236df3e59a33d24a1b3a3e43 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Thu, 16 Aug 2018 18:04:44 +0800 Subject: [PATCH 13/30] =?UTF-8?q?[=E8=AE=A2=E5=8D=95=E6=9F=A5=E8=AF=A2][?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D]:=E4=BF=AE=E6=94=B9=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/simple/domain/vo/OrderVo.java | 67 ++++++++++++------- .../main/resources/mapper/WxOrderMapper.xml | 29 ++++---- 2 files changed, 60 insertions(+), 36 deletions(-) diff --git a/mallinkService/src/main/java/com/simple/domain/vo/OrderVo.java b/mallinkService/src/main/java/com/simple/domain/vo/OrderVo.java index 8d0ce8953..4ff8f3e6a 100644 --- a/mallinkService/src/main/java/com/simple/domain/vo/OrderVo.java +++ b/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() { diff --git a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml index d008602fb..0ad1e0fc4 100644 --- a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml @@ -98,13 +98,15 @@ From 5393c159dd7ce7281a4a25aa6cdd2f4e47fe56ff Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Thu, 16 Aug 2018 18:05:19 +0800 Subject: [PATCH 14/30] =?UTF-8?q?[=E8=BD=A6=E6=B5=81][=E4=BF=AE=E5=A4=8D]:?= =?UTF-8?q?c=E7=AB=AF=E7=94=A8=E6=88=B7=E8=BD=A6=E7=89=8C=E8=8E=B7?= =?UTF-8?q?=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/simple/controller/WxCarController.java | 3 +++ .../main/java/com/simple/controller/WxUserGrantController.java | 1 - 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/mallinkCApi/src/main/java/com/simple/controller/WxCarController.java b/mallinkCApi/src/main/java/com/simple/controller/WxCarController.java index 57c314e52..c2363b396 100644 --- a/mallinkCApi/src/main/java/com/simple/controller/WxCarController.java +++ b/mallinkCApi/src/main/java/com/simple/controller/WxCarController.java @@ -144,10 +144,12 @@ public class WxCarController extends BaseController 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(); @@ -165,6 +167,7 @@ public class WxCarController extends BaseController dataObj.put("vendor", park.getVendorType()); return new ResultData(dataObj); } else { + logger.error("绑车牌失败: " + carNumber); return new ResultData(ErrorCode.ETCP_BIND_FAIL.getCode(), "绑车牌失败"); } } diff --git a/mallinkCApi/src/main/java/com/simple/controller/WxUserGrantController.java b/mallinkCApi/src/main/java/com/simple/controller/WxUserGrantController.java index 2e7b07697..1c19c5c5f 100755 --- a/mallinkCApi/src/main/java/com/simple/controller/WxUserGrantController.java +++ b/mallinkCApi/src/main/java/com/simple/controller/WxUserGrantController.java @@ -240,7 +240,6 @@ public class WxUserGrantController extends BaseController { return new ResultData(Result.SUCCESS,"查询成功",user); } - // @ApiOperation("获取当前用户车牌列表") @GetMapping("/carlist") public ResultData getCarList() { From e3f606cd01975edf95cf5cc813e3b8f2f7a7b354 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Thu, 16 Aug 2018 23:08:53 +0800 Subject: [PATCH 15/30] =?UTF-8?q?[=E8=BD=A6=E6=B5=81][=E4=BF=AE=E5=A4=8D]:?= =?UTF-8?q?=E8=BD=A6=E6=B5=81=E6=95=B0=E6=8D=AE=E5=BA=93=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../simple/controller/WxCarController.java | 222 +++++++++++++----- .../src/main/resources/application-dev.yml | 6 +- .../com/simple/service/WxCUserCarService.java | 17 +- .../service/impl/WxCUserCarServiceImpl.java | 12 +- 4 files changed, 183 insertions(+), 74 deletions(-) diff --git a/mallinkCApi/src/main/java/com/simple/controller/WxCarController.java b/mallinkCApi/src/main/java/com/simple/controller/WxCarController.java index c2363b396..8340c59f5 100644 --- a/mallinkCApi/src/main/java/com/simple/controller/WxCarController.java +++ b/mallinkCApi/src/main/java/com/simple/controller/WxCarController.java @@ -24,7 +24,9 @@ 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 @@ -43,8 +45,7 @@ public class WxCarController extends BaseController @Autowired WxCUserCarService wxCUserCarService; - private WxPark getCurrentPark() { - WxCUser user = getUser(); + private WxPark getCurrentPark(WxCUser user) { WxPark wxPark = wxParkService.getByTenantId(user.getTenantId()); // 1, get mall's park // future use redis to optimize @@ -54,8 +55,9 @@ public class WxCarController extends BaseController @ApiOperation(value = "获取车场支持的厂家",notes="") @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,8 +71,9 @@ public class WxCarController extends BaseController @ApiOperation(value = "初始化/etcp共同登录",notes="{\"phone\":\"string\"}") @PostMapping("/init") public ResultData init(Map 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"); @@ -92,29 +95,9 @@ public class WxCarController extends BaseController // 获取绑定的车牌 JSONObject dataObj = retObj.getJSONObject("data"); String etcpToken = dataObj.getString("token"); - 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 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 list, String carNumber) { + boolean bExist = false; + for(WxCUserCar userCar: list) { + if(carNumber.equals(userCar.getCarNumber())) { + bExist = true; + break; + } + } + return bExist; + } + /** * 绑车牌 * @param paramMap @@ -138,8 +187,9 @@ public class WxCarController extends BaseController "TJD:={\"carNumber\":\"string\",\"carNumColor\":\"string\",\"outCarId\":\"string\"}") @PostMapping("/bindCar") public ResultData bindCar(Map 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"); @@ -162,7 +212,16 @@ 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); @@ -174,17 +233,19 @@ public class WxCarController extends BaseController 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"); @@ -206,8 +267,20 @@ public class WxCarController extends BaseController 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); @@ -225,15 +298,18 @@ public class WxCarController extends BaseController "TJD:={\"carNumber\":\"string\",\"carNumColor\":\"string\",\"outCarId\":\"string\"}") @PostMapping("/unbindCar") public ResultData unbindCar(Map 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(); @@ -247,9 +323,14 @@ public class WxCarController extends BaseController 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(), "解绑车牌失败"); } } @@ -258,35 +339,42 @@ 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(ErrorCode.TJD_UNBIND_FAIL, "解绑车牌失败"); + 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); + + /* + { + "timestamp": "1464235239561", + "returnCode": "T", + "errorMsg": "", + "returnMsg": "OK", + "isSuccess": "0", + "carId": "5836b8b52ada463ebc6199579f029561" + } + */ + 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(), "解绑车牌失败"); } @@ -300,8 +388,9 @@ public class WxCarController extends BaseController "TJD:={\"carNumber\":\"string\",\"carNumColor\":\"string\",\"outCarId\":\"string\"}") @PostMapping("/getCarStopFee") public ResultData getCarStopFee(Map 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"); @@ -400,8 +489,9 @@ public class WxCarController extends BaseController @ApiOperation("停车费抵扣") @PostMapping("/deductionFee") public ResultData deductionFee(Map 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"); @@ -468,8 +558,9 @@ public class WxCarController extends BaseController @ApiOperation("优免券模板") @PostMapping("/quanTemplate") public ResultData quanTemplate(Map paramMap) { + WxCUser user = getUser(); /// 1, get mall's park - WxPark park = getCurrentPark(); + WxPark park = getCurrentPark(user); if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) { String params = park.getVendorParams(); JSONObject objParams = JSON.parseObject(params); @@ -519,8 +610,9 @@ public class WxCarController extends BaseController @ApiOperation(value = "优免券领取", notes="ETCP:={\"etcpToken\":\"string\",\"carNumber\":\"string\",\"couponFreeId\":\"string\"}") @PostMapping("/getCoupon") public ResultData getCoupon(Map 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"); diff --git a/mallinkCApi/src/main/resources/application-dev.yml b/mallinkCApi/src/main/resources/application-dev.yml index 1db322959..c40f720f9 100644 --- a/mallinkCApi/src/main/resources/application-dev.yml +++ b/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 diff --git a/mallinkService/src/main/java/com/simple/service/WxCUserCarService.java b/mallinkService/src/main/java/com/simple/service/WxCUserCarService.java index 98549d691..74e00ab3f 100644 --- a/mallinkService/src/main/java/com/simple/service/WxCUserCarService.java +++ b/mallinkService/src/main/java/com/simple/service/WxCUserCarService.java @@ -23,6 +23,13 @@ public interface WxCUserCarService { * @return */ List getList(WxCUserCar record); + + /** + * 根据实体查询 + * @param record + * @return + */ + WxCUserCar getOne(WxCUserCar record); /** * 根据Id获得实体 @@ -45,12 +52,12 @@ public interface WxCUserCarService { * @param id */ void deleteById(Long id); - - - - - + /** + * 根据WxCUserCar删除实体 + * @param record + */ + void deleteByObj(WxCUserCar record); } diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxCUserCarServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxCUserCarServiceImpl.java index 78c5c7d2b..e9505a54d 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxCUserCarServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxCUserCarServiceImpl.java @@ -27,6 +27,12 @@ public class WxCUserCarServiceImpl implements WxCUserCarService { return wxCUserCarMapper.findList(record); } + @Override + public WxCUserCar getOne(WxCUserCar record) { + return wxCUserCarMapper.selectOne(record); + } + + @Override public WxCUserCar getById(Long id) { return wxCUserCarMapper.selectByPrimaryKey(id); @@ -35,7 +41,6 @@ public class WxCUserCarServiceImpl implements WxCUserCarService { @Override public void saveOrUpdate(WxCUserCar record) { if (record.getId() == null) { - //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); final IdWorker idWorker = IdWorker.get(); record.setId(idWorker.nextId()); wxCUserCarMapper.insertSelective(record); @@ -48,6 +53,11 @@ public class WxCUserCarServiceImpl implements WxCUserCarService { public void deleteById(Long id) { wxCUserCarMapper.deleteByPrimaryKey(id); } + + @Override + public void deleteByObj(WxCUserCar record) { + wxCUserCarMapper.delete(record); + } From 8263e05598c36693f224f0a9a7c98fb1b4dcc2b5 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Fri, 17 Aug 2018 09:17:34 +0800 Subject: [PATCH 16/30] =?UTF-8?q?[=E8=BD=A6=E6=B5=81][=E6=96=B0=E5=A2=9E|?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D]:Admin=E7=AB=AF=E8=BD=A6=E6=B5=81=E7=9B=B8?= =?UTF-8?q?=E5=85=B3API=E5=8F=8A=E5=9B=9E=E8=B0=83=E5=87=BD=E6=95=B0?= =?UTF-8?q?=EF=BC=8CC=E7=AB=AF=E8=BD=A6=E6=B5=81api=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../simple/controller/WxCarController.java | 283 ++++++++++++++ .../simple/controller/WxCarController.java | 364 +++++------------- 2 files changed, 379 insertions(+), 268 deletions(-) create mode 100644 mallinkAdmin/src/main/java/com/simple/controller/WxCarController.java diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxCarController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxCarController.java new file mode 100644 index 000000000..617949098 --- /dev/null +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxCarController.java @@ -0,0 +1,283 @@ +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.EnumCarVendor; +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; +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("/api/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; + + private WxPark getCurrentPark(MallUserInfo user) { + WxPark wxPark = wxParkService.getByTenantId(user.getTenantId()); + // 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 paramMap) { + 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)) { + // 优先从从商户表里取 + 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 = objParams.getString("parkId"); + // 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 { + 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 车辆入场通知 + */ + @RequestMapping(value = "/etcpParkInCallback") + public Result etcpParkInCallback(@RequestParam Map 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 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 param) { + /* + { + "plateNumber": "渝 ATX061", + "time": "2017-08-20 11:57:51" + } + */ + return new Result(0, "ok"); + } + + /** + * ETCP 主动支付结果通知 + */ + @RequestMapping(value = "/etcpPaidCallback") + public Result etcpPaidCallback(@RequestParam Map 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 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 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; + } + +} diff --git a/mallinkCApi/src/main/java/com/simple/controller/WxCarController.java b/mallinkCApi/src/main/java/com/simple/controller/WxCarController.java index 8340c59f5..7a3ae01b0 100644 --- a/mallinkCApi/src/main/java/com/simple/controller/WxCarController.java +++ b/mallinkCApi/src/main/java/com/simple/controller/WxCarController.java @@ -6,13 +6,11 @@ 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.WxCUser; -import com.simple.domain.po.WxCUserCar; -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.WxCUserCarService; import com.simple.service.WxCarCmdLogsService; +import com.simple.service.WxMerchantService; import com.simple.service.WxParkService; import com.simple.utils.ETCPUtil; import com.simple.utils.TJDCarUtil; @@ -45,6 +43,9 @@ public class WxCarController extends BaseController @Autowired WxCUserCarService wxCUserCarService; + @Autowired + WxMerchantService wxMerchantService; + private WxPark getCurrentPark(WxCUser user) { WxPark wxPark = wxParkService.getByTenantId(user.getTenantId()); // 1, get mall's park @@ -184,7 +185,15 @@ public class WxCarController extends BaseController * @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 paramMap) { WxCUser user = getUser(); @@ -254,16 +263,6 @@ 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") { @@ -294,8 +293,19 @@ 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 paramMap) { WxCUser user = getUser(); @@ -319,7 +329,6 @@ 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) { @@ -355,17 +364,6 @@ public class WxCarController extends BaseController 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") { wxCUserCarService.deleteByObj(userCar); @@ -384,8 +382,41 @@ 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 paramMap) { WxCUser user = getUser(); @@ -411,27 +442,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(), "停车费获取失败"); } @@ -441,7 +454,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"); @@ -449,31 +461,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(), "停车费获取失败"); @@ -486,7 +475,14 @@ 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 paramMap) { WxCUser user = getUser(); @@ -495,21 +491,20 @@ public class WxCarController extends BaseController 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"); @@ -517,19 +512,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(), "停车费抵扣失败"); @@ -538,76 +522,26 @@ 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 paramMap) { - WxCUser user = getUser(); - /// 1, get mall's park - WxPark park = getCurrentPark(user); - 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 paramMap) { WxCUser user = getUser(); @@ -617,6 +551,7 @@ public class WxCarController extends BaseController 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为空"); } @@ -629,6 +564,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"); @@ -636,9 +574,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"); } @@ -653,116 +593,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 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 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 param) { - /* - { - "plateNumber": "渝 ATX061", - "time": "2017-08-20 11:57:51" - } - */ - return new Result(0, "ok"); - } - // ETCP 主动支付结果通知 - @RequestMapping(value = "/etcpPaidCallback") - public Result etcpPaidCallback(@RequestParam Map 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 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 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; - } - } From 86ed159d98fe77fd756fbc51d1cf682b1a4da041 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Fri, 17 Aug 2018 11:34:33 +0800 Subject: [PATCH 17/30] =?UTF-8?q?[=E5=95=86=E9=93=BA=E5=95=86=E6=88=B7][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9]:=E5=95=86=E6=88=B7=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E6=97=B6=E7=8A=B6=E6=80=81=E4=B8=BA=E5=8F=AF=E7=94=A81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/simple/service/impl/WxMerchantServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxMerchantServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxMerchantServiceImpl.java index 70db66d25..be8cc5d64 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxMerchantServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxMerchantServiceImpl.java @@ -68,6 +68,7 @@ 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); @@ -127,7 +128,7 @@ public class WxMerchantServiceImpl implements WxMerchantService { //更新商铺状态 WxShop wxShop = new WxShop(); wxShop.setId(merchantShop.getShopId()); - wxShop.setStatus(0);//已出租 + wxShop.setStatus(0);//未出租 WxShopMapper.updateByPrimaryKeySelective(wxShop); } From 10f7488a0627564ef01ab3330b3f14684ab944e7 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Fri, 17 Aug 2018 12:23:55 +0800 Subject: [PATCH 18/30] =?UTF-8?q?[=E8=BD=A6=E6=B5=81][=E6=96=B0=E5=A2=9E]:?= =?UTF-8?q?Admin=E7=AB=AF=E8=BD=A6=E6=B5=81=E7=9B=B8=E5=85=B3=E5=9B=9E?= =?UTF-8?q?=E8=B0=83=E5=87=BD=E6=95=B0=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WxCUserCarController.java | 15 +- ...roller.java => WxCarCmdLogController.java} | 31 +- .../simple/controller/WxCarController.java | 318 +++++++++++++----- .../controller/WxCarCmdLogsController.java | 71 ---- .../simple/controller/WxCarController.java | 9 +- .../java/com/simple/common/ErrorCode.java | 5 +- .../{WxCarCmdLogs.java => WxCarCmdLog.java} | 37 +- .../java/com/simple/domain/po/WxPark.java | 17 +- .../java/com/simple/enums/EnumCarCmd.java | 41 +++ .../com/simple/mapper/WxCarCmdLogMapper.java | 17 + .../com/simple/mapper/WxCarCmdLogsMapper.java | 17 - ...gsService.java => WxCarCmdLogService.java} | 14 +- .../com/simple/service/WxParkService.java | 6 +- ...eImpl.java => WxCarCmdLogServiceImpl.java} | 26 +- .../service/impl/WxParkServiceImpl.java | 6 +- ...mdLogsMapper.xml => WxCarCmdLogMapper.xml} | 20 +- .../main/resources/mapper/WxParkMapper.xml | 8 +- 17 files changed, 402 insertions(+), 256 deletions(-) rename mallinkAdmin/src/main/java/com/simple/controller/{WxCarCmdLogsController.java => WxCarCmdLogController.java} (66%) delete mode 100644 mallinkBApi/src/main/java/com/simple/controller/WxCarCmdLogsController.java rename mallinkService/src/main/java/com/simple/domain/po/{WxCarCmdLogs.java => WxCarCmdLog.java} (81%) create mode 100644 mallinkService/src/main/java/com/simple/enums/EnumCarCmd.java create mode 100644 mallinkService/src/main/java/com/simple/mapper/WxCarCmdLogMapper.java delete mode 100644 mallinkService/src/main/java/com/simple/mapper/WxCarCmdLogsMapper.java rename mallinkService/src/main/java/com/simple/service/{WxCarCmdLogsService.java => WxCarCmdLogService.java} (60%) rename mallinkService/src/main/java/com/simple/service/impl/{WxCarCmdLogsServiceImpl.java => WxCarCmdLogServiceImpl.java} (51%) rename mallinkService/src/main/resources/mapper/{WxCarCmdLogsMapper.xml => WxCarCmdLogMapper.xml} (75%) diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxCUserCarController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxCUserCarController.java index 38faec706..8fab19e5e 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxCUserCarController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxCUserCarController.java @@ -2,6 +2,7 @@ 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; @@ -15,7 +16,7 @@ import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; @RestController -@RequestMapping("wxCUserCars") +@RequestMapping("wxCUserCar") public class WxCUserCarController extends BaseController { @Autowired @@ -28,16 +29,16 @@ public class WxCUserCarController extends BaseController @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 WxCUserCar wxCUserCars,Integer pageNum, Integer pageSize) { - if (null == wxCUserCars) wxCUserCars = new WxCUserCar(); - final PageInfo page = wxCUserCarService.listAsPage(wxCUserCars, pageNum, pageSize); + public ResultData list(@ModelAttribute WxCUserCar wxCUserCar,Integer pageNum, Integer pageSize) { + if (null == wxCUserCar) wxCUserCar = new WxCUserCar(); + final PageInfo page = wxCUserCarService.listAsPage(wxCUserCar, pageNum, pageSize); return new ResultData(page); } @ApiOperation("新增接口") @PostMapping("add") public ResultData add(@RequestBody WxCUserCar wxCUserCar) { - //Assert.notNull(wxCUserCars.getName(), "角色名不能为空"); + //Assert.notNull(wxCUserCar.getName(), "角色名不能为空"); //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); wxCUserCarService.saveOrUpdate(wxCUserCar); return new ResultData(); @@ -45,8 +46,8 @@ public class WxCUserCarController extends BaseController @ApiOperation("根据id更新接口") @PostMapping("update") - public ResultData update(@RequestBody WxCUserCar wxCUserCars) { - wxCUserCarService.saveOrUpdate(wxCUserCars); + public ResultData update(@RequestBody WxCUserCar wxCUserCar) { + wxCUserCarService.saveOrUpdate(wxCUserCar); return new ResultData(); } diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxCarCmdLogsController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxCarCmdLogController.java similarity index 66% rename from mallinkAdmin/src/main/java/com/simple/controller/WxCarCmdLogsController.java rename to mallinkAdmin/src/main/java/com/simple/controller/WxCarCmdLogController.java index 3eb4a4141..71a6f542e 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxCarCmdLogsController.java +++ b/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 page = wxCarCmdLogsService.listAsPage(wxCarCmdLogs, pageNum, pageSize); + public ResultData list(@ModelAttribute WxCarCmdLog wxCarCmdLogs,Integer pageNum, Integer pageSize) { + if (null == wxCarCmdLogs) wxCarCmdLogs = new WxCarCmdLog(); + final PageInfo 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)); } diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxCarController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxCarController.java index 617949098..affa5ca99 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxCarController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxCarController.java @@ -7,8 +7,10 @@ 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; @@ -25,7 +27,7 @@ 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); @@ -43,14 +45,19 @@ public class WxCarController extends BaseController @Autowired WxMerchantService wxMerchantService; + @Autowired + WxCarCmdLogService wxCarCmdLogService; + private WxPark getCurrentPark(MallUserInfo user) { - WxPark wxPark = wxParkService.getByTenantId(user.getTenantId()); + 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="") + @ApiOperation(value = "获取车场支持的厂家",notes="{}") @GetMapping("/getVendor") public ResultData getVendor() { MallUserInfo user = getUser(); @@ -102,6 +109,7 @@ public class WxCarController extends BaseController " ]}}\n") @PostMapping("/quanTemplate") public ResultData quanTemplate(Map paramMap) { + logger.info("quanTemplate: " + paramMap.toString()); MallUserInfo user = getUser(); /// 1, get mall's park WxPark park = getCurrentPark(user); @@ -109,6 +117,7 @@ public class WxCarController extends BaseController 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(); @@ -117,7 +126,7 @@ public class WxCarController extends BaseController String merchantNo = objParams.getString("merchantNo"); String merchantKey = objParams.getString("merchantKey"); String version = objParams.getString("version"); - String parkId = objParams.getString("parkId"); + String parkId = park.getParkId(); // bussinessId from 参数信息 String businessId = ""; // 优先从从商户表里取 @@ -131,6 +140,7 @@ public class WxCarController extends BaseController 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(), "优免券模板未发现"); } } @@ -154,105 +164,232 @@ public class WxCarController extends BaseController /** * 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(@RequestParam Map 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" } - */ + public Result etcpParkInCallback(@RequestBody Map 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 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" - } - */ + public Result etcpParkOutCallback(@RequestParam Map 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 param) { - /* - { - "plateNumber": "渝 ATX061", - "time": "2017-08-20 11:57:51" + public Result etcpUnbindCarCallBack(@RequestParam Map 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 param) { - /* - { - "plateNumber": "渝 ATX061", - "orderId": "fd92f645-880e-4c2a-9d7d-7081a2488181", - "fee": 7.65, - "paidServiceFee": 0.07, - "coupon": 0, - "time": "2017-08-20 11:57:51" + public Result etcpPaidCallback(@RequestParam Map 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 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" - } - */ + public Map tjdParkInCallback(@RequestParam Map 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; @@ -260,21 +397,40 @@ public class WxCarController extends BaseController /** * 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 param) { - /* - { - "tradeId": "5836b8b52ada463ebc6199579f029565", - "outDt": "20170319232020", - "lon": "74.000272", - "lat": "159.768703", - "wLon": "123.523032", - "wLat": "35.430735", - "parkAmount": "5.20" - } - */ + public Map tjdParkOutCallback(@RequestParam Map 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; diff --git a/mallinkBApi/src/main/java/com/simple/controller/WxCarCmdLogsController.java b/mallinkBApi/src/main/java/com/simple/controller/WxCarCmdLogsController.java deleted file mode 100644 index 3eb4a4141..000000000 --- a/mallinkBApi/src/main/java/com/simple/controller/WxCarCmdLogsController.java +++ /dev/null @@ -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 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)); - } - - - -} diff --git a/mallinkCApi/src/main/java/com/simple/controller/WxCarController.java b/mallinkCApi/src/main/java/com/simple/controller/WxCarController.java index 7a3ae01b0..dbd852832 100644 --- a/mallinkCApi/src/main/java/com/simple/controller/WxCarController.java +++ b/mallinkCApi/src/main/java/com/simple/controller/WxCarController.java @@ -9,7 +9,6 @@ import com.simple.common.ResultData; import com.simple.domain.po.*; import com.simple.enums.EnumCarVendor; import com.simple.service.WxCUserCarService; -import com.simple.service.WxCarCmdLogsService; import com.simple.service.WxMerchantService; import com.simple.service.WxParkService; import com.simple.utils.ETCPUtil; @@ -28,7 +27,7 @@ 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); @@ -47,13 +46,15 @@ public class WxCarController extends BaseController WxMerchantService wxMerchantService; private WxPark getCurrentPark(WxCUser user) { - WxPark wxPark = wxParkService.getByTenantId(user.getTenantId()); + 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="") + @ApiOperation(value = "获取车场支持的厂家",notes="返回\n{\"vendor\":integer}") @GetMapping("/getVendor") public ResultData getVendor() { WxCUser user = getUser(); diff --git a/mallinkService/src/main/java/com/simple/common/ErrorCode.java b/mallinkService/src/main/java/com/simple/common/ErrorCode.java index a1f94a842..fef937081 100644 --- a/mallinkService/src/main/java/com/simple/common/ErrorCode.java +++ b/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停车费抵扣失败"), + /** * 订单 */ diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxCarCmdLogs.java b/mallinkService/src/main/java/com/simple/domain/po/WxCarCmdLog.java similarity index 81% rename from mallinkService/src/main/java/com/simple/domain/po/WxCarCmdLogs.java rename to mallinkService/src/main/java/com/simple/domain/po/WxCarCmdLog.java index aa2e1da95..57e570503 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxCarCmdLogs.java +++ b/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 ids; + protected List ids; @Transient protected String sortColumns; @@ -32,10 +32,11 @@ public class WxCarCmdLogs implements Serializable { return sortColumns; } - public List getIds() { + public List getIds() { return ids; } - public void setIds(List ids) { + + public void setIds(List 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; diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxPark.java b/mallinkService/src/main/java/com/simple/domain/po/WxPark.java index e5bea1113..7a04b90f1 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxPark.java +++ b/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 ids; + protected List ids; @Transient protected String sortColumns; @@ -32,10 +32,11 @@ public class WxPark implements Serializable { return sortColumns; } - public List getIds() { + public List getIds() { return ids; } - public void setIds(List ids) { + + public void setIds(List 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") ; diff --git a/mallinkService/src/main/java/com/simple/enums/EnumCarCmd.java b/mallinkService/src/main/java/com/simple/enums/EnumCarCmd.java new file mode 100644 index 000000000..5cdf04a47 --- /dev/null +++ b/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; + } +} diff --git a/mallinkService/src/main/java/com/simple/mapper/WxCarCmdLogMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxCarCmdLogMapper.java new file mode 100644 index 000000000..e8017220f --- /dev/null +++ b/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 { + + List findList(WxCarCmdLog wxCarCmdLog); + + + + + + +} diff --git a/mallinkService/src/main/java/com/simple/mapper/WxCarCmdLogsMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxCarCmdLogsMapper.java deleted file mode 100644 index 44f6af535..000000000 --- a/mallinkService/src/main/java/com/simple/mapper/WxCarCmdLogsMapper.java +++ /dev/null @@ -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 { - - List findList(WxCarCmdLogs wxCarCmdLogs); - - - - - - -} diff --git a/mallinkService/src/main/java/com/simple/service/WxCarCmdLogsService.java b/mallinkService/src/main/java/com/simple/service/WxCarCmdLogService.java similarity index 60% rename from mallinkService/src/main/java/com/simple/service/WxCarCmdLogsService.java rename to mallinkService/src/main/java/com/simple/service/WxCarCmdLogService.java index 94986e923..1316d8d7f 100644 --- a/mallinkService/src/main/java/com/simple/service/WxCarCmdLogsService.java +++ b/mallinkService/src/main/java/com/simple/service/WxCarCmdLogService.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.WxCarCmdLog; -public interface WxCarCmdLogsService { +public interface WxCarCmdLogService { /** * 根据实体查询分页列表 * * @param record - * @param pageIndex - * @param pageSize + * @param offset + * @param limit * @return */ - PageInfo listAsPage(WxCarCmdLogs record, Integer pageIndex, Integer pageSize); + PageInfo listAsPage(WxCarCmdLog record, Integer pageIndex, Integer pageSize); /** * 根据Id获得实体 @@ -22,14 +22,14 @@ public interface WxCarCmdLogsService { * @param id * @return */ - WxCarCmdLogs getById(Long id); + WxCarCmdLog getById(Long id); /** * 保存或更新实体 * * @param record */ - void saveOrUpdate(WxCarCmdLogs record); + void saveOrUpdate(WxCarCmdLog record); /** * 根据Id删除实体 diff --git a/mallinkService/src/main/java/com/simple/service/WxParkService.java b/mallinkService/src/main/java/com/simple/service/WxParkService.java index 425418f76..34a2952a6 100644 --- a/mallinkService/src/main/java/com/simple/service/WxParkService.java +++ b/mallinkService/src/main/java/com/simple/service/WxParkService.java @@ -25,12 +25,12 @@ public interface WxParkService { WxPark getById(Long id); /** - * 根据tenantId获得实体 + * 根据WxPark获得实体 * - * @param tenantId + * @param record * @return */ - WxPark getByTenantId(String tenantId); + WxPark getByObj(WxPark record); /** * 保存或更新实体 diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxCarCmdLogsServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxCarCmdLogServiceImpl.java similarity index 51% rename from mallinkService/src/main/java/com/simple/service/impl/WxCarCmdLogsServiceImpl.java rename to mallinkService/src/main/java/com/simple/service/impl/WxCarCmdLogServiceImpl.java index 1c61ed47c..7a89da373 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxCarCmdLogsServiceImpl.java +++ b/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.WxCarCmdLogs; -import com.simple.mapper.WxCarCmdLogsMapper; -import com.simple.service.WxCarCmdLogsService; +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 WxCarCmdLogsServiceImpl implements WxCarCmdLogsService { +public class WxCarCmdLogServiceImpl implements WxCarCmdLogService { @Autowired - WxCarCmdLogsMapper wxCarCmdLogsMapper; + WxCarCmdLogMapper wxCarCmdLogMapper; @Override - public PageInfo listAsPage(WxCarCmdLogs record, Integer pageIndex, Integer pageSize) { - return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCarCmdLogsMapper.findList(record)); + public PageInfo listAsPage(WxCarCmdLog record, Integer pageIndex, Integer pageSize) { + return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCarCmdLogMapper.findList(record)); } @Override - public WxCarCmdLogs getById(Long id) { - return wxCarCmdLogsMapper.selectByPrimaryKey(id); + public WxCarCmdLog getById(Long id) { + return wxCarCmdLogMapper.selectByPrimaryKey(id); } @Override - public void saveOrUpdate(WxCarCmdLogs 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()); - wxCarCmdLogsMapper.insertSelective(record); + wxCarCmdLogMapper.insertSelective(record); } else { - wxCarCmdLogsMapper.updateByPrimaryKeySelective(record); + wxCarCmdLogMapper.updateByPrimaryKeySelective(record); } } @Override public void deleteById(Long id) { - wxCarCmdLogsMapper.deleteByPrimaryKey(id); + wxCarCmdLogMapper.deleteByPrimaryKey(id); } diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxParkServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxParkServiceImpl.java index 60f304218..e9926c86c 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxParkServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxParkServiceImpl.java @@ -28,10 +28,8 @@ public class WxParkServiceImpl implements WxParkService { } @Override - public WxPark getByTenantId(String tenantId) { - WxPark wxPark = new WxPark(); - wxPark.setTenantId(tenantId); - return wxParkMapper.selectOne(wxPark); + public WxPark getByObj(WxPark record) { + return wxParkMapper.selectOne(record); } @Override diff --git a/mallinkService/src/main/resources/mapper/WxCarCmdLogsMapper.xml b/mallinkService/src/main/resources/mapper/WxCarCmdLogMapper.xml similarity index 75% rename from mallinkService/src/main/resources/mapper/WxCarCmdLogsMapper.xml rename to mallinkService/src/main/resources/mapper/WxCarCmdLogMapper.xml index f1a0f5690..12e02bc44 100644 --- a/mallinkService/src/main/resources/mapper/WxCarCmdLogsMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCarCmdLogMapper.xml @@ -1,18 +1,18 @@ - - + + - - + + - `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` @@ -28,13 +28,13 @@ - - and `support_vendor` = #{supportVendor} + + and `vendor_type` = #{vendorType} - and `cmd_type` like concat('%', #{cmdType},'%') + and `cmd_type` = #{cmdType} @@ -61,8 +61,8 @@ order by ${sortColumns} - + select from wx_car_cmd_log diff --git a/mallinkService/src/main/resources/mapper/WxParkMapper.xml b/mallinkService/src/main/resources/mapper/WxParkMapper.xml index 42830ebb7..403962394 100644 --- a/mallinkService/src/main/resources/mapper/WxParkMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxParkMapper.xml @@ -9,12 +9,13 @@ + - `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` @@ -55,6 +56,11 @@ + + and `park_id` like concat('%', #{parkId},'%') + + + and `vendor_type` = #{vendorType} From e6e00e19bc4288d6c64c7ef595967c26bb0ddd22 Mon Sep 17 00:00:00 2001 From: hupeng Date: Fri, 17 Aug 2018 13:09:32 +0800 Subject: [PATCH 19/30] =?UTF-8?q?[=E6=94=AF=E4=BB=98][=E6=96=B0=E5=A2=9E]:?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=88=86=E8=B4=A6=E6=9C=8D=E5=8A=A1,?= =?UTF-8?q?=E6=9C=AA=E5=AE=8C,=E5=BE=85=E6=B7=BB=E5=8A=A0=E5=88=86?= =?UTF-8?q?=E8=B4=A6=E6=8E=A5=E5=8F=97=E8=80=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/simple/common/ErrorCode.java | 4 + .../domain/po/WxProfitSharingOrder.java | 222 ++++++++++++++++++ .../domain/po/WxProfitSharingReceiver.java | 202 ++++++++++++++++ .../domain/po/WxProfitSharingResult.java | 182 ++++++++++++++ .../java/com/simple/enums/EnumPayDomain.java | 35 +++ .../simple/enums/EnumProfitSharingStatus.java | 40 ++++ .../mapper/WxProfitSharingOrderMapper.java | 17 ++ .../mapper/WxProfitSharingReceiverMapper.java | 17 ++ .../mapper/WxProfitSharingResultMapper.java | 17 ++ .../java/com/simple/pay/WxProfitSharing.java | 48 ++++ .../java/com/simple/pay/WxProfitSharingP.java | 89 +++++++ .../service/WxProfitSharingOrderService.java | 53 +++++ .../WxProfitSharingReceiverService.java | 48 ++++ .../service/WxProfitSharingResultService.java | 48 ++++ .../impl/WxProfitSharingOrderServiceImpl.java | 168 +++++++++++++ .../WxProfitSharingReceiverServiceImpl.java | 54 +++++ .../WxProfitSharingResultServiceImpl.java | 54 +++++ .../mapper/WxProfitSharingOrderMapper.xml | 110 +++++++++ .../mapper/WxProfitSharingReceiverMapper.xml | 98 ++++++++ .../mapper/WxProfitSharingResultMapper.xml | 86 +++++++ 20 files changed, 1592 insertions(+) create mode 100644 mallinkService/src/main/java/com/simple/domain/po/WxProfitSharingOrder.java create mode 100644 mallinkService/src/main/java/com/simple/domain/po/WxProfitSharingReceiver.java create mode 100644 mallinkService/src/main/java/com/simple/domain/po/WxProfitSharingResult.java create mode 100644 mallinkService/src/main/java/com/simple/enums/EnumPayDomain.java create mode 100644 mallinkService/src/main/java/com/simple/enums/EnumProfitSharingStatus.java create mode 100644 mallinkService/src/main/java/com/simple/mapper/WxProfitSharingOrderMapper.java create mode 100644 mallinkService/src/main/java/com/simple/mapper/WxProfitSharingReceiverMapper.java create mode 100644 mallinkService/src/main/java/com/simple/mapper/WxProfitSharingResultMapper.java create mode 100644 mallinkService/src/main/java/com/simple/pay/WxProfitSharing.java create mode 100644 mallinkService/src/main/java/com/simple/pay/WxProfitSharingP.java create mode 100644 mallinkService/src/main/java/com/simple/service/WxProfitSharingOrderService.java create mode 100644 mallinkService/src/main/java/com/simple/service/WxProfitSharingReceiverService.java create mode 100644 mallinkService/src/main/java/com/simple/service/WxProfitSharingResultService.java create mode 100644 mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java create mode 100644 mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingReceiverServiceImpl.java create mode 100644 mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingResultServiceImpl.java create mode 100644 mallinkService/src/main/resources/mapper/WxProfitSharingOrderMapper.xml create mode 100644 mallinkService/src/main/resources/mapper/WxProfitSharingReceiverMapper.xml create mode 100644 mallinkService/src/main/resources/mapper/WxProfitSharingResultMapper.xml diff --git a/mallinkService/src/main/java/com/simple/common/ErrorCode.java b/mallinkService/src/main/java/com/simple/common/ErrorCode.java index fef937081..e00c3bee2 100644 --- a/mallinkService/src/main/java/com/simple/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/simple/common/ErrorCode.java @@ -114,6 +114,10 @@ public enum ErrorCode{ API_KEY_NOT_FOUND(12023, "支付密钥未配置"), CERT_PATH_NOT_FOUND(12024, "双向证书未配置"), + PROFIT_SHARING_REQUEST_FAILED(12030, "分账请求失败"), + PROFIT_SHARING_APPLY_FAILED(12031, "分账请求业务失败"), + PROFIT_SHARING_RETURN_INVALID(12022, "分账请求返回校验失败"), + /** * 核销 */ diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxProfitSharingOrder.java b/mallinkService/src/main/java/com/simple/domain/po/WxProfitSharingOrder.java new file mode 100644 index 000000000..f25c11f52 --- /dev/null +++ b/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 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 getIds() { + return ids; + } + + public void setIds(List 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 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)); + } + } +} diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxProfitSharingReceiver.java b/mallinkService/src/main/java/com/simple/domain/po/WxProfitSharingReceiver.java new file mode 100644 index 000000000..57f8e7f64 --- /dev/null +++ b/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 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 getIds() { + return ids; + } + + public void setIds(List 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 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)); + } + } +} diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxProfitSharingResult.java b/mallinkService/src/main/java/com/simple/domain/po/WxProfitSharingResult.java new file mode 100644 index 000000000..23b40c987 --- /dev/null +++ b/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 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 getIds() { + return ids; + } + + public void setIds(List 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 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)); + } + } +} diff --git a/mallinkService/src/main/java/com/simple/enums/EnumPayDomain.java b/mallinkService/src/main/java/com/simple/enums/EnumPayDomain.java new file mode 100644 index 000000000..a8bbe060b --- /dev/null +++ b/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; + } +} diff --git a/mallinkService/src/main/java/com/simple/enums/EnumProfitSharingStatus.java b/mallinkService/src/main/java/com/simple/enums/EnumProfitSharingStatus.java new file mode 100644 index 000000000..39f40f88e --- /dev/null +++ b/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; + } +} diff --git a/mallinkService/src/main/java/com/simple/mapper/WxProfitSharingOrderMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxProfitSharingOrderMapper.java new file mode 100644 index 000000000..924bf871a --- /dev/null +++ b/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 { + + List findList(WxProfitSharingOrder wxProfitSharingOrder); + + + + + + +} diff --git a/mallinkService/src/main/java/com/simple/mapper/WxProfitSharingReceiverMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxProfitSharingReceiverMapper.java new file mode 100644 index 000000000..ecfc3c5b3 --- /dev/null +++ b/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 { + + List findList(WxProfitSharingReceiver wxProfitSharingReceiver); + + + + + + +} diff --git a/mallinkService/src/main/java/com/simple/mapper/WxProfitSharingResultMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxProfitSharingResultMapper.java new file mode 100644 index 000000000..7ee92d407 --- /dev/null +++ b/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 { + + List findList(WxProfitSharingResult wxProfitSharingResult); + + + + + + +} diff --git a/mallinkService/src/main/java/com/simple/pay/WxProfitSharing.java b/mallinkService/src/main/java/com/simple/pay/WxProfitSharing.java new file mode 100644 index 000000000..348761f4f --- /dev/null +++ b/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 params) { + return doPost(PROFIT_SHARING_URL, params); + } + + /** + * 分账查询 + * @param params 请求参数 + * @return + */ + public static String queryOrder(Map params) { + return doPost(PROFIT_SHARING_URL, params); + } + + + public static String doPost(String url, Map params) { + return HttpUtil.payPost(url, WxPayment.toXml(params)); + } +} diff --git a/mallinkService/src/main/java/com/simple/pay/WxProfitSharingP.java b/mallinkService/src/main/java/com/simple/pay/WxProfitSharingP.java new file mode 100644 index 000000000..25b53909f --- /dev/null +++ b/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 setReceivers() { + return receivers; + } + + public void getReceivers(String receivers) { + this.receivers = receivers; + } + +} diff --git a/mallinkService/src/main/java/com/simple/service/WxProfitSharingOrderService.java b/mallinkService/src/main/java/com/simple/service/WxProfitSharingOrderService.java new file mode 100644 index 000000000..776bf4e3a --- /dev/null +++ b/mallinkService/src/main/java/com/simple/service/WxProfitSharingOrderService.java @@ -0,0 +1,53 @@ +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.WxOrder; +import com.simple.domain.po.WxProfitSharingOrder; + +public interface WxProfitSharingOrderService { + + /** + * 根据实体查询分页列表 + * + * @param record + * @param offset + * @param limit + * @return + */ + PageInfo 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 ResultData createSharingOrder(WxAppinfo appInfo, WxOrder wxOrder); + + + + +} diff --git a/mallinkService/src/main/java/com/simple/service/WxProfitSharingReceiverService.java b/mallinkService/src/main/java/com/simple/service/WxProfitSharingReceiverService.java new file mode 100644 index 000000000..49ec0d3ed --- /dev/null +++ b/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 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); + + + + + + + + +} diff --git a/mallinkService/src/main/java/com/simple/service/WxProfitSharingResultService.java b/mallinkService/src/main/java/com/simple/service/WxProfitSharingResultService.java new file mode 100644 index 000000000..808391d69 --- /dev/null +++ b/mallinkService/src/main/java/com/simple/service/WxProfitSharingResultService.java @@ -0,0 +1,48 @@ +package com.simple.service; + +import java.util.*; +import com.github.pagehelper.PageInfo; +import com.simple.domain.po.WxProfitSharingResult; + +public interface WxProfitSharingResultService { + + /** + * 根据实体查询分页列表 + * + * @param record + * @param offset + * @param limit + * @return + */ + PageInfo listAsPage(WxProfitSharingResult record, Integer pageIndex, Integer pageSize); + + /** + * 根据Id获得实体 + * + * @param id + * @return + */ + WxProfitSharingResult getById(Long id); + + /** + * 保存或更新实体 + * + * @param record + */ + void saveOrUpdate(WxProfitSharingResult record); + + /** + * 根据Id删除实体 + * + * @param id + */ + void deleteById(Long id); + + + + + + + + +} diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java new file mode 100644 index 000000000..a7554af99 --- /dev/null +++ b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java @@ -0,0 +1,168 @@ +package com.simple.service.impl; + +import java.util.*; + +import com.alibaba.fastjson.JSON; +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.WxAppinfo; +import com.simple.domain.po.WxOrder; +import com.simple.domain.po.WxPayAccount; +import com.simple.domain.po.WxProfitSharingOrder; +import com.simple.enums.EnumPayDomain; +import com.simple.enums.EnumProfitSharingStatus; +import com.simple.exception.MallinkException; +import com.simple.mapper.WxAppinfoMapper; +import com.simple.mapper.WxPayAccountMapper; +import com.simple.mapper.WxProfitSharingOrderMapper; +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 + WxProfitSharingOrderMapper wxOrderMapper; + + + 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 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); + } + + @Override + public ResultData createSharingOrder(WxAppinfo subAppInfo, WxOrder wxOrder) { + final IdWorker idworker = IdWorker.get(); + WxProfitSharingOrder record = new WxProfitSharingOrder(); + try { + //是否已创建分账订单 + Date currentDate = new Date(); + record.setOrderId(wxOrder.getId().toString()); + record = wxProfitSharingOrderMapper.selectOne(record); + if (record == null) { + //创建分账订单 + record.setId(idworker.nextId()); + record.setTenantId(wxOrder.getTenantId()); + record.setOrderId(wxOrder.getId().toString()); + record.setPayAmount(wxOrder.getPayment()); + //record.setMerchantId(); + record.setCreateTime(currentDate); + record.setUpdateTime(currentDate); + record.setPayTimeStart(currentDate); + record.setPayTimeEnd(currentDate); + + if (wxProfitSharingOrderMapper.insertSelective(record) != 1) { + throw new MallinkException(ErrorCode.DB_FAIL); + } + } + + WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(subAppInfo.getPayId()); + WxPayAccount mainPayAccount = wxPayAccountMapper.selectByPrimaryKey(EnumPayDomain.PAY_DOMAIN_MASTER_ACCOUNT_ID.getCode()); + WxAppinfo mainAppInfo = wxAppinfoMapper.selectByPrimaryKey(EnumPayDomain.PAY_DOMAIN_MASTER_APPINFO_ID.getCode()); + + //分账提交 + WxProfitSharingP wxProfitSharingP = new WxProfitSharingP(); + wxProfitSharingP.setAppid(mainAppInfo.getAppId()); + wxProfitSharingP.setMch_id(mainPayAccount.getMchId()); + wxProfitSharingP.setSub_appid(subAppInfo.getAppId()); + wxProfitSharingP.setMch_id(payAccount.getMchId()); + wxProfitSharingP.setSub_mch_id(payAccount.getMchId()); + wxProfitSharingP.setNonce_str(Utility.generate32UUID()); + wxProfitSharingP.setTransaction_id(wxOrder.getTenantId()); + wxProfitSharingP.setOut_trade_no(record.getId().toString()); + + //添加分账接受方 + + + + wxProfitSharingP.setSign(WxPayment.createSign(BeanUtils.toStringMap(wxProfitSharingP), payAccount.getApiKey())); + String response = WxProfitSharing.pushOrder(BeanUtils.toStringMap(wxProfitSharingP)); + + Map returnMap = WxPayment.xmlToMap(response); + String return_code = returnMap.get("return_code"); + if (!"SUCCESS".equals(return_code)) { + record.setSharingStatus(EnumProfitSharingStatus.PROFIT_SHARING_REQ_FAILED.getCode()); + wxProfitSharingOrderMapper.updateByPrimaryKey(record); + throw new MallinkException(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(), returnMap.get("return_msg")); + } + + if (!WxPayment.verifyNotify(returnMap,payAccount.getApiKey())){ + throw new MallinkException(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()); + wxProfitSharingOrderMapper.updateByPrimaryKey(record); + throw new MallinkException(ErrorCode.PROFIT_SHARING_APPLY_FAILED.getCode(), returnMap.get("result_msg")); + } + + record.setSharingOrderId(returnMap.get("order_id")); + record.setSharingStatus(EnumProfitSharingStatus.PROFIT_SHARING_ACCEPTED.getCode()); + wxProfitSharingOrderMapper.updateByPrimaryKey(record); + + return new ResultData(200, "分账申请成功", 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()); + } + } +} diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingReceiverServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingReceiverServiceImpl.java new file mode 100644 index 000000000..bc96d5222 --- /dev/null +++ b/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 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); + } + + + + + + + + +} diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingResultServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingResultServiceImpl.java new file mode 100644 index 000000000..bdc71de07 --- /dev/null +++ b/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 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); + } + + + + + + + + +} diff --git a/mallinkService/src/main/resources/mapper/WxProfitSharingOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxProfitSharingOrderMapper.xml new file mode 100644 index 000000000..832c2c2a1 --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxProfitSharingOrderMapper.xml @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + `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` + + + + where 1 = 1 + + + and `id` = #{id} + + + + + and `tenant_id` = #{tenantId} + + + + + and `merchant_id` = #{merchantId} + + + + + and `order_id` = #{orderId} + + + + + and `pay_amount` = #{payAmount} + + + + + and `pay_time_end` = #{payTimeEnd} + + + + + and `pay_time_start` = #{payTimeStart} + + + + + and `transaction_id` like concat('%', #{transactionId},'%') + + + + + and `sharing_order_id` like concat('%', #{sharingOrderId},'%') + + + + + and `error_msg` like concat('%', #{errorMsg},'%') + + + + + and `sharing_status` like concat('%', #{sharingStatus},'%') + + + + + and `update_time` = #{updateTime} + + + + + and `create_time` = #{createTime} + + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxProfitSharingReceiverMapper.xml b/mallinkService/src/main/resources/mapper/WxProfitSharingReceiverMapper.xml new file mode 100644 index 000000000..caa6c998e --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxProfitSharingReceiverMapper.xml @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + `id`,`merchant_id`,`receiver_type`,`receiver_account`,`receiver_comments`,`create_time`,`update_time`,`sharing_type`,`bank_no`,`true_name`,`bank_code` + + + + where 1 = 1 + + + and `id` = #{id} + + + + + and `merchant_id` = #{merchantId} + + + + + and `receiver_type` = #{receiverType} + + + + + and `receiver_account` like concat('%', #{receiverAccount},'%') + + + + + and `receiver_comments` like concat('%', #{receiverComments},'%') + + + + + and `create_time` = #{createTime} + + + + + and `update_time` = #{updateTime} + + + + + and `sharing_type` = #{sharingType} + + + + + and `bank_no` like concat('%', #{bankNo},'%') + + + + + and `true_name` like concat('%', #{trueName},'%') + + + + + and `bank_code` like concat('%', #{bankCode},'%') + + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxProfitSharingResultMapper.xml b/mallinkService/src/main/resources/mapper/WxProfitSharingResultMapper.xml new file mode 100644 index 000000000..f361df0e6 --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxProfitSharingResultMapper.xml @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + `id`,`sharing_order_id`,`sharing_receiver_id`,`pay_amount`,`update_time`,`create_time`,`sharing_status`,`finish_time`,`failed_reason` + + + + where 1 = 1 + + + and `id` = #{id} + + + + + and `sharing_order_id` = #{sharingOrderId} + + + + + and `sharing_receiver_id` = #{sharingReceiverId} + + + + + and `pay_amount` = #{payAmount} + + + + + and `update_time` = #{updateTime} + + + + + and `create_time` = #{createTime} + + + + + and `sharing_status` = #{sharingStatus} + + + + + and `finish_time` like concat('%', #{finishTime},'%') + + + + + and `failed_reason` like concat('%', #{failedReason},'%') + + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + + + + + + From 75d0ca9a8bffa2470a73be5f3d6e4c7f54ea2f71 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Fri, 17 Aug 2018 13:50:14 +0800 Subject: [PATCH 20/30] =?UTF-8?q?[di=E8=AE=A2=E5=8D=95][=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?]:=E8=AE=A2=E5=8D=95=E6=9F=A5=E8=AF=A2=EF=BC=8C=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E8=AF=A6=E6=83=85=E6=8E=A5=E5=8F=A3=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../simple/controller/WxOrderController.java | 76 ++++++++++++------ .../simple/controller/WxOrderController.java | 77 ++++++++++--------- 2 files changed, 95 insertions(+), 58 deletions(-) diff --git a/mallinkBApi/src/main/java/com/simple/controller/WxOrderController.java b/mallinkBApi/src/main/java/com/simple/controller/WxOrderController.java index 99cb4d533..18c59d800 100644 --- a/mallinkBApi/src/main/java/com/simple/controller/WxOrderController.java +++ b/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> 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 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 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 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(); } } diff --git a/mallinkCApi/src/main/java/com/simple/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/simple/controller/WxOrderController.java index 630a68b4c..26e80f761 100644 --- a/mallinkCApi/src/main/java/com/simple/controller/WxOrderController.java +++ b/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,56 +52,62 @@ 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 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 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(value = "分页订单列表接口", notes = "{\"pageNum\":Integer,\"pageSize\":Integer,\"orderStatus\":\"0-已下单/待付款;1-已支付;2-已取消(限定时间内未付款)\"}") @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(); + public ResultData list(@RequestBody Map paramMap) { + Integer pageNum = (Integer) paramMap.get("pageNum"); + Integer pageSize = (Integer) paramMap.get("pageSize"); + Integer orderStatus = (Integer) paramMap.get("orderStatus"); + if (pageNum <= 0) + pageNum = 1; + if (pageSize <= 0) + pageSize = 10; // c端用户应该只能看到自己的订单 WxCUser user = getUser(); - wxOrder.setCUserId(user.getId()); - final PageInfo page = wxOrderService.listAsPage(wxOrder, pageNum, pageSize); + WxOrder wxOrderQ = new WxOrder(); + wxOrderQ.setCUserId(user.getId()); + wxOrderQ.setOrderStatus(orderStatus); + final PageInfo page = wxOrderService.listAsPage(wxOrderQ, pageNum, pageSize); return new ResultData(page); } From 6dd94065cc652fb2d783ba2a4c10135688b33749 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Fri, 17 Aug 2018 14:08:56 +0800 Subject: [PATCH 21/30] =?UTF-8?q?[=E8=AE=A2=E5=8D=95][=E4=BF=AE=E5=A4=8D]:?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=B7=BB=E5=8A=A0merchantId,c=E7=AB=AF?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E6=8E=A5=E5=8F=A3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../simple/controller/WxOrderController.java | 33 +++++++++++-------- .../java/com/simple/domain/po/WxOrder.java | 10 ++++++ .../service/impl/WxOrderServiceImpl.java | 1 + .../main/resources/mapper/WxOrderMapper.xml | 8 ++++- 4 files changed, 38 insertions(+), 14 deletions(-) diff --git a/mallinkCApi/src/main/java/com/simple/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/simple/controller/WxOrderController.java index 26e80f761..c9a8c059f 100644 --- a/mallinkCApi/src/main/java/com/simple/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/simple/controller/WxOrderController.java @@ -92,16 +92,14 @@ public class WxOrderController extends BaseController { return new ResultData(); } - @ApiOperation(value = "分页订单列表接口", notes = "{\"pageNum\":Integer,\"pageSize\":Integer,\"orderStatus\":\"0-已下单/待付款;1-已支付;2-已取消(限定时间内未付款)\"}") + @ApiOperation("分页订单列表接口") @GetMapping("list") - public ResultData list(@RequestBody Map paramMap) { - Integer pageNum = (Integer) paramMap.get("pageNum"); - Integer pageSize = (Integer) paramMap.get("pageSize"); - Integer orderStatus = (Integer) paramMap.get("orderStatus"); - if (pageNum <= 0) - pageNum = 1; - if (pageSize <= 0) - pageSize = 10; + @ApiImplicitParams({ + @ApiImplicitParam(name="pageNum",value="页数",dataType="int", paramType = "query",required=true), + @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 wxOrderQ = new WxOrder(); @@ -111,11 +109,20 @@ public class WxOrderController extends BaseController { 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 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)); } diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxOrder.java b/mallinkService/src/main/java/com/simple/domain/po/WxOrder.java index 4959b3331..0190585d1 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxOrder.java +++ b/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") diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxOrderServiceImpl.java index 4306270ac..1773ec1e3 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxOrderServiceImpl.java @@ -158,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()); diff --git a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml index 0ad1e0fc4..785b57305 100644 --- a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml @@ -6,6 +6,7 @@ + @@ -17,7 +18,7 @@ - `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` @@ -43,6 +44,11 @@ + + and `merchant_id` = #{merchantId} + + + and `b_user_id` = #{bUserId} From dd3624faa1a15e8b787058768cf29a4582e84a6c Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Fri, 17 Aug 2018 14:59:39 +0800 Subject: [PATCH 22/30] =?UTF-8?q?[c=E7=AB=AF=E5=88=B8=E6=8E=A5=E5=8F=A3][?= =?UTF-8?q?=E6=B8=85=E7=90=86]:=E5=88=A0=E9=99=A4c=E7=AB=AF=E4=B8=8D?= =?UTF-8?q?=E7=94=A8=E7=9A=84=E5=88=B8=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../simple/controller/WxCouponController.java | 50 +++++-------------- 1 file changed, 12 insertions(+), 38 deletions(-) diff --git a/mallinkCApi/src/main/java/com/simple/controller/WxCouponController.java b/mallinkCApi/src/main/java/com/simple/controller/WxCouponController.java index b653202e5..3af45bf88 100644 --- a/mallinkCApi/src/main/java/com/simple/controller/WxCouponController.java +++ b/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 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)); } - } From 90c71b7ed31ae469df4ec1149a3601ba9a0f23ce Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Fri, 17 Aug 2018 15:03:27 +0800 Subject: [PATCH 23/30] =?UTF-8?q?[b=E7=AB=AF=E6=8E=A5=E5=8F=A3][=E6=B8=85?= =?UTF-8?q?=E7=90=86]:=E6=95=B4=E7=90=86couponOrder=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WxCouponOrderController.java | 75 +++++++------------ 1 file changed, 28 insertions(+), 47 deletions(-) diff --git a/mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java b/mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java index 82dfed688..873d85564 100644 --- a/mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java +++ b/mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java @@ -20,57 +20,13 @@ import java.util.Map; @RestController @RequestMapping("/api/couponOrder") -@Api(description="核销和用户卡券查询接口") -public class WxCouponOrderController extends BaseController -{ +@Api(description = "核销和用户卡券查询接口") +public class WxCouponOrderController extends BaseController { private Logger logger = Logger.getLogger(WxCouponOrderController.class); - @Autowired + @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)}) - public ResultData list(@ModelAttribute WxCouponOrder wxCouponOrder, Integer pageNum, Integer pageSize) { - if (null == wxCouponOrder) wxCouponOrder = new WxCouponOrder(); - final PageInfo page = wxCouponOrderService.listAsPage(wxCouponOrder, pageNum, pageSize); - return new ResultData(page); - } - - @ApiOperation("新增接口") - @PostMapping("add") - public ResultData add(@RequestBody WxCouponOrder wxCouponOrder) { - //Assert.notNull(wxCouponOrder.getName(), "角色名不能为空"); - //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); - wxCouponOrderService.saveOrUpdate(wxCouponOrder); - return new ResultData(); - } - - @ApiOperation("根据id更新接口") - @PostMapping("update") - public ResultData update(@RequestBody WxCouponOrder wxCouponOrder) { - wxCouponOrderService.saveOrUpdate(wxCouponOrder); - return new ResultData(); - } - - @ApiOperation("根据id删除接口") - @GetMapping("/del") - @ApiImplicitParam(name="id",value="id",dataType="Long", paramType = "query",required=true) - public ResultData delete(Long id) { - wxCouponOrderService.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,"查询成功",wxCouponOrderService.getById(id)); - } - @ApiOperation(value = "核销接口", notes = "{\"couponOrderId\":\"string\"}") @PostMapping("verify") public ResultData verify(@RequestBody Map paramMap) { @@ -127,4 +83,29 @@ public class WxCouponOrderController extends BaseController 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 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)); + } } From efbc40eaa037a1834ab5aa03bb2c0ba8cf3ad14b Mon Sep 17 00:00:00 2001 From: gongbiao Date: Fri, 17 Aug 2018 15:13:47 +0800 Subject: [PATCH 24/30] =?UTF-8?q?[=E5=95=86=E9=93=BA=E5=95=86=E6=88=B7][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9]:=E5=95=86=E6=88=B7=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E6=97=B6=E8=BF=94=E5=9B=9E=E6=95=B0=E6=8D=AE=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/simple/domain/po/WxMerchant.java | 13 ++++++++++++- .../service/impl/WxMerchantServiceImpl.java | 16 +++++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxMerchant.java b/mallinkService/src/main/java/com/simple/domain/po/WxMerchant.java index e7fe5b37d..3e646af1c 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxMerchant.java +++ b/mallinkService/src/main/java/com/simple/domain/po/WxMerchant.java @@ -42,7 +42,10 @@ public class WxMerchant implements Serializable { private String userids; @Transient private String shopids; - + + @Transient + private List shops; + /*租户ID**/ @io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId") private String tenantId; @@ -171,6 +174,14 @@ public class WxMerchant implements Serializable { this.shopids = shopids; } + public List getShops() { + return shops; + } + + public void setShops(List shops) { + this.shops = shops; + } + public static enum Field { Id_ASC("`id` ASC"),Id_DESC("`id` DESC") diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxMerchantServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxMerchantServiceImpl.java index be8cc5d64..ffed1a1db 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxMerchantServiceImpl.java +++ b/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,7 +43,20 @@ 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 shops = new ArrayList<>(); + + List wxMerchantShopList = wxMerchantShopMapper.findList(wxMerchantShop); + for(WxMerchantShop merchantShop:wxMerchantShopList){ + WxShop wxShop = WxShopMapper.selectByPrimaryKey(merchantShop.getShopId()); + if(wxShop!=null) + shops.add(wxShop); + } + + wxMerchant.setShops(shops); + return wxMerchant; } From 169bc1e50cd88777e97d1f4a25ed0ddfcc4cbb2b Mon Sep 17 00:00:00 2001 From: gongbiao Date: Fri, 17 Aug 2018 16:03:51 +0800 Subject: [PATCH 25/30] =?UTF-8?q?[=E5=95=86=E9=93=BA=E5=95=86=E6=88=B7][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9]:=E5=95=86=E6=88=B7=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E6=97=B6=E8=BF=94=E5=9B=9E=E6=95=B0=E6=8D=AE=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/simple/domain/po/WxMerchant.java | 12 ++++++------ .../simple/service/impl/WxMerchantServiceImpl.java | 8 ++++---- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxMerchant.java b/mallinkService/src/main/java/com/simple/domain/po/WxMerchant.java index 3e646af1c..d30697e96 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxMerchant.java +++ b/mallinkService/src/main/java/com/simple/domain/po/WxMerchant.java @@ -39,9 +39,9 @@ public class WxMerchant implements Serializable { } @Transient - private String userids; + private List userids; @Transient - private String shopids; + private List shopids; @Transient private List shops; @@ -158,19 +158,19 @@ public class WxMerchant implements Serializable { this.status = status; } - public String getUserids() { + public List getUserids() { return userids; } - public void setUserids(String userids) { + public void setUserids(List userids) { this.userids = userids; } - public String getShopids() { + public List getShopids() { return shopids; } - public void setShopids(String shopids) { + public void setShopids(List shopids) { this.shopids = shopids; } diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxMerchantServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxMerchantServiceImpl.java index ffed1a1db..4f4b4bc9a 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxMerchantServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxMerchantServiceImpl.java @@ -88,7 +88,7 @@ public class WxMerchantServiceImpl implements WxMerchantService { wxMerchantMapper.insertSelective(wxMerchant); //保存商户商铺的关联 - List shopidlist = JSONArray.parseArray(wxMerchant.getShopids(), Long.class); + List shopidlist = wxMerchant.getShopids(); for(Long shopid:shopidlist){ WxMerchantShop wxMerchantShop = new WxMerchantShop(); wxMerchantShop.setId(idWorker.nextId()); @@ -110,7 +110,7 @@ public class WxMerchantServiceImpl implements WxMerchantService { } //保存商户关联用户 - List useridlist = JSONArray.parseArray(wxMerchant.getUserids(), Long.class); + List useridlist = wxMerchant.getUserids(); for(Long userid:useridlist){ WxMerchantBUser wxMerchantBUser = new WxMerchantBUser(); wxMerchantBUser.setId(userid); @@ -148,7 +148,7 @@ public class WxMerchantServiceImpl implements WxMerchantService { final IdWorker idWorker = IdWorker.get(); //保存商户商铺的关联 - List shopidlist = JSONArray.parseArray(wxMerchant.getShopids(), Long.class); + List shopidlist = wxMerchant.getShopids(); for(Long shopid:shopidlist){ WxMerchantShop wxMerchantShop = new WxMerchantShop(); wxMerchantShop.setId(idWorker.nextId()); @@ -171,7 +171,7 @@ public class WxMerchantServiceImpl implements WxMerchantService { //保存商户关联用户 - List useridlist = JSONArray.parseArray(wxMerchant.getUserids(), Long.class); + List useridlist = wxMerchant.getUserids(); for(Long userid:useridlist){ WxMerchantBUser wxMerchantBUser = new WxMerchantBUser(); wxMerchantBUser.setId(userid); From 3db086607b2ebedcf5ad21317301ae6ebb9b2095 Mon Sep 17 00:00:00 2001 From: hupeng Date: Fri, 17 Aug 2018 16:11:03 +0800 Subject: [PATCH 26/30] =?UTF-8?q?[=E6=94=AF=E4=BB=98][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=88=86=E8=B4=A6=E8=B4=A6=E6=88=B7=E8=AE=BE=E7=BD=AE=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/simple/common/ErrorCode.java | 3 +- .../java/com/simple/pay/WxProfitSharingP.java | 4 +- .../service/WxProfitSharingOrderService.java | 4 +- .../impl/WxProfitSharingOrderServiceImpl.java | 81 +++++++++++++------ 4 files changed, 61 insertions(+), 31 deletions(-) diff --git a/mallinkService/src/main/java/com/simple/common/ErrorCode.java b/mallinkService/src/main/java/com/simple/common/ErrorCode.java index e00c3bee2..f465539ef 100644 --- a/mallinkService/src/main/java/com/simple/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/simple/common/ErrorCode.java @@ -116,7 +116,8 @@ public enum ErrorCode{ PROFIT_SHARING_REQUEST_FAILED(12030, "分账请求失败"), PROFIT_SHARING_APPLY_FAILED(12031, "分账请求业务失败"), - PROFIT_SHARING_RETURN_INVALID(12022, "分账请求返回校验失败"), + PROFIT_SHARING_RETURN_INVALID(12032, "分账请求返回校验失败"), + PROFIT_SHARING_RECEIVER_INVALID(12033, "分账接受方查寻无效"), /** * 核销 diff --git a/mallinkService/src/main/java/com/simple/pay/WxProfitSharingP.java b/mallinkService/src/main/java/com/simple/pay/WxProfitSharingP.java index 25b53909f..3d65abe64 100644 --- a/mallinkService/src/main/java/com/simple/pay/WxProfitSharingP.java +++ b/mallinkService/src/main/java/com/simple/pay/WxProfitSharingP.java @@ -78,11 +78,11 @@ public class WxProfitSharingP implements Serializable { this.out_trade_no = out_trade_no; } - public String setReceivers() { + public String getReceivers() { return receivers; } - public void getReceivers(String receivers) { + public void setReceivers(String receivers) { this.receivers = receivers; } diff --git a/mallinkService/src/main/java/com/simple/service/WxProfitSharingOrderService.java b/mallinkService/src/main/java/com/simple/service/WxProfitSharingOrderService.java index 776bf4e3a..819e19584 100644 --- a/mallinkService/src/main/java/com/simple/service/WxProfitSharingOrderService.java +++ b/mallinkService/src/main/java/com/simple/service/WxProfitSharingOrderService.java @@ -4,7 +4,7 @@ import java.util.*; import com.github.pagehelper.PageInfo; import com.simple.common.ResultData; import com.simple.domain.po.WxAppinfo; -import com.simple.domain.po.WxOrder; +import com.simple.domain.po.WxPayOrder; import com.simple.domain.po.WxProfitSharingOrder; public interface WxProfitSharingOrderService { @@ -45,7 +45,7 @@ public interface WxProfitSharingOrderService { /** * 创建分账订单 */ - public ResultData createSharingOrder(WxAppinfo appInfo, WxOrder wxOrder); + public ResultData createSharingOrder(WxAppinfo appInfo, WxPayOrder wxPayOrder); diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java index a7554af99..6449ed5e0 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java @@ -8,16 +8,11 @@ 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.WxAppinfo; -import com.simple.domain.po.WxOrder; -import com.simple.domain.po.WxPayAccount; -import com.simple.domain.po.WxProfitSharingOrder; +import com.simple.domain.po.*; import com.simple.enums.EnumPayDomain; import com.simple.enums.EnumProfitSharingStatus; import com.simple.exception.MallinkException; -import com.simple.mapper.WxAppinfoMapper; -import com.simple.mapper.WxPayAccountMapper; -import com.simple.mapper.WxProfitSharingOrderMapper; +import com.simple.mapper.*; import com.simple.pay.WxPayment; import com.simple.pay.WxProfitSharing; import com.simple.pay.WxProfitSharingP; @@ -43,7 +38,14 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ WxPayAccountMapper wxPayAccountMapper; @Autowired - WxProfitSharingOrderMapper wxOrderMapper; + WxOrderMapper wxOrderMapper; + + @Autowired + WxProfitSharingReceiverMapper wxProfitSharingReceiverMapper; + + @Autowired + WxProfitSharingResultMapper wxProfitSharingResultMapper; + JSONObject errorMap = JSON.parseObject( @@ -87,29 +89,29 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ } @Override - public ResultData createSharingOrder(WxAppinfo subAppInfo, WxOrder wxOrder) { + public ResultData createSharingOrder(WxAppinfo subAppInfo, WxPayOrder wxPayOrder) { final IdWorker idworker = IdWorker.get(); + WxProfitSharingOrder record = new WxProfitSharingOrder(); try { + WxOrder wxOrder = wxOrderMapper.selectByPrimaryKey(wxPayOrder.getOrderId()); //是否已创建分账订单 - Date currentDate = new Date(); - record.setOrderId(wxOrder.getId().toString()); + record.setOrderId(wxPayOrder.getId().toString()); record = wxProfitSharingOrderMapper.selectOne(record); if (record == null) { //创建分账订单 + Date currentDate = new Date(); record.setId(idworker.nextId()); - record.setTenantId(wxOrder.getTenantId()); - record.setOrderId(wxOrder.getId().toString()); - record.setPayAmount(wxOrder.getPayment()); - //record.setMerchantId(); + record.setTenantId(wxPayOrder.getTenantId()); + 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); - if (wxProfitSharingOrderMapper.insertSelective(record) != 1) { - throw new MallinkException(ErrorCode.DB_FAIL); - } + wxProfitSharingOrderMapper.insertSelective(record); } WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(subAppInfo.getPayId()); @@ -121,15 +123,39 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ wxProfitSharingP.setAppid(mainAppInfo.getAppId()); wxProfitSharingP.setMch_id(mainPayAccount.getMchId()); wxProfitSharingP.setSub_appid(subAppInfo.getAppId()); - wxProfitSharingP.setMch_id(payAccount.getMchId()); wxProfitSharingP.setSub_mch_id(payAccount.getMchId()); wxProfitSharingP.setNonce_str(Utility.generate32UUID()); - wxProfitSharingP.setTransaction_id(wxOrder.getTenantId()); + 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 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()); + } + JSONObject receivers = new JSONObject(); + List resultList = new ArrayList(); + for (int i=0;i<=wxProfitSharingReceiverList.size();i++){ + WxProfitSharingReceiver receiver = wxProfitSharingReceiverList.get(i); + Date currentDate = new Date(); + receivers.put("type",receiver.getReceiverType()); + receivers.put("acount",receiver.getReceiverAccount()); + receivers.put("amount",record.getPayAmount()); //temp: sharing all money with only owner + receivers.put("description",receiver.getReceiverComments()); + 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)); @@ -138,26 +164,29 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ 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); - throw new MallinkException(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(), returnMap.get("return_msg")); + return new ResultData(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(), returnMap.get("return_msg")); } if (!WxPayment.verifyNotify(returnMap,payAccount.getApiKey())){ - throw new MallinkException(ErrorCode.PROFIT_SHARING_RETURN_INVALID.getCode(), ErrorCode.PROFIT_SHARING_RETURN_INVALID.getMessage()); + 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); - throw new MallinkException(ErrorCode.PROFIT_SHARING_APPLY_FAILED.getCode(), returnMap.get("result_msg")); + 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); - - return new ResultData(200, "分账申请成功", returnMap); + wxProfitSharingResultMapper.insertList(resultList); + return new ResultData(returnMap); } catch (RuntimeException e) { throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.getMessage()); From 64b04a3985a21d3471aced57d420454919a8d13a Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Fri, 17 Aug 2018 16:53:53 +0800 Subject: [PATCH 27/30] =?UTF-8?q?[b=E7=AB=AF=E6=8E=A5=E5=8F=A3][=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0]:=E7=94=A8=E6=88=B7=E5=8D=A1=E5=88=B8=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WxCouponOrderController.java | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 mallinkCApi/src/main/java/com/simple/controller/WxCouponOrderController.java diff --git a/mallinkCApi/src/main/java/com/simple/controller/WxCouponOrderController.java b/mallinkCApi/src/main/java/com/simple/controller/WxCouponOrderController.java new file mode 100644 index 000000000..6105daba8 --- /dev/null +++ b/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 page = wxCouponOrderService.listAsPage(wxCouponOrder, pageNum, pageSize); + return new ResultData(page); + } + + @ApiOperation(value = "根据id查询接口", notes = "{\"couponOrderId\":\"string\"}") + @GetMapping("/findById") + public ResultData findById(@RequestBody Map 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)); + } +} From 26b5fd81d17129c2a3204b2509a7e5f13308e06a Mon Sep 17 00:00:00 2001 From: hupeng Date: Fri, 17 Aug 2018 17:06:12 +0800 Subject: [PATCH 28/30] =?UTF-8?q?[=E5=8D=A1=E5=88=B8][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=8D=A1=E5=88=B8=E6=A0=B8=E9=94=80,=E9=80=80=E6=AC=BE?= =?UTF-8?q?=E5=89=8D=E5=85=88=E9=AA=8C=E8=AF=81=E6=A0=B8=E9=94=80=E5=91=98?= =?UTF-8?q?=E5=90=88=E6=B3=95=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/simple/common/ErrorCode.java | 8 ++-- .../impl/WxCouponOrderServiceImpl.java | 46 ++++++++++++++++++- 2 files changed, 50 insertions(+), 4 deletions(-) diff --git a/mallinkService/src/main/java/com/simple/common/ErrorCode.java b/mallinkService/src/main/java/com/simple/common/ErrorCode.java index f465539ef..a641b5c33 100644 --- a/mallinkService/src/main/java/com/simple/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/simple/common/ErrorCode.java @@ -83,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, "卡券已经作废"), + /** * 微信 diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java index 661b413a6..a67f1369c 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java @@ -9,10 +9,13 @@ 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; @@ -29,6 +32,12 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { @Autowired WxCouponOrderMapper wxCouponOrderMapper; + @Autowired + WxOrderMapper wxOrderMapper; + + @Autowired + WxMerchantBUserMapper wxMerchantBUserMapper; + @Override public PageInfo listAsPage(WxCouponOrder record, Integer pageIndex, Integer pageSize) { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponOrderMapper.findList(record)); @@ -57,11 +66,29 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } - @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) 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); @@ -91,8 +118,25 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) 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())) { logger.error("已过期: couponOrder-" + couponOrderId); throw new MallinkException(ErrorCode.COUPON_ORDER_IS_OVER_TIME); From 9ae284106852985f2a4d1bfe18f115eeb5323f5a Mon Sep 17 00:00:00 2001 From: gongbiao Date: Fri, 17 Aug 2018 17:36:11 +0800 Subject: [PATCH 29/30] =?UTF-8?q?[=E5=95=86=E9=93=BA=E5=95=86=E6=88=B7][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9]:=E5=95=86=E9=93=BA=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E6=97=B6=E8=BF=94=E5=9B=9E=E6=95=B0=E6=8D=AE=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=EF=BC=8C=E5=8A=A0img=5Furl=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/simple/domain/po/WxMerchant.java | 11 ++++++++++ .../java/com/simple/domain/po/WxShop.java | 20 ++++++++++++++----- .../service/impl/WxMerchantServiceImpl.java | 5 +++++ .../main/resources/mapper/WxShopMapper.xml | 4 +++- 4 files changed, 34 insertions(+), 6 deletions(-) diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxMerchant.java b/mallinkService/src/main/java/com/simple/domain/po/WxMerchant.java index d30697e96..0aab3e78d 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxMerchant.java +++ b/mallinkService/src/main/java/com/simple/domain/po/WxMerchant.java @@ -46,6 +46,9 @@ public class WxMerchant implements Serializable { @Transient private List shops; + @Transient + private List bUsers; + /*租户ID**/ @io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId") private String tenantId; @@ -182,6 +185,14 @@ public class WxMerchant implements Serializable { this.shops = shops; } + public List getbUsers() { + return bUsers; + } + + public void setbUsers(List bUsers) { + this.bUsers = bUsers; + } + public static enum Field { Id_ASC("`id` ASC"),Id_DESC("`id` DESC") diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxShop.java b/mallinkService/src/main/java/com/simple/domain/po/WxShop.java index daf2dd842..fc1588d4c 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxShop.java +++ b/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 { diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxMerchantServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxMerchantServiceImpl.java index 4f4b4bc9a..9151060c2 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxMerchantServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxMerchantServiceImpl.java @@ -56,6 +56,11 @@ public class WxMerchantServiceImpl implements WxMerchantService { } wxMerchant.setShops(shops); + + WxMerchantBUser wxMerchantBUser = new WxMerchantBUser(); + wxMerchantBUser.setMerchantId(wxMerchant.getId()); + List bUserList = wxMerchantBUserMapper.findList(wxMerchantBUser); + wxMerchant.setbUsers(bUserList); return wxMerchant; } diff --git a/mallinkService/src/main/resources/mapper/WxShopMapper.xml b/mallinkService/src/main/resources/mapper/WxShopMapper.xml index 6675742eb..498e7c912 100644 --- a/mallinkService/src/main/resources/mapper/WxShopMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxShopMapper.xml @@ -18,10 +18,12 @@ + + - `id`,`tenant_id`,`shop_number`,`build_area`,`operation_area`,`building`,`floor`,`status`,`x`,`y`,`addr`,`baidu_poi`,`longitude`,`latitude`,`create_date`,`update_date` + `id`,`tenant_id`,`shop_number`,`build_area`,`operation_area`,`building`,`floor`,`status`,`x`,`y`,`addr`,`baidu_poi`,`longitude`,`latitude`,`create_date`,`update_date`,`img_url` From 6441324c9610c30fbe0b28c7ec9a44c259aa6469 Mon Sep 17 00:00:00 2001 From: hupeng Date: Fri, 17 Aug 2018 20:15:21 +0800 Subject: [PATCH 30/30] =?UTF-8?q?[=E6=94=AF=E4=BB=98][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E8=B0=83=E8=AF=95=E4=BF=AE=E5=A4=8D=E4=B8=80=E4=BA=9B=E5=88=86?= =?UTF-8?q?=E8=B4=A6=E6=8E=A5=E5=8F=A3=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WxPayOrderController.java | 15 ++++++- .../enums/EnumProfitSharingReceiverType.java | 37 ++++++++++++++++++ .../java/com/simple/pay/WxProfitSharing.java | 2 +- .../service/WxProfitSharingOrderService.java | 5 +++ .../impl/WxProfitSharingOrderServiceImpl.java | 39 +++++++++++++------ 5 files changed, 84 insertions(+), 14 deletions(-) create mode 100644 mallinkService/src/main/java/com/simple/enums/EnumProfitSharingReceiverType.java diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxPayOrderController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxPayOrderController.java index 80ce946a9..6a3ce5167 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxPayOrderController.java +++ b/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(); + } } diff --git a/mallinkService/src/main/java/com/simple/enums/EnumProfitSharingReceiverType.java b/mallinkService/src/main/java/com/simple/enums/EnumProfitSharingReceiverType.java new file mode 100644 index 000000000..09fa151da --- /dev/null +++ b/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; + } +} diff --git a/mallinkService/src/main/java/com/simple/pay/WxProfitSharing.java b/mallinkService/src/main/java/com/simple/pay/WxProfitSharing.java index 348761f4f..a308ad0c6 100644 --- a/mallinkService/src/main/java/com/simple/pay/WxProfitSharing.java +++ b/mallinkService/src/main/java/com/simple/pay/WxProfitSharing.java @@ -11,7 +11,7 @@ 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_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"; // 添加分账账户 diff --git a/mallinkService/src/main/java/com/simple/service/WxProfitSharingOrderService.java b/mallinkService/src/main/java/com/simple/service/WxProfitSharingOrderService.java index 819e19584..256ef1b31 100644 --- a/mallinkService/src/main/java/com/simple/service/WxProfitSharingOrderService.java +++ b/mallinkService/src/main/java/com/simple/service/WxProfitSharingOrderService.java @@ -42,6 +42,11 @@ public interface WxProfitSharingOrderService { void deleteById(Long id); + /** + * 临时测试 + */ + public void test(); + /** * 创建分账订单 */ diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java index 6449ed5e0..ac475f67f 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java @@ -3,6 +3,7 @@ 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; @@ -10,6 +11,7 @@ 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.*; @@ -48,7 +50,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ - JSONObject errorMap = JSON.parseObject( + final JSONObject errorMap = JSON.parseObject( "{\"SYSTEMERROR\":{\"detail\":\"接口返回错误\",\"reason\":\"系统超时\",\"resolution\":\"系统异常,请用相同参数重新调用\"}," + "\"AMOUNT_OVERDUE\":{\"detail\":\"分账金额超限\",\"reason\":\"分账金额大于可分金额 或大于分账最大比例 \",\"resolution\":\"请调整分账金额\"}," + "\"RECEIVER_INVALID\":{\"detail\":\"分账接收方非法 \",\"reason\":\"未配置分账接收方\",\"resolution\":\"分账接收方在分账之前需要进行添加\"}," + @@ -88,6 +90,14 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ 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(); @@ -101,8 +111,10 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ 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()); @@ -115,13 +127,15 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ } WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(subAppInfo.getPayId()); - WxPayAccount mainPayAccount = wxPayAccountMapper.selectByPrimaryKey(EnumPayDomain.PAY_DOMAIN_MASTER_ACCOUNT_ID.getCode()); - WxAppinfo mainAppInfo = wxAppinfoMapper.selectByPrimaryKey(EnumPayDomain.PAY_DOMAIN_MASTER_APPINFO_ID.getCode()); + //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(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()); @@ -136,15 +150,18 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ if (wxProfitSharingReceiverList.size()<=0 || wxProfitSharingReceiverList.size() > 50) { throw new MallinkException(ErrorCode.PROFIT_SHARING_RECEIVER_INVALID.getCode(), ErrorCode.PROFIT_SHARING_RECEIVER_INVALID.getMessage()); } - JSONObject receivers = new JSONObject(); + JSONArray receivers = new JSONArray(); List resultList = new ArrayList(); - for (int i=0;i<=wxProfitSharingReceiverList.size();i++){ + for (int i=0;i