From 8729d211fa810b3e08e6506858bd409a8ccafa6a Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Wed, 5 Sep 2018 20:23:30 +0800 Subject: [PATCH 01/51] =?UTF-8?q?[payAccount=E6=B7=BB=E5=8A=A0=E7=A7=9F?= =?UTF-8?q?=E6=88=B7ID][=E6=96=B0=E5=BB=BA]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/simple/domain/po/WxPayAccount.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxPayAccount.java b/mallinkService/src/main/java/com/simple/domain/po/WxPayAccount.java index 76668097f..1afd6d0df 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxPayAccount.java +++ b/mallinkService/src/main/java/com/simple/domain/po/WxPayAccount.java @@ -39,9 +39,11 @@ public class WxPayAccount implements Serializable { public void setIds(List ids) { this.ids = ids; } - - - + + + /*租户ID**/ + @io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId") + private String tenantId; /**微信商户号/特约服务商号**/ @io.swagger.annotations.ApiModelProperty(value="微信商户号/特约服务商号",name="mchId") private String mchId; @@ -61,6 +63,14 @@ public class WxPayAccount implements Serializable { @io.swagger.annotations.ApiModelProperty(value="商户模式-0:普通商户模式1:服务商模式",name="type") private Integer type; + public String getTenantId() { + return tenantId; + } + + public void setTenantId(String tenantId) { + this.tenantId = tenantId; + } + public String getMchId() { return mchId; } @@ -116,6 +126,7 @@ public class WxPayAccount implements Serializable { public static enum Field { Id_ASC("`id` ASC"),Id_DESC("`id` DESC") + ,TenantId_ASC("`tenant_id` ASC"),TenantId_DESC("`tenant_id` DESC") ,MchId_ASC("`mch_id` ASC"),MchId_DESC("`mch_id` DESC") ,SubMchId_ASC("`sub_mch_id` ASC"),SubMchId_DESC("`sub_mch_id` DESC") ,ApiKey_ASC("`api_key` ASC"),ApiKey_DESC("`api_key` DESC") From 8fa24ed3e494b54534c8808ed66802cbf9b1aa4e Mon Sep 17 00:00:00 2001 From: hupeng Date: Wed, 5 Sep 2018 20:40:02 +0800 Subject: [PATCH 02/51] =?UTF-8?q?[A=E7=AB=AF][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=88=86=E8=B4=A6=E6=8E=A5=E6=94=B6=E6=96=B9=E8=B4=A6=E6=88=B7?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WxProfitSharingReceiverController.java | 6 ++++-- .../src/main/java/com/simple/common/ErrorCode.java | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxProfitSharingReceiverController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxProfitSharingReceiverController.java index 8c174abea..d4c23a40a 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxProfitSharingReceiverController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxProfitSharingReceiverController.java @@ -41,7 +41,7 @@ public class WxProfitSharingReceiverController extends BaseController { @ApiOperation("新增接口") @PostMapping("add") - public ResultData add(@RequestBody WxProfitSharingReceiver receiver) { + public ResultData add(@ModelAttribute WxProfitSharingReceiver receiver) { if (receiver == null) return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); @@ -53,6 +53,8 @@ public class WxProfitSharingReceiverController extends BaseController { return new ResultData(ErrorCode.SYS_PARAMETER_ERROR); if (receiver.getReceiverAccount() == null) return new ResultData(ErrorCode.SYS_PARAMETER_ERROR); + if (receiver.getTrueName() == null) + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR); WxMerchant merchant = wxMerchantService.getById(receiver.getMerchantId()); if (merchant == null) @@ -64,7 +66,7 @@ public class WxProfitSharingReceiverController extends BaseController { @ApiOperation("根据id删除接口") @GetMapping("del") - public ResultData delete(@RequestBody WxProfitSharingReceiver receiver) { + public ResultData delete(@ModelAttribute WxProfitSharingReceiver receiver) { if (receiver == null) return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); if (receiver.getMerchantId() == null) diff --git a/mallinkService/src/main/java/com/simple/common/ErrorCode.java b/mallinkService/src/main/java/com/simple/common/ErrorCode.java index 661833fa4..cd1319a75 100644 --- a/mallinkService/src/main/java/com/simple/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/simple/common/ErrorCode.java @@ -158,7 +158,7 @@ public enum ErrorCode{ PROFIT_SHARING_QUERY_APPLY_FAILED(12035, "分账查询业务失败"), PROFIT_SHARING_QUERY_RETURN_INVALID(12036, "分账查询返回校验失败"), PROFIT_SHARING_RECEIVER_ADD_FAILED(12037, "分账账户添加失败"), - PROFIT_SHARING_RECEIVER_DEL_FAILED(12037, "分账账户删除失败"), + PROFIT_SHARING_RECEIVER_DEL_FAILED(12038, "分账账户删除失败"), /** * 核销 */ From c97b4433cbc5bae287559e5adc4f246112f31761 Mon Sep 17 00:00:00 2001 From: "jinguo24@163.com" Date: Wed, 5 Sep 2018 20:57:40 +0800 Subject: [PATCH 03/51] =?UTF-8?q?[=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9]=E9=80=9A=E8=BF=87appinfo=20=E8=A1=A8?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=94=9F=E6=88=90pv=20uv=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../simple/schedule/WxAppVisitSchedule.java | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/simple/schedule/WxAppVisitSchedule.java b/mallinkAdmin/src/main/java/com/simple/schedule/WxAppVisitSchedule.java index 8492dd227..ddb412205 100644 --- a/mallinkAdmin/src/main/java/com/simple/schedule/WxAppVisitSchedule.java +++ b/mallinkAdmin/src/main/java/com/simple/schedule/WxAppVisitSchedule.java @@ -6,7 +6,7 @@ import java.util.Date; import java.util.HashMap; import java.util.Map; -import com.simple.enums.EnumAppType; +import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpEntity; @@ -23,6 +23,7 @@ import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; import com.simple.domain.po.WxAppinfo; import com.simple.domain.po.WxUserVisit; +import com.simple.enums.EnumAppType; import com.simple.service.WxAppinfoService; import com.simple.service.WxUserVisitService; @@ -59,16 +60,16 @@ public class WxAppVisitSchedule { appInfo.setType(EnumAppType.C.getCode()); PageInfo page = WxAppinfoService.listAsPage(appInfo, 1, 10000); for(WxAppinfo w :page.getList()) { - w.getAppId(); - w.getSecret(); - w.getTenantId(); - //TODO 因为数据库表里数据问题,暂时不通过这种方式处理 + if(StringUtils.isBlank(w.getAppId())||StringUtils.isBlank(w.getSecret())) { + continue; + } + getData(yesterday,w.getAppId(),w.getSecret(),w.getTenantId()); } - // TODO hardcode appId - String appId = "wx8eb8275b78db4ede"; - String key ="76c43df01296998d8ce12383f213ac10"; - String talentId ="456"; - getData(yesterday,appId,key,talentId); +// TODO hardcode appId +// String appId = "wx8eb8275b78db4ede"; +// String key ="76c43df01296998d8ce12383f213ac10"; +// String talentId ="456"; +// getData(yesterday,appId,key,talentId); }catch(Exception e) { logger.error("获取微信访问数据失败",e); } @@ -101,7 +102,8 @@ public class WxAppVisitSchedule { logger.info(JSON.toJSONString(itemMap)); WxUserVisit v = new WxUserVisit(); // TODO hardcode appId - v.setAppId("wx8eb8275b78db4ede"); +// v.setAppId("wx8eb8275b78db4ede"); + v.setAppId(appId); String time = itemMap.get("ref_date")+""; Date date = new SimpleDateFormat("yyyyMMdd").parse(time); v.setDayDate(date); From bcf61641cca88a17d202cf0e0efa71679dba98d9 Mon Sep 17 00:00:00 2001 From: "jinguo24@163.com" Date: Wed, 5 Sep 2018 20:57:40 +0800 Subject: [PATCH 04/51] =?UTF-8?q?[=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9]url=20=E7=9A=84=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/schedule/WxAppVisitSchedule.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/simple/schedule/WxAppVisitSchedule.java b/mallinkAdmin/src/main/java/com/simple/schedule/WxAppVisitSchedule.java index ddb412205..6514b35d1 100644 --- a/mallinkAdmin/src/main/java/com/simple/schedule/WxAppVisitSchedule.java +++ b/mallinkAdmin/src/main/java/com/simple/schedule/WxAppVisitSchedule.java @@ -31,9 +31,6 @@ import com.simple.service.WxUserVisitService; public class WxAppVisitSchedule { private Logger logger = Logger.getLogger(WxAppVisitSchedule.class); - - private static String token="https://api.weixin.qq.com/cgi-bin/token?"+ - "grant_type=client_credential&appid=APPID&secret=APPSECRET"; private static String visit = "https://api.weixin.qq.com/datacube/getweanalysisappiddailyvisittrend?access_token="; @@ -123,6 +120,8 @@ public class WxAppVisitSchedule { private String getAccessToken(String appId,String appSecret) { // return "13_rBo3ajS3jjd8OXZ2MLd4HfLrmt78gvaCeRtu-Xme0iC0fhs_lNS47aLPEwI8kfZQIMKnWYshY5wpaf2IoSI7tgVBm7WwVrm_Bg96J31VPKi8pEp8yB6JiTpDcWkpwv5GngiH2vDkwz7VHOsPLBYcAGAZPM"; + String token="https://api.weixin.qq.com/cgi-bin/token?"+ + "grant_type=client_credential&appid=APPID&secret=APPSECRET"; String url = token.replace("APPID", appId). replace("APPSECRET", appSecret); Map map = restTemplate.getForObject(url,Map.class); From 844e4dd914b9e9cd429aa63f713a222ddc7a0be2 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Thu, 6 Sep 2018 11:44:29 +0800 Subject: [PATCH 05/51] =?UTF-8?q?[=E7=A7=9F=E9=87=91=E7=AE=A1=E7=90=86][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9]=E4=B8=9A=E5=8A=A1=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WxBillRentController.java | 67 +++++ .../simple/controller/WxShopController.java | 17 +- .../java/com/simple/domain/po/WxBillRent.java | 262 ++++++++++++++++++ .../com/simple/mapper/WxBillRentMapper.java | 15 + .../java/com/simple/mapper/WxShopMapper.java | 4 + .../com/simple/service/WxBillRentService.java | 48 ++++ .../com/simple/service/WxShopService.java | 13 +- .../service/impl/WxBillRentServiceImpl.java | 55 ++++ .../service/impl/WxShopServiceImpl.java | 29 +- .../resources/mapper/WxBillRentMapper.xml | 94 +++++++ .../main/resources/mapper/WxShopMapper.xml | 11 + 11 files changed, 598 insertions(+), 17 deletions(-) create mode 100644 mallinkAdmin/src/main/java/com/simple/controller/WxBillRentController.java create mode 100644 mallinkService/src/main/java/com/simple/domain/po/WxBillRent.java create mode 100644 mallinkService/src/main/java/com/simple/mapper/WxBillRentMapper.java create mode 100644 mallinkService/src/main/java/com/simple/service/WxBillRentService.java create mode 100644 mallinkService/src/main/java/com/simple/service/impl/WxBillRentServiceImpl.java create mode 100644 mallinkService/src/main/resources/mapper/WxBillRentMapper.xml diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxBillRentController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxBillRentController.java new file mode 100644 index 000000000..944f4e834 --- /dev/null +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxBillRentController.java @@ -0,0 +1,67 @@ +package com.simple.controller; + +import com.github.pagehelper.PageInfo; +import com.simple.common.Result; +import com.simple.common.ResultData; +import com.simple.domain.po.WxBillRent; +import com.simple.service.WxBillRentService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +@RestController +@RequestMapping("wxBillRent") +public class WxBillRentController extends BaseController +{ + @Autowired + private WxBillRentService wxBillRentService; + + private Logger logger = Logger.getLogger(WxBillRentController.class); + + @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 WxBillRent wxBillRent,Integer pageNum, Integer pageSize) { + if (null == wxBillRent) wxBillRent = new WxBillRent(); + wxBillRent.setTenantId(getTenantId()); + wxBillRent.setSortColumns(WxBillRent.Field.Id_DESC); + final PageInfo> page = wxBillRentService.listAsPage(wxBillRent, pageNum, pageSize); + return new ResultData(page); + } + + @PostMapping("add") + public ResultData add(@RequestBody WxBillRent wxBillRent) { + //Assert.notNull(wxBillRent.getName(), "角色名不能为空"); + //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); + wxBillRent.setTenantId(getTenantId()); + wxBillRentService.saveOrUpdate(wxBillRent); + return new ResultData(); + } + + @PostMapping("update") + public ResultData update(@RequestBody WxBillRent wxBillRent) { + wxBillRentService.saveOrUpdate(wxBillRent); + return new ResultData(); + } + + @GetMapping("/del") + @ApiImplicitParam(name="id",value="id",dataType="String", paramType = "query",required=true) + public ResultData delete(String id) { + wxBillRentService.deleteById(id); + return new ResultData(Result.SUCCESS, "删除成功", null); + } + + @GetMapping("/findById") + @ApiImplicitParam(name="id",value="id",dataType="String", paramType = "query",required=true) + public ResultData findById(String id) { + return new ResultData(Result.SUCCESS,"查询成功",wxBillRentService.getById(id)); + } + + + +} diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxShopController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxShopController.java index 69050b33a..2c9adbc7c 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxShopController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxShopController.java @@ -69,7 +69,20 @@ public class WxShopController extends BaseController public ResultData findById(Long id) { return new ResultData(Result.SUCCESS,"查询成功",wxShopService.getById(id)); } - - + + @ApiOperation("获取商铺数据") + @GetMapping("getShopListByShopNumber") + @ApiImplicitParam(name="shopNumber",value="shopNumber",dataType="String", paramType = "query",required=true) + public ResultData getbshoplist(String shopNumber) { + return wxShopService.getbshoplist(getTenantId(),shopNumber); + } + + @ApiOperation("获取商户商铺数据") + @GetMapping("getMerchantShopByShopId") + @ApiImplicitParam(name="shopId",value="shopId",dataType="String", paramType = "query",required=true) + public ResultData getMerchantShopByShopId(String shopId) { + return wxShopService.getMerchantShopByShopId(getTenantId(),shopId); + } + } diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxBillRent.java b/mallinkService/src/main/java/com/simple/domain/po/WxBillRent.java new file mode 100644 index 000000000..0c4b7238a --- /dev/null +++ b/mallinkService/src/main/java/com/simple/domain/po/WxBillRent.java @@ -0,0 +1,262 @@ +package com.simple.domain.po; + +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Transient; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Table(name = "wx_bill_rent") +public class WxBillRent implements Serializable { + private static final long serialVersionUID = 1L; + + @Id + protected String id; + + @Transient + protected List ids; + @Transient + protected String sortColumns; + + public String getId() { + return id; + } + public void setId(String id) { + this.id = id; + } + public String getSortColumns() { + return sortColumns; + } + + public List getIds() { + return ids; + } + public void setIds(List ids) { + this.ids = ids; + } + + @Transient + protected WxMerchant wxMerchant; + + @Transient + protected WxShop wxShop; + + + /*商铺ID**/ + @io.swagger.annotations.ApiModelProperty(value="商铺ID",name="shopId") + private Integer shopId; + /*使用面积**/ + @io.swagger.annotations.ApiModelProperty(value="使用面积",name="userArea") + private BigDecimal userArea; + /*单价**/ + @io.swagger.annotations.ApiModelProperty(value="单价",name="price") + private BigDecimal price; + /*应缴金额**/ + @io.swagger.annotations.ApiModelProperty(value="应缴金额",name="needPay") + private BigDecimal needPay; + /*应收金额**/ + @io.swagger.annotations.ApiModelProperty(value="应收金额",name="receivePay") + private BigDecimal receivePay; + /*实收金额**/ + @io.swagger.annotations.ApiModelProperty(value="实收金额",name="pay") + private BigDecimal pay; + /*缴费周期**/ + @io.swagger.annotations.ApiModelProperty(value="缴费周期",name="receivePeriod") + private Integer receivePeriod; + /*收款日期**/ + @io.swagger.annotations.ApiModelProperty(value="收款日期",name="receiveDate") + private Date receiveDate; + /*到账日期**/ + @io.swagger.annotations.ApiModelProperty(value="到账日期",name="payDate") + private Date payDate; + /*创建时间**/ + @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createtime") + private Date createtime; + /*逾期天数**/ + @io.swagger.annotations.ApiModelProperty(value="逾期天数",name="expiredDay") + private Integer expiredDay; + /*付款方式:1微信2支付宝3银行4现金**/ + @io.swagger.annotations.ApiModelProperty(value="付款方式:1微信2支付宝3银行4现金",name="payWay") + private Integer payWay; + /*单据编号**/ + @io.swagger.annotations.ApiModelProperty(value="单据编号",name="receiptNum") + private String receiptNum; + + /*租户ID**/ + @io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId") + private String tenantId; + + public Integer getShopId() { + return shopId; + } + public void setShopId(Integer _shopId) { + shopId = _shopId; + } + public BigDecimal getUserArea() { + return userArea; + } + public void setUserArea(BigDecimal _userArea) { + userArea = _userArea; + } + public BigDecimal getPrice() { + return price; + } + public void setPrice(BigDecimal _price) { + price = _price; + } + public BigDecimal getNeedPay() { + return needPay; + } + public void setNeedPay(BigDecimal _needPay) { + needPay = _needPay; + } + public BigDecimal getReceivePay() { + return receivePay; + } + public void setReceivePay(BigDecimal _receivePay) { + receivePay = _receivePay; + } + public BigDecimal getPay() { + return pay; + } + public void setPay(BigDecimal _pay) { + pay = _pay; + } + public Integer getReceivePeriod() { + return receivePeriod; + } + public void setReceivePeriod(Integer _receivePeriod) { + receivePeriod = _receivePeriod; + } + public Date getReceiveDate() { + return receiveDate; + } + public void setReceiveDate(Date _receiveDate) { + receiveDate = _receiveDate; + } + public Date getPayDate() { + return payDate; + } + public void setPayDate(Date _payDate) { + payDate = _payDate; + } + public Date getCreatetime() { + return createtime; + } + public void setCreatetime(Date _createtime) { + createtime = _createtime; + } + public Integer getExpiredDay() { + return expiredDay; + } + public void setExpiredDay(Integer _expiredDay) { + expiredDay = _expiredDay; + } + public Integer getPayWay() { + return payWay; + } + public void setPayWay(Integer _payWay) { + payWay = _payWay; + } + public String getReceiptNum() { + return receiptNum; + } + public void setReceiptNum(String _receiptNum) { + receiptNum = _receiptNum; + } + + public String getTenantId() { + return tenantId; + } + + public void setTenantId(String tenantId) { + this.tenantId = tenantId; + } + + public WxMerchant getWxMerchant() { + return wxMerchant; + } + + public void setWxMerchant(WxMerchant wxMerchant) { + this.wxMerchant = wxMerchant; + } + + public WxShop getWxShop() { + return wxShop; + } + + public void setWxShop(WxShop wxShop) { + this.wxShop = wxShop; + } + + public static enum Field + { + Id_ASC("`id` ASC"),Id_DESC("`id` DESC") + ,ShopId_ASC("`shop_id` ASC"),ShopId_DESC("`shop_id` DESC") + ,UserArea_ASC("`userArea` ASC"),UserArea_DESC("`userArea` DESC") + ,Price_ASC("`price` ASC"),Price_DESC("`price` DESC") + ,NeedPay_ASC("`needPay` ASC"),NeedPay_DESC("`needPay` DESC") + ,ReceivePay_ASC("`receivePay` ASC"),ReceivePay_DESC("`receivePay` DESC") + ,Pay_ASC("`pay` ASC"),Pay_DESC("`pay` DESC") + ,ReceivePeriod_ASC("`receive_period` ASC"),ReceivePeriod_DESC("`receive_period` DESC") + ,ReceiveDate_ASC("`receiveDate` ASC"),ReceiveDate_DESC("`receiveDate` DESC") + ,PayDate_ASC("`payDate` ASC"),PayDate_DESC("`payDate` DESC") + ,Createtime_ASC("`createtime` ASC"),Createtime_DESC("`createtime` DESC") + ,ExpiredDay_ASC("`expiredDay` ASC"),ExpiredDay_DESC("`expiredDay` DESC") + ,PayWay_ASC("`payWay` ASC"),PayWay_DESC("`payWay` DESC") + ,ReceiptNum_ASC("`receiptNum` ASC"),ReceiptNum_DESC("`receiptNum` 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(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()); + } + this.sortColumns=sb.toString(); + } + + public void setSortColumns(String sortColumns) + { + if (sortColumns == null || "".equals(sortColumns.trim())) { + return; + } + if (sortColumns.contains(",")) { + String[] cols = sortColumns.split(","); + List fList = new 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/mapper/WxBillRentMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxBillRentMapper.java new file mode 100644 index 000000000..8bbb53c04 --- /dev/null +++ b/mallinkService/src/main/java/com/simple/mapper/WxBillRentMapper.java @@ -0,0 +1,15 @@ +package com.simple.mapper; + +import com.simple.common.CommonMapper; +import com.simple.domain.po.WxBillRent; + +import java.util.List; +import java.util.Map; + +public interface WxBillRentMapper extends CommonMapper { + + List findList(WxBillRent wxBillRent); + + List> findListMap(WxBillRent record); + +} diff --git a/mallinkService/src/main/java/com/simple/mapper/WxShopMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxShopMapper.java index 0826f98a0..e0d440abf 100644 --- a/mallinkService/src/main/java/com/simple/mapper/WxShopMapper.java +++ b/mallinkService/src/main/java/com/simple/mapper/WxShopMapper.java @@ -13,4 +13,8 @@ public interface WxShopMapper extends CommonMapper { List> findListMap(WxShop record); + List> getbshoplist(Map tenantId); + + Map getMerchantShopByShopId(Map params); + } diff --git a/mallinkService/src/main/java/com/simple/service/WxBillRentService.java b/mallinkService/src/main/java/com/simple/service/WxBillRentService.java new file mode 100644 index 000000000..2e35d4efe --- /dev/null +++ b/mallinkService/src/main/java/com/simple/service/WxBillRentService.java @@ -0,0 +1,48 @@ +package com.simple.service; + +import java.util.*; +import com.github.pagehelper.PageInfo; +import com.simple.domain.po.WxBillRent; + +public interface WxBillRentService { + + /** + * 根据实体查询分页列表 + * + * @param offset + * @param limit + * @param record + * @return + */ + PageInfo> listAsPage(WxBillRent record, Integer pageIndex, Integer pageSize); + + /** + * 根据Id获得实体 + * + * @param id + * @return + */ + WxBillRent getById(String id); + + /** + * 保存或更新实体 + * + * @param record + */ + void saveOrUpdate(WxBillRent record); + + /** + * 根据Id删除实体 + * + * @param id + */ + void deleteById(String id); + + + + + + + + +} diff --git a/mallinkService/src/main/java/com/simple/service/WxShopService.java b/mallinkService/src/main/java/com/simple/service/WxShopService.java index 5d4ea485f..bdca3d1b8 100644 --- a/mallinkService/src/main/java/com/simple/service/WxShopService.java +++ b/mallinkService/src/main/java/com/simple/service/WxShopService.java @@ -2,6 +2,7 @@ package com.simple.service; import java.util.*; import com.github.pagehelper.PageInfo; +import com.simple.common.ResultData; import com.simple.domain.po.WxShop; public interface WxShopService { @@ -39,12 +40,10 @@ public interface WxShopService { * @param id */ void deleteById(Long id); - - - - - - - + + ResultData getbshoplist(String tenantId, String shopNumber); + + ResultData getMerchantShopByShopId(String tenantId, String shopId); + } diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxBillRentServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxBillRentServiceImpl.java new file mode 100644 index 000000000..1103a62a9 --- /dev/null +++ b/mallinkService/src/main/java/com/simple/service/impl/WxBillRentServiceImpl.java @@ -0,0 +1,55 @@ +package com.simple.service.impl; + +import java.util.*; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.simple.domain.po.WxBillRent; +import com.simple.mapper.WxBillRentMapper; +import com.simple.service.WxBillRentService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class WxBillRentServiceImpl implements WxBillRentService { + + @Autowired + WxBillRentMapper wxBillRentMapper; + + + @Override + public PageInfo> listAsPage(WxBillRent record, Integer pageIndex, Integer pageSize) { + PageHelper.startPage(pageIndex, pageSize); + List> shops = wxBillRentMapper.findListMap(record); + PageInfo> pageInfo = new PageInfo<>(shops); + return pageInfo; + //return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxBillRentMapper.findList(record)); + } + + @Override + public WxBillRent getById(String id) { + return wxBillRentMapper.selectByPrimaryKey(id); + } + + @Override + public void saveOrUpdate(WxBillRent record) { + if (record.getId() == null) { + record.setId(UUID.randomUUID().toString().replaceAll("-", "")); + wxBillRentMapper.insertSelective(record); + } else { + wxBillRentMapper.updateByPrimaryKeySelective(record); + } + } + + @Override + public void deleteById(String id) { + wxBillRentMapper.deleteByPrimaryKey(id); + } + + + + + + + + +} diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxShopServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxShopServiceImpl.java index 269d1e30e..97fe036d3 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxShopServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxShopServiceImpl.java @@ -3,6 +3,7 @@ package com.simple.service.impl; import java.util.*; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.simple.common.ResultData; import com.simple.domain.po.WxShop; import com.simple.mapper.WxShopMapper; import com.simple.service.WxShopService; @@ -58,12 +59,24 @@ public class WxShopServiceImpl implements WxShopService { public void deleteById(Long id) { wxShopMapper.deleteByPrimaryKey(id); } - - - - - - - - + + @Override + public ResultData getbshoplist(String tenantId, String shopNumber) { + Map params=new HashMap<>(); + params.put("tenantId",tenantId); + params.put("shopNumber",shopNumber); + List> list=wxShopMapper.getbshoplist(params); + return new ResultData(ResultData.SUCCESS,"",list); + } + + @Override + public ResultData getMerchantShopByShopId(String tenantId, String shopId) { + Map params=new HashMap<>(); + params.put("tenantId",tenantId); + params.put("shopId",shopId); + Map map=wxShopMapper.getMerchantShopByShopId(params); + return new ResultData(ResultData.SUCCESS,"",map); + } + + } diff --git a/mallinkService/src/main/resources/mapper/WxBillRentMapper.xml b/mallinkService/src/main/resources/mapper/WxBillRentMapper.xml new file mode 100644 index 000000000..b1e29738a --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxBillRentMapper.xml @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + `id`,`shop_id`,`user_area`,`price`,`need_pay`,`receive_pay`,`pay`,`receive_period`,`receive_date`,`pay_date`,`createtime`,`expired_day`,`pay_way`,`receipt_num`,`tenant_id` + + + + where 1 = 1 + and `id` = #{id} + and `shop_id` = #{shopId} + and `user_area` = #{userArea} + and `price` = #{price} + and `need_pay` = #{needPay} + and `receive_pay` = #{receivePay} + and `pay` = #{pay} + and `receive_period` = #{receivePeriod} + and `receive_date` = #{receiveDate} + and `pay_date` = #{payDate} + and `createtime` = #{createtime} + and `expired_day` = #{expiredDay} + and `pay_way` = #{payWay} + and `receipt_num` = #{receiptNum} + and `tenant_id` = #{tenantId} + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxShopMapper.xml b/mallinkService/src/main/resources/mapper/WxShopMapper.xml index 3eea87c3a..e38b64700 100644 --- a/mallinkService/src/main/resources/mapper/WxShopMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxShopMapper.xml @@ -224,5 +224,16 @@ + + + From 1d04ba6c2590dae73758ee128354e01c025a5d3f Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Thu, 6 Sep 2018 13:14:11 +0800 Subject: [PATCH 06/51] =?UTF-8?q?[=E5=BE=AE=E4=BF=A1=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=95=86=E6=A8=A1=E5=BC=8F][=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/simple/shiro/PasswordHelper.java | 10 ++++++++++ .../src/main/java/com/simple/pay/WxPayOrderP.java | 2 +- .../src/main/java/com/simple/pay/WxPayOrderQ.java | 2 +- .../src/main/java/com/simple/pay/WxPayOrderSP.java | 4 ++-- .../src/main/java/com/simple/pay/WxPayOrderSQ.java | 4 ++-- .../com/simple/service/impl/WxPayOrderServiceImpl.java | 3 ++- 6 files changed, 18 insertions(+), 7 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/simple/shiro/PasswordHelper.java b/mallinkAdmin/src/main/java/com/simple/shiro/PasswordHelper.java index 6e5b171e6..19fcae757 100644 --- a/mallinkAdmin/src/main/java/com/simple/shiro/PasswordHelper.java +++ b/mallinkAdmin/src/main/java/com/simple/shiro/PasswordHelper.java @@ -19,5 +19,15 @@ public class PasswordHelper { user.setPassword(newPassword); } + + public static void main(String[] args) { + MallUserInfo user = new MallUserInfo(); + user.setUsername("sadmin"); + user.setPassword("sadmin123"); + PasswordHelper passwordHelper = new PasswordHelper(); + passwordHelper.encryptPassword(user); + System.out.println(user); + System.out.println(user.getPassword()); + } } diff --git a/mallinkService/src/main/java/com/simple/pay/WxPayOrderP.java b/mallinkService/src/main/java/com/simple/pay/WxPayOrderP.java index b2602bc0d..b0d3f0836 100644 --- a/mallinkService/src/main/java/com/simple/pay/WxPayOrderP.java +++ b/mallinkService/src/main/java/com/simple/pay/WxPayOrderP.java @@ -134,7 +134,7 @@ public class WxPayOrderP { @Override public String toString() { - final StringBuilder sb = new StringBuilder("WxPayOrder{"); + final StringBuilder sb = new StringBuilder("WxPayOrderP{"); sb.append("appid='").append(appid).append('\''); sb.append(", mch_id='").append(mch_id).append('\''); sb.append(", nonce_str='").append(nonce_str).append('\''); diff --git a/mallinkService/src/main/java/com/simple/pay/WxPayOrderQ.java b/mallinkService/src/main/java/com/simple/pay/WxPayOrderQ.java index 114d15191..731037ab1 100644 --- a/mallinkService/src/main/java/com/simple/pay/WxPayOrderQ.java +++ b/mallinkService/src/main/java/com/simple/pay/WxPayOrderQ.java @@ -53,7 +53,7 @@ public class WxPayOrderQ { @Override public String toString() { - final StringBuilder sb = new StringBuilder("WxPayOrder{"); + final StringBuilder sb = new StringBuilder("WxPayOrderQ{"); sb.append("appid='").append(appid).append('\''); sb.append(", mch_id='").append(mch_id).append('\''); sb.append(", nonce_str='").append(nonce_str).append('\''); diff --git a/mallinkService/src/main/java/com/simple/pay/WxPayOrderSP.java b/mallinkService/src/main/java/com/simple/pay/WxPayOrderSP.java index 89e0b1037..bdbd1c1c2 100644 --- a/mallinkService/src/main/java/com/simple/pay/WxPayOrderSP.java +++ b/mallinkService/src/main/java/com/simple/pay/WxPayOrderSP.java @@ -152,9 +152,9 @@ public class WxPayOrderSP { @Override public String toString() { - final StringBuilder sb = new StringBuilder("WxPayOrder{"); + final StringBuilder sb = new StringBuilder("WxPayOrderSP{"); sb.append("appid='").append(appid).append('\''); - sb.append("sub_appid='").append(sub_appid).append('\''); + sb.append(", sub_appid='").append(sub_appid).append('\''); sb.append(", mch_id='").append(mch_id).append('\''); sb.append(", sub_mch_id='").append(sub_mch_id).append('\''); sb.append(", nonce_str='").append(nonce_str).append('\''); diff --git a/mallinkService/src/main/java/com/simple/pay/WxPayOrderSQ.java b/mallinkService/src/main/java/com/simple/pay/WxPayOrderSQ.java index 6cfdbca53..2ad1bfc2f 100644 --- a/mallinkService/src/main/java/com/simple/pay/WxPayOrderSQ.java +++ b/mallinkService/src/main/java/com/simple/pay/WxPayOrderSQ.java @@ -71,9 +71,9 @@ public class WxPayOrderSQ { @Override public String toString() { - final StringBuilder sb = new StringBuilder("WxPayOrder{"); + final StringBuilder sb = new StringBuilder("WxPayOrderSQ{"); sb.append("appid='").append(appid).append('\''); - sb.append("sub_appid='").append(sub_appid).append('\''); + sb.append(", sub_appid='").append(sub_appid).append('\''); sb.append(", mch_id='").append(mch_id).append('\''); sb.append(", sub_mch_id='").append(sub_mch_id).append('\''); sb.append(", nonce_str='").append(nonce_str).append('\''); 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 2a6472d4d..cf730db93 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java @@ -205,6 +205,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { // 统一下单 // 服务商模式 String noncestr = Utility.generate32UUID(); WxPayOrderSP wxPayOrderSP = new WxPayOrderSP(); + wxPayOrderSP.setSub_openid(user.getOpenId()); wxPayOrderSP.setAppid(appInfo.getParentAppId()); wxPayOrderSP.setMch_id(payAccount.getMchId()); wxPayOrderSP.setSub_appid(user.getAppId()); @@ -245,7 +246,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { String timestamp = String.valueOf(Utility.getCurrentTimeStamp()); Map sighMap = MapUtil.getOrderMap(); - sighMap.put("appId", returnMap.get("appid")); + sighMap.put("appId", appInfo.getAppId()); sighMap.put("timeStamp", timestamp); sighMap.put("nonceStr", noncestr); sighMap.put("package", "prepay_id=" + prepay_id); From 3827e01036d6faa4f19872e7b5e8251c7260ae52 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Thu, 6 Sep 2018 13:41:02 +0800 Subject: [PATCH 07/51] =?UTF-8?q?[=E5=BE=AE=E4=BF=A1=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E6=9C=8D=E5=8A=A1=E5=95=86=E6=A8=A1=E5=BC=8F][=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/simple/pay/WxRefundOrderSP.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mallinkService/src/main/java/com/simple/pay/WxRefundOrderSP.java b/mallinkService/src/main/java/com/simple/pay/WxRefundOrderSP.java index 426a1aff8..36f3fb4bf 100644 --- a/mallinkService/src/main/java/com/simple/pay/WxRefundOrderSP.java +++ b/mallinkService/src/main/java/com/simple/pay/WxRefundOrderSP.java @@ -126,7 +126,9 @@ public class WxRefundOrderSP { public String toString() { final StringBuilder sb = new StringBuilder("WxRefundOrder{"); sb.append("appid='").append(appid).append('\''); + sb.append(", sub_appid='").append(sub_appid).append('\''); sb.append(", mch_id='").append(mch_id).append('\''); + sb.append(", sub_mch_id='").append(sub_mch_id).append('\''); sb.append(", nonce_str='").append(nonce_str).append('\''); sb.append(", sign='").append(sign).append('\''); sb.append(", out_trade_no='").append(out_trade_no).append('\''); From 66e9b3c363867415d2b364f192a00f5c075881c9 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Thu, 6 Sep 2018 14:40:14 +0800 Subject: [PATCH 08/51] =?UTF-8?q?[=E5=BE=AE=E4=BF=A1=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E7=AD=BE=E5=90=8D=E6=9B=B4=E6=94=B9=E7=AD=BE=E5=90=8D=E7=AE=97?= =?UTF-8?q?=E6=B3=95][=E5=8D=87=E7=BA=A7]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mallinkService/src/main/java/com/simple/pay/WxPayment.java | 5 +++-- .../java/com/simple/service/impl/WxPayOrderServiceImpl.java | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/mallinkService/src/main/java/com/simple/pay/WxPayment.java b/mallinkService/src/main/java/com/simple/pay/WxPayment.java index 3c2bd5919..c5e80934c 100644 --- a/mallinkService/src/main/java/com/simple/pay/WxPayment.java +++ b/mallinkService/src/main/java/com/simple/pay/WxPayment.java @@ -168,7 +168,7 @@ public class WxPayment { sighMap.put("appId", appId); sighMap.put("timeStamp", timestamp); sighMap.put("package", "prepay_id="+prepay_id); - sighMap.put("signType", "MD5"); + //sighMap.put("signType", "MD5"); return buildSignAfterParasMap(params, paternerKey); } @@ -398,7 +398,8 @@ public class WxPayment { params.remove("sign"); String stringA = packageSign(params, false); String stringSignTemp = stringA + "&key=" + partnerKey; - return HashUtil.md5(stringSignTemp).toUpperCase(); + //return HashUtil.md5(stringSignTemp).toUpperCase(); + return HMACSHA256.sha256_HMAC(stringSignTemp, partnerKey); } /** 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 cf730db93..f0e31cb85 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java @@ -189,7 +189,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { sighMap.put("timeStamp", timestamp); sighMap.put("nonceStr", noncestr); sighMap.put("package", "prepay_id=" + prepay_id); - sighMap.put("signType", "MD5"); + //sighMap.put("signType", "MD5"); String signAgent = WxPayment.createSign(sighMap, payAccount.getApiKey()); returnMap.put("timeStamp", timestamp); returnMap.put("nonceStr", noncestr); @@ -250,7 +250,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { sighMap.put("timeStamp", timestamp); sighMap.put("nonceStr", noncestr); sighMap.put("package", "prepay_id=" + prepay_id); - sighMap.put("signType", "MD5"); + //sighMap.put("signType", "MD5"); String signAgent = WxPayment.createSign(sighMap, payAccount.getApiKey()); returnMap.put("timeStamp", timestamp); returnMap.put("nonceStr", noncestr); From c487871e6a3b62747ae4a29eba61c8dd824e5e3d Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Thu, 6 Sep 2018 14:51:46 +0800 Subject: [PATCH 09/51] =?UTF-8?q?[=E5=BE=AE=E4=BF=A1=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E7=AD=BE=E5=90=8D=E6=9B=B4=E6=94=B9=E7=AD=BE=E5=90=8D=E7=AE=97?= =?UTF-8?q?=E6=B3=95][=E5=8D=87=E7=BA=A7]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mallinkService/src/main/java/com/simple/pay/WxPayment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkService/src/main/java/com/simple/pay/WxPayment.java b/mallinkService/src/main/java/com/simple/pay/WxPayment.java index c5e80934c..1dcc4f737 100644 --- a/mallinkService/src/main/java/com/simple/pay/WxPayment.java +++ b/mallinkService/src/main/java/com/simple/pay/WxPayment.java @@ -399,7 +399,7 @@ public class WxPayment { String stringA = packageSign(params, false); String stringSignTemp = stringA + "&key=" + partnerKey; //return HashUtil.md5(stringSignTemp).toUpperCase(); - return HMACSHA256.sha256_HMAC(stringSignTemp, partnerKey); + return HMACSHA256.sha256_HMAC(stringSignTemp, partnerKey).toUpperCase(); } /** From 002a55e9b4d05be1d7f33017dc3da441e43e8e6e Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Thu, 6 Sep 2018 15:06:38 +0800 Subject: [PATCH 10/51] =?UTF-8?q?[=E5=BE=AE=E4=BF=A1=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E7=AD=BE=E5=90=8D=E6=9B=B4=E6=94=B9=E7=AD=BE=E5=90=8D=E7=AE=97?= =?UTF-8?q?=E6=B3=95][=E5=8D=87=E7=BA=A7]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/simple/pay/WxPayment.java | 18 +++++++++++++++++- .../service/impl/WxPayOrderServiceImpl.java | 12 ++++++------ .../service/impl/WxRefundOrderServiceImpl.java | 4 +++- 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/mallinkService/src/main/java/com/simple/pay/WxPayment.java b/mallinkService/src/main/java/com/simple/pay/WxPayment.java index 1dcc4f737..3e587d6c0 100644 --- a/mallinkService/src/main/java/com/simple/pay/WxPayment.java +++ b/mallinkService/src/main/java/com/simple/pay/WxPayment.java @@ -398,7 +398,23 @@ public class WxPayment { params.remove("sign"); String stringA = packageSign(params, false); String stringSignTemp = stringA + "&key=" + partnerKey; - //return HashUtil.md5(stringSignTemp).toUpperCase(); + return HashUtil.md5(stringSignTemp).toUpperCase(); + } + + /** + * 生成签名 + * + * @param params + * 参数 + * @param partnerKey + * 支付密钥 + * @return sign + */ + public static String createSignHMAC(Map params, String partnerKey) { + // 生成签名前先去除sign + params.remove("sign"); + String stringA = packageSign(params, false); + String stringSignTemp = stringA + "&key=" + partnerKey; return HMACSHA256.sha256_HMAC(stringSignTemp, partnerKey).toUpperCase(); } 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 f0e31cb85..f17754813 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java @@ -189,7 +189,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { sighMap.put("timeStamp", timestamp); sighMap.put("nonceStr", noncestr); sighMap.put("package", "prepay_id=" + prepay_id); - //sighMap.put("signType", "MD5"); + sighMap.put("signType", "MD5"); String signAgent = WxPayment.createSign(sighMap, payAccount.getApiKey()); returnMap.put("timeStamp", timestamp); returnMap.put("nonceStr", noncestr); @@ -226,7 +226,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { if(isShare) { payOrderMap.put("profit_sharing", "Y"); } - wxPayOrderSP.setSign(WxPayment.createSign(payOrderMap, payAccount.getApiKey())); + wxPayOrderSP.setSign(WxPayment.createSignHMAC(payOrderMap, payAccount.getApiKey())); String response = WxPay.pushOrder(BeanUtils.toStringMap(wxPayOrderSP)); logger.info("pay order, wechat pushOrder, " + wxPayOrderSP.toString() + ", response: " + response.toString()); Map returnMap = WxPayment.xmlToMap(response); @@ -250,8 +250,8 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { 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()); + sighMap.put("signType", "HMAC-SHA256"); + String signAgent = WxPayment.createSignHMAC(sighMap, payAccount.getApiKey()); returnMap.put("timeStamp", timestamp); returnMap.put("nonceStr", noncestr); returnMap.put("package", "prepay_id=" + prepay_id); @@ -360,7 +360,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { try { Map map = BeanUtils.toStringMap(payOrderSQ); - payOrderSQ.setSign(WxPayment.createSign(map, payAccount.getApiKey())); + payOrderSQ.setSign(WxPayment.createSignHMAC(map, payAccount.getApiKey())); map = BeanUtils.toStringMap(payOrderSQ); String response = WxPay.orderQuery(map); @@ -450,7 +450,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { try { Map map = BeanUtils.toStringMap(payOrderSC); - payOrderSC.setSign(WxPayment.createSign(map, payAccount.getApiKey())); + payOrderSC.setSign(WxPayment.createSignHMAC(map, payAccount.getApiKey())); map = BeanUtils.toStringMap(payOrderSC); String response = WxPay.closeOrder(map); 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 196c3b571..c472d7a85 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java @@ -402,6 +402,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { // 实际支付 // 向微信提交退款申请 if (payAccount.getType() == EnumPayMode.MCH.getCode()) { + // 普通商户模式 String noncestr = Utility.generate32UUID(); WxRefundOrderP wxRefundOrderP = new WxRefundOrderP(); wxRefundOrderP.setAppid(appInfo.getAppId()); @@ -474,6 +475,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { } } } else { + // 服务商模式 String noncestr = Utility.generate32UUID(); WxRefundOrderSP wxRefundOrderSP = new WxRefundOrderSP(); wxRefundOrderSP.setAppid(appInfo.getParentAppId()); @@ -509,7 +511,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { throw new MallinkException(ErrorCode.SYS_PARAMETER_CAST_ERROR.getCode(), "退款签名异常"); } - String signAgent = WxPayment.createSign(signMap, payAccount.getApiKey()); + String signAgent = WxPayment.createSignHMAC(signMap, payAccount.getApiKey()); signMap.put("sign", signAgent); String response = null; try { From 4f717a847519df562530d843559a55e22eb59f95 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Thu, 6 Sep 2018 15:26:53 +0800 Subject: [PATCH 11/51] =?UTF-8?q?[=E5=BE=AE=E4=BF=A1=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E7=AD=BE=E5=90=8D=E6=9B=B4=E6=94=B9=E7=AD=BE=E5=90=8D=E7=AE=97?= =?UTF-8?q?=E6=B3=95][=E5=8D=87=E7=BA=A7]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/simple/pay/WxPayOrderSP.java | 9 +++++++++ .../src/main/java/com/simple/pay/WxPayOrderSQ.java | 9 +++++++++ .../src/main/java/com/simple/pay/WxRefundOrderSP.java | 9 +++++++++ .../com/simple/service/impl/WxPayOrderServiceImpl.java | 3 +++ .../simple/service/impl/WxRefundOrderServiceImpl.java | 1 + 5 files changed, 31 insertions(+) diff --git a/mallinkService/src/main/java/com/simple/pay/WxPayOrderSP.java b/mallinkService/src/main/java/com/simple/pay/WxPayOrderSP.java index bdbd1c1c2..36c2efc5b 100644 --- a/mallinkService/src/main/java/com/simple/pay/WxPayOrderSP.java +++ b/mallinkService/src/main/java/com/simple/pay/WxPayOrderSP.java @@ -11,6 +11,7 @@ public class WxPayOrderSP { private String sub_mch_id; // 特约商户号 private String nonce_str; // 随机字符串 private String sign; // 签名 + private String sign_type; // 签名类型 private String body; // 商品简单描述 128 private String out_trade_no; // 商户订单号 private Integer total_fee; // 支付金额 @@ -86,6 +87,14 @@ public class WxPayOrderSP { this.sign = sign; } + public String getSign_type() { + return sign_type; + } + + public void setSign_type(String sign_type) { + this.sign_type = sign_type; + } + public String getBody() { return body; } diff --git a/mallinkService/src/main/java/com/simple/pay/WxPayOrderSQ.java b/mallinkService/src/main/java/com/simple/pay/WxPayOrderSQ.java index 2ad1bfc2f..b8156c472 100644 --- a/mallinkService/src/main/java/com/simple/pay/WxPayOrderSQ.java +++ b/mallinkService/src/main/java/com/simple/pay/WxPayOrderSQ.java @@ -10,6 +10,7 @@ public class WxPayOrderSQ { private String sub_mch_id; // 特约商户号 private String nonce_str; // 随机字符串 private String sign; // 签名 + private String sign_type; // 签名类型 private String out_trade_no; // 商户订单号 @@ -61,6 +62,14 @@ public class WxPayOrderSQ { this.sign = sign; } + public String getSign_type() { + return sign_type; + } + + public void setSign_type(String sign_type) { + this.sign_type = sign_type; + } + public String getOut_trade_no() { return out_trade_no; } diff --git a/mallinkService/src/main/java/com/simple/pay/WxRefundOrderSP.java b/mallinkService/src/main/java/com/simple/pay/WxRefundOrderSP.java index 36f3fb4bf..d1fa64dee 100644 --- a/mallinkService/src/main/java/com/simple/pay/WxRefundOrderSP.java +++ b/mallinkService/src/main/java/com/simple/pay/WxRefundOrderSP.java @@ -10,6 +10,7 @@ public class WxRefundOrderSP { private String sub_mch_id; // 特约商户号 private String nonce_str; // 随机字符串 private String sign; // 签名 + private String sign_type; // 签名类型 private String transaction_id; // 微信订单号 private String out_trade_no; // 商户订单号 private String out_refund_no; // 商户退款单号 @@ -66,6 +67,14 @@ public class WxRefundOrderSP { this.sign = sign; } + public String getSign_type() { + return sign_type; + } + + public void setSign_type(String sign_type) { + this.sign_type = sign_type; + } + public String getTransaction_id() { return transaction_id; } 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 f17754813..67f4ebd6b 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java @@ -226,6 +226,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { if(isShare) { payOrderMap.put("profit_sharing", "Y"); } + wxPayOrderSP.setSign_type("HMAC-SHA256"); wxPayOrderSP.setSign(WxPayment.createSignHMAC(payOrderMap, payAccount.getApiKey())); String response = WxPay.pushOrder(BeanUtils.toStringMap(wxPayOrderSP)); logger.info("pay order, wechat pushOrder, " + wxPayOrderSP.toString() + ", response: " + response.toString()); @@ -360,6 +361,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { try { Map map = BeanUtils.toStringMap(payOrderSQ); + payOrderSQ.setSign_type("HMAC-SHA256"); payOrderSQ.setSign(WxPayment.createSignHMAC(map, payAccount.getApiKey())); map = BeanUtils.toStringMap(payOrderSQ); @@ -450,6 +452,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { try { Map map = BeanUtils.toStringMap(payOrderSC); + payOrderSC.setSign_type("HMAC-SHA256"); payOrderSC.setSign(WxPayment.createSignHMAC(map, payAccount.getApiKey())); map = BeanUtils.toStringMap(payOrderSC); String response = WxPay.closeOrder(map); 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 c472d7a85..c8f5346fa 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java @@ -512,6 +512,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { } String signAgent = WxPayment.createSignHMAC(signMap, payAccount.getApiKey()); + signMap.put("sign_type", "HMAC-SHA256"); signMap.put("sign", signAgent); String response = null; try { From 0bd861d5e7c212839fd6bb289fc2d541439fc7f6 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Thu, 6 Sep 2018 15:35:02 +0800 Subject: [PATCH 12/51] =?UTF-8?q?[=E5=BE=AE=E4=BF=A1=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E6=9B=B4=E6=94=B9=E7=AD=BE=E5=90=8D=E7=AE=97=E6=B3=95][?= =?UTF-8?q?=E5=8D=87=E7=BA=A7]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mallinkService/src/main/java/com/simple/pay/WxPayment.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mallinkService/src/main/java/com/simple/pay/WxPayment.java b/mallinkService/src/main/java/com/simple/pay/WxPayment.java index 3e587d6c0..9eb183287 100644 --- a/mallinkService/src/main/java/com/simple/pay/WxPayment.java +++ b/mallinkService/src/main/java/com/simple/pay/WxPayment.java @@ -1,6 +1,7 @@ package com.simple.pay; import com.simple.utils.*; +import org.apache.commons.codec.digest.HmacUtils; import org.apache.commons.lang3.StringUtils; import java.io.UnsupportedEncodingException; @@ -415,7 +416,7 @@ public class WxPayment { params.remove("sign"); String stringA = packageSign(params, false); String stringSignTemp = stringA + "&key=" + partnerKey; - return HMACSHA256.sha256_HMAC(stringSignTemp, partnerKey).toUpperCase(); + return HmacUtils.hmacSha256Hex(partnerKey, stringSignTemp).toUpperCase(); } /** From a3ec2d4d894067e40ceea6b0ba44c457c856c517 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Thu, 6 Sep 2018 16:01:51 +0800 Subject: [PATCH 13/51] =?UTF-8?q?[=E6=95=B0=E6=8D=AE=E5=A1=94=E5=8F=B0][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9]=E8=BF=90=E8=90=A5=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=A7=9F=E9=87=91=E5=87=BA=E7=A7=9F=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/simple/domain/po/WxBillRent.java | 13 ++++++++++ .../com/simple/mapper/WxBillRentMapper.java | 2 ++ .../service/impl/DataTowerServiceImpl.java | 26 +++++++++++++++++++ .../resources/mapper/WxBillRentMapper.xml | 11 ++++++-- 4 files changed, 50 insertions(+), 2 deletions(-) diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxBillRent.java b/mallinkService/src/main/java/com/simple/domain/po/WxBillRent.java index 0c4b7238a..63edafde8 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxBillRent.java +++ b/mallinkService/src/main/java/com/simple/domain/po/WxBillRent.java @@ -89,6 +89,11 @@ public class WxBillRent implements Serializable { @io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId") private String tenantId; + /*欠缴**/ + @io.swagger.annotations.ApiModelProperty(value="欠缴",name="owe") + private BigDecimal owe; + + public Integer getShopId() { return shopId; } @@ -184,6 +189,14 @@ public class WxBillRent implements Serializable { this.wxMerchant = wxMerchant; } + public BigDecimal getOwe() { + return owe; + } + + public void setOwe(BigDecimal owe) { + this.owe = owe; + } + public WxShop getWxShop() { return wxShop; } diff --git a/mallinkService/src/main/java/com/simple/mapper/WxBillRentMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxBillRentMapper.java index 8bbb53c04..69e8414c8 100644 --- a/mallinkService/src/main/java/com/simple/mapper/WxBillRentMapper.java +++ b/mallinkService/src/main/java/com/simple/mapper/WxBillRentMapper.java @@ -12,4 +12,6 @@ public interface WxBillRentMapper extends CommonMapper { List> findListMap(WxBillRent record); + Map queryPayInfo(Map params); + } diff --git a/mallinkService/src/main/java/com/simple/service/impl/DataTowerServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/DataTowerServiceImpl.java index 63b316e7f..3e80e330a 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/DataTowerServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/DataTowerServiceImpl.java @@ -13,6 +13,7 @@ import com.simple.utils.DateUtils; import com.simple.utils.HashUtil; import com.simple.utils.HttpUtil; import org.apache.log4j.Logger; +import org.apache.poi.ss.usermodel.DateUtil; import org.apache.shiro.codec.Base64; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -46,6 +47,9 @@ public class DataTowerServiceImpl implements DataTowerService { @Autowired WxMallMapper wxMallMapper; + @Autowired + WxBillRentMapper wxBillRentMapper; + @Override @@ -78,6 +82,28 @@ public class DataTowerServiceImpl implements DataTowerService { datamap.put("wczl", wczl+"%"); } + //租金 + Map params=new HashMap<>(); + params.put("tenantId",tenantId); + Calendar calendar = Calendar.getInstance();//日历对象 + calendar.setTime(new Date());//设置当前日期 + calendar.add(Calendar.MONTH, -1);//月份减一 + params.put("receiveDate", DateUtils.date2String(calendar.getTime(),"yyyy-MM")); + Map payinfo=wxBillRentMapper.queryPayInfo(params); + if(payinfo!=null){ + BigDecimal receivepay = (BigDecimal) payinfo.get("receivepay"); + BigDecimal pay = (BigDecimal) payinfo.get("pay"); + BigDecimal divide = receivepay.divide(pay); + double zjcjl = divide.doubleValue()*100; + datamap.put("ysje",receivepay); + datamap.put("ssje",pay); + datamap.put("zjsjl",zjcjl+"%"); + }else{ + datamap.put("ysje",0); + datamap.put("ssje",0); + datamap.put("zjsjl",0); + } + //上报 WxMerchant wxMerchant = new WxMerchant(); wxMerchant.setTenantId(tenantId); diff --git a/mallinkService/src/main/resources/mapper/WxBillRentMapper.xml b/mallinkService/src/main/resources/mapper/WxBillRentMapper.xml index b1e29738a..9288e348a 100644 --- a/mallinkService/src/main/resources/mapper/WxBillRentMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxBillRentMapper.xml @@ -17,11 +17,13 @@ + + - `id`,`shop_id`,`user_area`,`price`,`need_pay`,`receive_pay`,`pay`,`receive_period`,`receive_date`,`pay_date`,`createtime`,`expired_day`,`pay_way`,`receipt_num`,`tenant_id` + `id`,`shop_id`,`user_area`,`price`,`need_pay`,`receive_pay`,`pay`,`receive_period`,`receive_date`,`pay_date`,`createtime`,`expired_day`,`pay_way`,`receipt_num`,`tenant_id`,`owe` @@ -59,7 +61,7 @@ select br.id,br.shop_id shopId,br.user_area userArea,br.price,br.need_pay needPay,br.receive_pay receivePay, br.pay,br.receive_period receivePeriod,br.receive_date receiveDate,br.pay_date payDate,br.createtime, br.expired_day expiredDay,br.pay_way payWay,br.receipt_num receiptNum,m.`name` merchantName, - s.build_area buildArea,s.operation_area operationArea,s.shop_number shopNumber + s.build_area buildArea,s.operation_area operationArea,s.shop_number shopNumber,br.owe from wx_bill_rent br left join wx_merchant_shop ms on br.shop_id=ms.shop_id and ms.is_del=0 inner join wx_merchant m on ms.merchant_id=m.id inner join wx_shop s on ms.shop_id=s.id @@ -89,6 +91,11 @@ + From 6d97a0b6e9f00e65fa34e4bb39f6b52d8266bb8c Mon Sep 17 00:00:00 2001 From: gongbiao Date: Thu, 6 Sep 2018 16:20:55 +0800 Subject: [PATCH 14/51] =?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=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E7=BB=91=E5=AE=9A=E7=9A=84=E5=95=86=E6=88=B7?= =?UTF-8?q?=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mallinkService/src/main/resources/mapper/WxShopMapper.xml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mallinkService/src/main/resources/mapper/WxShopMapper.xml b/mallinkService/src/main/resources/mapper/WxShopMapper.xml index e38b64700..465d911c6 100644 --- a/mallinkService/src/main/resources/mapper/WxShopMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxShopMapper.xml @@ -127,8 +127,10 @@ select s.id,s.shop_number shopNumber,s.build_area buildArea, s.img_url imgUrl,s.operation_area operationArea, - s.status,b.building_name building,f.floor_name floor - from wx_shop s left join wx_mall_building b + s.status,b.building_name building,f.floor_name floor,m.`name` merchantName + from wx_shop s inner join wx_merchant_shop ms on ms.shop_id=s.id and ms.is_del=0 + inner join wx_merchant m on ms.merchant_id=m.id + left join wx_mall_building b on s.building=b.id left join wx_mall_floor f on s.floor=f.id where 1 = 1 From fcb78336d2171ca1f288542b0c8395ee50be108d Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Thu, 6 Sep 2018 15:44:47 +0800 Subject: [PATCH 15/51] =?UTF-8?q?[=E5=BE=AE=E4=BF=A1=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E6=9B=B4=E6=94=B9=E7=AD=BE=E5=90=8D=E7=AE=97=E6=B3=95][?= =?UTF-8?q?=E5=8D=87=E7=BA=A7]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/simple/service/impl/WxPayOrderServiceImpl.java | 7 ++++--- .../com/simple/service/impl/WxRefundOrderServiceImpl.java | 2 +- 2 files changed, 5 insertions(+), 4 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 67f4ebd6b..7a60a0f3c 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java @@ -222,11 +222,11 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { Date futureDate = new Date(); futureDate.setTime(currentDate.getTime() + 15*60*1000); wxPayOrderSP.setTime_expire(Utility.getDataFormatStringYYYYMMDDHHmmss(futureDate)); // 15分钟后结束 + wxPayOrderSP.setSign_type("HMAC-SHA256"); Map payOrderMap = BeanUtils.toStringMap(wxPayOrderSP); if(isShare) { payOrderMap.put("profit_sharing", "Y"); } - wxPayOrderSP.setSign_type("HMAC-SHA256"); wxPayOrderSP.setSign(WxPayment.createSignHMAC(payOrderMap, payAccount.getApiKey())); String response = WxPay.pushOrder(BeanUtils.toStringMap(wxPayOrderSP)); logger.info("pay order, wechat pushOrder, " + wxPayOrderSP.toString() + ", response: " + response.toString()); @@ -257,6 +257,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { returnMap.put("nonceStr", noncestr); returnMap.put("package", "prepay_id=" + prepay_id); returnMap.put("paySign", signAgent); + returnMap.put("signType", "HMAC-SHA256"); logger.info("back to UI: " +returnMap.toString()); return new ResultData(Result.SUCCESS, "创建支付订单成功", returnMap); } else { @@ -358,10 +359,10 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { payOrderSQ.setSub_mch_id(payAccount.getSubMchId()); payOrderSQ.setNonce_str(noncestr); payOrderSQ.setOut_trade_no(record.getPayOrderNo()); + payOrderSQ.setSign_type("HMAC-SHA256"); try { Map map = BeanUtils.toStringMap(payOrderSQ); - payOrderSQ.setSign_type("HMAC-SHA256"); payOrderSQ.setSign(WxPayment.createSignHMAC(map, payAccount.getApiKey())); map = BeanUtils.toStringMap(payOrderSQ); @@ -449,10 +450,10 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { payOrderSC.setSub_mch_id(payAccount.getSubMchId()); payOrderSC.setNonce_str(noncestr); payOrderSC.setOut_trade_no(record.getPayOrderNo()); + payOrderSC.setSign_type("HMAC-SHA256"); try { Map map = BeanUtils.toStringMap(payOrderSC); - payOrderSC.setSign_type("HMAC-SHA256"); payOrderSC.setSign(WxPayment.createSignHMAC(map, payAccount.getApiKey())); map = BeanUtils.toStringMap(payOrderSC); String response = WxPay.closeOrder(map); 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 c8f5346fa..f810216fe 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java @@ -502,6 +502,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { wxRefundOrderSP.setRefund_desc("用户自己退款"); } wxRefundOrderSP.setNotify_url(payAccount.getNotifyUrl() + "/refund"); + wxRefundOrderSP.setSign_type("HMAC-SHA256"); Map signMap = null; try { @@ -512,7 +513,6 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { } String signAgent = WxPayment.createSignHMAC(signMap, payAccount.getApiKey()); - signMap.put("sign_type", "HMAC-SHA256"); signMap.put("sign", signAgent); String response = null; try { From 605df3398a372be5a7f4353e367bdb3249e38b6a Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Thu, 6 Sep 2018 16:01:39 +0800 Subject: [PATCH 16/51] =?UTF-8?q?[=E5=88=86=E8=B4=A6=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E6=94=AF=E6=8C=81][=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/config/PayProperty.java | 13 ------------- mallinkAdmin/src/main/resources/application.yml | 3 +-- .../main/java/com/simple/config/PayProperty.java | 13 ------------- mallinkBApi/src/main/resources/application.yml | 3 +-- .../main/java/com/simple/config/PayProperty.java | 13 ------------- .../simple/controller/WxPayOrderController.java | 2 +- mallinkCApi/src/main/resources/application.yml | 1 - .../java/com/simple/domain/po/WxPayAccount.java | 14 +++++++++++--- .../java/com/simple/service/WxPayOrderService.java | 2 +- .../simple/service/impl/WxPayOrderServiceImpl.java | 4 ++-- 10 files changed, 17 insertions(+), 51 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/simple/config/PayProperty.java b/mallinkAdmin/src/main/java/com/simple/config/PayProperty.java index d7df4bd79..d19332327 100644 --- a/mallinkAdmin/src/main/java/com/simple/config/PayProperty.java +++ b/mallinkAdmin/src/main/java/com/simple/config/PayProperty.java @@ -14,11 +14,6 @@ public class PayProperty { */ private boolean real; - /** - * 是否分账 - */ - private boolean share; - public boolean isReal() { return real; } @@ -26,12 +21,4 @@ public class PayProperty { public void setReal(boolean real) { this.real = real; } - - public boolean isShare() { - return share; - } - - public void setShare(boolean share) { - this.share = share; - } } diff --git a/mallinkAdmin/src/main/resources/application.yml b/mallinkAdmin/src/main/resources/application.yml index 15347830d..d0ab85172 100644 --- a/mallinkAdmin/src/main/resources/application.yml +++ b/mallinkAdmin/src/main/resources/application.yml @@ -39,5 +39,4 @@ mapper: - com.simple.common.CommonMapper pay: - real: true - share: false \ No newline at end of file + real: true \ No newline at end of file diff --git a/mallinkBApi/src/main/java/com/simple/config/PayProperty.java b/mallinkBApi/src/main/java/com/simple/config/PayProperty.java index d7df4bd79..d19332327 100644 --- a/mallinkBApi/src/main/java/com/simple/config/PayProperty.java +++ b/mallinkBApi/src/main/java/com/simple/config/PayProperty.java @@ -14,11 +14,6 @@ public class PayProperty { */ private boolean real; - /** - * 是否分账 - */ - private boolean share; - public boolean isReal() { return real; } @@ -26,12 +21,4 @@ public class PayProperty { public void setReal(boolean real) { this.real = real; } - - public boolean isShare() { - return share; - } - - public void setShare(boolean share) { - this.share = share; - } } diff --git a/mallinkBApi/src/main/resources/application.yml b/mallinkBApi/src/main/resources/application.yml index d650406d2..663167d37 100644 --- a/mallinkBApi/src/main/resources/application.yml +++ b/mallinkBApi/src/main/resources/application.yml @@ -39,5 +39,4 @@ mapper: - com.simple.common.CommonMapper pay: - real: true - share: false \ No newline at end of file + real: true \ No newline at end of file diff --git a/mallinkCApi/src/main/java/com/simple/config/PayProperty.java b/mallinkCApi/src/main/java/com/simple/config/PayProperty.java index 0cc4b420f..2a4d23e73 100644 --- a/mallinkCApi/src/main/java/com/simple/config/PayProperty.java +++ b/mallinkCApi/src/main/java/com/simple/config/PayProperty.java @@ -16,11 +16,6 @@ public class PayProperty { */ private boolean real; - /** - * 是否分账 - */ - private boolean share; - public boolean isReal() { return real; } @@ -28,12 +23,4 @@ public class PayProperty { public void setReal(boolean real) { this.real = real; } - - public boolean isShare() { - return share; - } - - public void setShare(boolean share) { - this.share = share; - } } diff --git a/mallinkCApi/src/main/java/com/simple/controller/WxPayOrderController.java b/mallinkCApi/src/main/java/com/simple/controller/WxPayOrderController.java index 8f12e98b0..425817198 100644 --- a/mallinkCApi/src/main/java/com/simple/controller/WxPayOrderController.java +++ b/mallinkCApi/src/main/java/com/simple/controller/WxPayOrderController.java @@ -72,7 +72,7 @@ public class WxPayOrderController extends BaseController { try { record.setIp(IPUtil.getIpAddr(request)); - return wxPayOrderService.createPayOrder(payProperty.isReal(), payProperty.isShare(), appInfo, user, record, EnumPayWay.PAY_WAY_WECHAT); + return wxPayOrderService.createPayOrder(payProperty.isReal(), appInfo, user, record, EnumPayWay.PAY_WAY_WECHAT); } catch (MallinkException e) { logger.error("payment wechat, order create error, req 2: " + record.toString() + ", e:" + e.getMessage()); return new ResultData(e.getErrorCode(), e.getMessage()); diff --git a/mallinkCApi/src/main/resources/application.yml b/mallinkCApi/src/main/resources/application.yml index 15c1bee3c..6f51968a0 100644 --- a/mallinkCApi/src/main/resources/application.yml +++ b/mallinkCApi/src/main/resources/application.yml @@ -40,4 +40,3 @@ mapper: pay: real: true - share: false diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxPayAccount.java b/mallinkService/src/main/java/com/simple/domain/po/WxPayAccount.java index 1afd6d0df..7545a7682 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxPayAccount.java +++ b/mallinkService/src/main/java/com/simple/domain/po/WxPayAccount.java @@ -62,6 +62,9 @@ public class WxPayAccount implements Serializable { /**商户模式**/ @io.swagger.annotations.ApiModelProperty(value="商户模式-0:普通商户模式1:服务商模式",name="type") private Integer type; + /**是否开启分账**/ + @io.swagger.annotations.ApiModelProperty(value="0:未开启分账1:开启分账",name="type") + private boolean share; public String getTenantId() { return tenantId; @@ -104,15 +107,18 @@ public class WxPayAccount implements Serializable { public void setCertPath(String _certPath) { certPath = _certPath; } - public Integer getType() { return type; } - public void setType(Integer type) { this.type = type; } - + public boolean isShare() { + return share; + } + public void setShare(boolean share) { + this.share = share; + } public String getPayNotifyUrl() { return notifyUrl + "/pay"; } @@ -123,6 +129,7 @@ public class WxPayAccount implements Serializable { return notifyUrl + "/separate"; } + public static enum Field { Id_ASC("`id` ASC"),Id_DESC("`id` DESC") @@ -133,6 +140,7 @@ public class WxPayAccount implements Serializable { ,NotifyUrl_ASC("`notify_url` ASC"),NotifyUrl_DESC("`notify_url` DESC") ,CertPath_ASC("`cert_path` ASC"),CertPath_DESC("`cert_path` DESC") ,Type_ASC("`type` ASC"),Type_DESC("`type` DESC") + ,Share_ASC("`share` ASC"),Share_DESC("`share` DESC") ; private String value; Field(String value){ diff --git a/mallinkService/src/main/java/com/simple/service/WxPayOrderService.java b/mallinkService/src/main/java/com/simple/service/WxPayOrderService.java index 1d110f4a6..1065e3d5f 100644 --- a/mallinkService/src/main/java/com/simple/service/WxPayOrderService.java +++ b/mallinkService/src/main/java/com/simple/service/WxPayOrderService.java @@ -18,7 +18,7 @@ public interface WxPayOrderService { * @param payWay * @return */ - ResultData createPayOrder(boolean isReal, boolean isShare, WxAppinfo appInfo, WxCUser user, WxPayOrder record, EnumPayWay payWay); + ResultData createPayOrder(boolean isReal, WxAppinfo appInfo, WxCUser user, WxPayOrder record, EnumPayWay payWay); /** * 微信支付订单查询 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 7a60a0f3c..1c7b47fcd 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java @@ -94,7 +94,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { "\"XML_FORMAT_ERROR\":{\"detail\":\"XML格式错误\t\",\"reason\":\"XML格式错误\",\"reason\":\"请检查XML参数格式是否正确\"}}"); @Override - public ResultData createPayOrder(boolean isReal, boolean isShare, WxAppinfo appInfo, WxCUser user, WxPayOrder record, EnumPayWay payWay) { + public ResultData createPayOrder(boolean isReal, WxAppinfo appInfo, WxCUser user, WxPayOrder record, EnumPayWay payWay) { final IdWorker idworker = IdWorker.get(); try { @@ -224,7 +224,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { wxPayOrderSP.setTime_expire(Utility.getDataFormatStringYYYYMMDDHHmmss(futureDate)); // 15分钟后结束 wxPayOrderSP.setSign_type("HMAC-SHA256"); Map payOrderMap = BeanUtils.toStringMap(wxPayOrderSP); - if(isShare) { + if(payAccount.isShare()) { payOrderMap.put("profit_sharing", "Y"); } wxPayOrderSP.setSign(WxPayment.createSignHMAC(payOrderMap, payAccount.getApiKey())); From a521198dfcb774ccb356c6cb6386067f6e4000f8 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Thu, 6 Sep 2018 16:08:35 +0800 Subject: [PATCH 17/51] =?UTF-8?q?[=E5=88=86=E8=B4=A6=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E6=94=AF=E6=8C=81][=E4=BF=AE=E6=94=B9]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/WxPayAccountMapper.xml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/mallinkService/src/main/resources/mapper/WxPayAccountMapper.xml b/mallinkService/src/main/resources/mapper/WxPayAccountMapper.xml index 1651b82c4..eda1b2aa4 100644 --- a/mallinkService/src/main/resources/mapper/WxPayAccountMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxPayAccountMapper.xml @@ -8,11 +8,12 @@ - + + - `id`,`mch_id`,`parent_mch_id`,`api_key`,`notify_url`,`cert_path`,`type` + `id`,`mch_id`,`parent_mch_id`,`api_key`,`notify_url`,`cert_path`,`type`,`share` @@ -42,7 +43,10 @@ and `cert_path` like concat('%', #{certPath},'%') - and `type` like concat('%', #{type},'%') + and `type` = #{type} + + + and `share` = #{share} and id in From 780d3d02220044f2dac392a804ee75c94412aa33 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Thu, 6 Sep 2018 16:09:08 +0800 Subject: [PATCH 18/51] =?UTF-8?q?[=E5=88=86=E8=B4=A6][=E6=96=B0=E5=A2=9E]:?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E8=AE=A2=E5=8D=95=E6=B7=BB=E5=8A=A0=E5=88=86?= =?UTF-8?q?=E8=B4=A6=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/simple/domain/po/WxPayOrder.java | 13 +++++++++++++ .../src/main/resources/mapper/WxPayOrderMapper.xml | 6 +++++- 2 files changed, 18 insertions(+), 1 deletion(-) 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 f9dad36e2..bf58749d3 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxPayOrder.java +++ b/mallinkService/src/main/java/com/simple/domain/po/WxPayOrder.java @@ -84,6 +84,9 @@ public class WxPayOrder implements Serializable { /*支付状态: 0-支付中;1-支付成功;2-支付失败**/ @io.swagger.annotations.ApiModelProperty(value="支付状态: 0-支付中;1-支付成功;2-支付失败",name="payOrderStatus") private Integer payOrderStatus; + /*分账状态: 0-未分账;1-分账**/ + @io.swagger.annotations.ApiModelProperty(value="分账状态: 0-未分账;1-分账",name="payOrderStatus") + private boolean share; /*支付失败原因**/ @io.swagger.annotations.ApiModelProperty(value="支付失败原因",name="failReason") private String failReason; @@ -174,6 +177,15 @@ public class WxPayOrder implements Serializable { public void setPayOrderStatus(Integer _payOrderStatus) { payOrderStatus = _payOrderStatus; } + + public boolean isShare() { + return share; + } + + public void setShare(boolean share) { + this.share = share; + } + public String getFailReason() { return failReason; } @@ -200,6 +212,7 @@ public class WxPayOrder implements Serializable { ,PayVendor_ASC("`pay_vendor` ASC"),PayVendor_DESC("`pay_vendor` DESC") ,PayOrderNo_ASC("`pay_order_no` ASC"),PayOrderNo_DESC("`pay_order_no` DESC") ,PayOrderStatus_ASC("`pay_order_status` ASC"),PayOrderStatus_DESC("`pay_order_status` DESC") + ,Share_ASC("`share` ASC"),Share_DESC("`share` DESC") ,FailReason_ASC("`fail_reason` ASC"),FailReason_DESC("`fail_reason` DESC") ; private String value; diff --git a/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml index 526b439f1..ba43d7505 100644 --- a/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml @@ -17,11 +17,12 @@ + - `id`,`tenant_id`,`create_time`,`update_time`,`order_id`,`c_user_id`,`ip`,`pay_amount`,`pay_time_start`,`pay_time_end`,`prepay_id`,`transaction_id`,`pay_vendor`,`pay_order_no`,`pay_order_status`,`fail_reason` + `id`,`tenant_id`,`create_time`,`update_time`,`order_id`,`c_user_id`,`ip`,`pay_amount`,`pay_time_start`,`pay_time_end`,`prepay_id`,`transaction_id`,`pay_vendor`,`pay_order_no`,`pay_order_status`,`share`,`fail_reason` @@ -86,6 +87,9 @@ and `pay_order_status` = #{payOrderStatus} + + and `share` = #{share} + and `fail_reason` like concat('%', #{failReason},'%') From 44088730c01427667e3c5f6fd79c8b449087f34f Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Thu, 6 Sep 2018 16:25:35 +0800 Subject: [PATCH 19/51] =?UTF-8?q?[=E5=88=86=E8=B4=A6][=E6=96=B0=E5=A2=9E]:?= =?UTF-8?q?=E5=88=86=E8=B4=A6=E6=A8=A1=E5=BC=8F=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/WxPayOrderServiceImpl.java | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 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 1c7b47fcd..c18ef4518 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java @@ -63,6 +63,8 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { @Autowired WxMerchantMapper wxMerchantMapper; + @Autowired + WxProfitSharingReceiverMapper wxProfitSharingReceiverMapper; JSONObject errorMap = JSON.parseObject("{" + "\"NOAUTH\":{\"detail\":\"商户无此接口权限\",\"reason\":\"商户未开通此接口权限\",\"resolution\":\"请商户前往申请此接口权限\"}," + @@ -97,6 +99,8 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { public ResultData createPayOrder(boolean isReal, WxAppinfo appInfo, WxCUser user, WxPayOrder record, EnumPayWay payWay) { final IdWorker idworker = IdWorker.get(); + boolean isShare = false; + try { // 1. check 订单 WxOrder order = wxOrderMapper.selectByPrimaryKey(record.getOrderId()); @@ -111,6 +115,21 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { if (order.getPaymentType() != EnumPayType.PAY_PAYMENT.getCode()) { return new ResultData(ErrorCode.PAY_ORDER_IS_NOT_PAYMENT); } + WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(appInfo.getPayId()); + if (payAccount.isShare()) { + isShare = true; + } + // 1.5 check 分账 receive + if (isShare) { + WxProfitSharingReceiver receiver = new WxProfitSharingReceiver(); + receiver.setMerchantId(order.getMerchantId()); + List merList = wxProfitSharingReceiverMapper.findList(receiver); + if (merList.size() > 0) { + isShare = true; + } else { + isShare = false; + } + } // 2. check 是否有支付订单 Date currentDate = new Date(); List list = wxPayOrderMapper.findList(record); @@ -131,6 +150,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { record.setPayAmount(order.getPayment()); record.setPayVendor(EnumPayWay.PAY_WAY_WEAPP.getCode()); record.setPayOrderStatus(EnumPayStatus.PAY_WAY_WAIT.getCode()); + record.setShare(isShare); int sqlRow = wxPayOrderMapper.insertSelective(record); if (sqlRow != 1) { @@ -139,10 +159,11 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } } else { record = list.get(0); + record.setShare(isShare); payOrderNo = String.valueOf(record.getId()); } - WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(appInfo.getPayId()); + if (isReal) { // 微信实际支付 if (payAccount.getType() == EnumPayMode.MCH.getCode()) { @@ -224,7 +245,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { wxPayOrderSP.setTime_expire(Utility.getDataFormatStringYYYYMMDDHHmmss(futureDate)); // 15分钟后结束 wxPayOrderSP.setSign_type("HMAC-SHA256"); Map payOrderMap = BeanUtils.toStringMap(wxPayOrderSP); - if(payAccount.isShare()) { + if(isShare) { payOrderMap.put("profit_sharing", "Y"); } wxPayOrderSP.setSign(WxPayment.createSignHMAC(payOrderMap, payAccount.getApiKey())); From 5b79eaccb0d6207ca84ff8b54f750805279b6a8b Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Thu, 6 Sep 2018 16:46:03 +0800 Subject: [PATCH 20/51] =?UTF-8?q?[=E5=88=86=E8=B4=A6][=E6=96=B0=E5=A2=9E]:?= =?UTF-8?q?=E5=88=86=E8=B4=A6=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/simple/pay/WxPayOrderSP.java | 10 ++++++++++ .../com/simple/service/impl/WxPayOrderServiceImpl.java | 5 +++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/mallinkService/src/main/java/com/simple/pay/WxPayOrderSP.java b/mallinkService/src/main/java/com/simple/pay/WxPayOrderSP.java index 36c2efc5b..be44f6ebe 100644 --- a/mallinkService/src/main/java/com/simple/pay/WxPayOrderSP.java +++ b/mallinkService/src/main/java/com/simple/pay/WxPayOrderSP.java @@ -22,6 +22,7 @@ public class WxPayOrderSP { private String time_start; // 开始时间 private String time_expire; // 失效时间 private String sub_openid; // sub_openId + private String profit_sharing; // 是否开启分账 public String getTime_start() { return time_start; @@ -159,6 +160,14 @@ public class WxPayOrderSP { this.sub_openid = sub_openid; } + public String getProfit_sharing() { + return profit_sharing; + } + + public void setProfit_sharing(String profit_sharing) { + this.profit_sharing = profit_sharing; + } + @Override public String toString() { final StringBuilder sb = new StringBuilder("WxPayOrderSP{"); @@ -178,6 +187,7 @@ public class WxPayOrderSP { sb.append(", time_start='").append(time_start).append('\''); sb.append(", time_expire='").append(time_expire).append('\''); sb.append(", sub_openid='").append(sub_openid).append('\''); + sb.append(", profit_sharing='").append(profit_sharing).append('\''); sb.append('}'); return sb.toString(); } 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 c18ef4518..732dab370 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java @@ -244,10 +244,11 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { futureDate.setTime(currentDate.getTime() + 15*60*1000); wxPayOrderSP.setTime_expire(Utility.getDataFormatStringYYYYMMDDHHmmss(futureDate)); // 15分钟后结束 wxPayOrderSP.setSign_type("HMAC-SHA256"); - Map payOrderMap = BeanUtils.toStringMap(wxPayOrderSP); if(isShare) { - payOrderMap.put("profit_sharing", "Y"); + wxPayOrderSP.setProfit_sharing("Y"); } + Map payOrderMap = BeanUtils.toStringMap(wxPayOrderSP); + wxPayOrderSP.setSign(WxPayment.createSignHMAC(payOrderMap, payAccount.getApiKey())); String response = WxPay.pushOrder(BeanUtils.toStringMap(wxPayOrderSP)); logger.info("pay order, wechat pushOrder, " + wxPayOrderSP.toString() + ", response: " + response.toString()); From 3afefcb052d4986ff59e53da910bfbb574bb4634 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Thu, 6 Sep 2018 17:04:37 +0800 Subject: [PATCH 21/51] =?UTF-8?q?[=E5=88=86=E8=B4=A6][=E6=96=B0=E5=A2=9E]:?= =?UTF-8?q?=E5=88=86=E8=B4=A6=E6=94=AF=E4=BB=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/simple/domain/po/WxPayOrder.java | 15 +++++--- .../java/com/simple/enums/EnumPayShare.java | 38 +++++++++++++++++++ .../service/impl/WxPayOrderServiceImpl.java | 19 +++++----- .../impl/WxProfitSharingOrderServiceImpl.java | 2 +- .../impl/WxRefundOrderServiceImpl.java | 4 +- 5 files changed, 60 insertions(+), 18 deletions(-) create mode 100644 mallinkService/src/main/java/com/simple/enums/EnumPayShare.java 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 bf58749d3..620d63743 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxPayOrder.java +++ b/mallinkService/src/main/java/com/simple/domain/po/WxPayOrder.java @@ -86,7 +86,7 @@ public class WxPayOrder implements Serializable { private Integer payOrderStatus; /*分账状态: 0-未分账;1-分账**/ @io.swagger.annotations.ApiModelProperty(value="分账状态: 0-未分账;1-分账",name="payOrderStatus") - private boolean share; + private Integer share; /*支付失败原因**/ @io.swagger.annotations.ApiModelProperty(value="支付失败原因",name="failReason") private String failReason; @@ -114,12 +114,15 @@ public class WxPayOrder implements Serializable { public void setOrderId(Long _orderId) { orderId = _orderId; } - public Long getCUserId() { + + public Long getcUserId() { return cUserId; } - public void setCUserId(Long _cUserId) { - cUserId = _cUserId; + + public void setcUserId(Long cUserId) { + this.cUserId = cUserId; } + public String getIp() { return ip; } @@ -178,11 +181,11 @@ public class WxPayOrder implements Serializable { payOrderStatus = _payOrderStatus; } - public boolean isShare() { + public Integer getShare() { return share; } - public void setShare(boolean share) { + public void setShare(Integer share) { this.share = share; } diff --git a/mallinkService/src/main/java/com/simple/enums/EnumPayShare.java b/mallinkService/src/main/java/com/simple/enums/EnumPayShare.java new file mode 100644 index 000000000..6172d8d6a --- /dev/null +++ b/mallinkService/src/main/java/com/simple/enums/EnumPayShare.java @@ -0,0 +1,38 @@ +package com.simple.enums; + +/** + * Created by Stormeye on 2018/08/09. + */ +public enum EnumPayShare { + + // 0-未启用分账, 1-启用分账 + + NO(0, "未启用分账"), + YES(1, "启用分账") + ; + + public static EnumPayShare getEnum(Integer code) { + for (EnumPayShare value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumPayShare(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/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java index 732dab370..421a3726d 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java @@ -22,6 +22,7 @@ import com.simple.pay.*; import com.simple.service.WxOrderService; import com.simple.service.WxPayOrderService; import com.simple.utils.*; +import io.swagger.models.auth.In; import me.chanjar.weixin.common.error.WxErrorException; import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; @@ -99,7 +100,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { public ResultData createPayOrder(boolean isReal, WxAppinfo appInfo, WxCUser user, WxPayOrder record, EnumPayWay payWay) { final IdWorker idworker = IdWorker.get(); - boolean isShare = false; + EnumPayShare isShare = EnumPayShare.NO; try { // 1. check 订单 @@ -117,17 +118,17 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(appInfo.getPayId()); if (payAccount.isShare()) { - isShare = true; + isShare = EnumPayShare.YES; } // 1.5 check 分账 receive - if (isShare) { + if (isShare == EnumPayShare.YES) { WxProfitSharingReceiver receiver = new WxProfitSharingReceiver(); receiver.setMerchantId(order.getMerchantId()); List merList = wxProfitSharingReceiverMapper.findList(receiver); if (merList.size() > 0) { - isShare = true; + isShare = EnumPayShare.YES; } else { - isShare = false; + isShare = EnumPayShare.NO; } } // 2. check 是否有支付订单 @@ -140,7 +141,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { payOrderNo = String.valueOf(id); record.setId(id); record.setTenantId(user.getTenantId()); - record.setCUserId(user.getId()); + record.setcUserId(user.getId()); record.setCreateTime(currentDate); record.setUpdateTime(currentDate); record.setPayTimeStart(currentDate); @@ -150,7 +151,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { record.setPayAmount(order.getPayment()); record.setPayVendor(EnumPayWay.PAY_WAY_WEAPP.getCode()); record.setPayOrderStatus(EnumPayStatus.PAY_WAY_WAIT.getCode()); - record.setShare(isShare); + record.setShare(isShare.getCode()); int sqlRow = wxPayOrderMapper.insertSelective(record); if (sqlRow != 1) { @@ -159,7 +160,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { } } else { record = list.get(0); - record.setShare(isShare); + record.setShare(isShare.getCode()); payOrderNo = String.valueOf(record.getId()); } @@ -244,7 +245,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { futureDate.setTime(currentDate.getTime() + 15*60*1000); wxPayOrderSP.setTime_expire(Utility.getDataFormatStringYYYYMMDDHHmmss(futureDate)); // 15分钟后结束 wxPayOrderSP.setSign_type("HMAC-SHA256"); - if(isShare) { + if(isShare == EnumPayShare.YES) { wxPayOrderSP.setProfit_sharing("Y"); } Map payOrderMap = BeanUtils.toStringMap(wxPayOrderSP); 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 62069f960..7f0aaa2e4 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java @@ -126,7 +126,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ private WxAppinfo getAppinfo(WxPayOrder wxPayOrder) { WxAppinfo wxAppinfo; - WxCUser wxCUser = wxCUserMapper.selectByPrimaryKey(wxPayOrder.getCUserId()); + WxCUser wxCUser = wxCUserMapper.selectByPrimaryKey(wxPayOrder.getcUserId()); if (wxCUser == null) throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(), ErrorCode.USER_IS_EMPTY.getMessage()); wxAppinfo = wxAppinfoMapper.selectByPrimaryKey(wxCUser.getAppId()); 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 f810216fe..fcfcb5c78 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java @@ -334,7 +334,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { // 查找支付订单 WxPayOrder payOrderQ = new WxPayOrder(); payOrderQ.setTenantId(appInfo.getTenantId()); - payOrderQ.setCUserId(wxOrder.getCUserId()); + payOrderQ.setcUserId(wxOrder.getCUserId()); payOrderQ.setOrderId(wxOrder.getId()); payOrderQ.setPayOrderStatus(EnumPayStatus.PAY_WAY_SUCCESS.getCode()); @@ -365,7 +365,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { record.setUpdateTime(currentDate); // 微信内部订单号 record.setTransactionId(payOrder.getTransactionId()); - record.setCUserId(payOrder.getCUserId()); + record.setCUserId(payOrder.getcUserId()); record.setTotalFee(payOrder.getPayAmount()); record.setRefundFee(payOrder.getPayAmount()); record.setRefundTimeStart(currentDate); From fb366352858edf594dda419d6d99111bb9d18881 Mon Sep 17 00:00:00 2001 From: hupeng Date: Thu, 6 Sep 2018 17:15:42 +0800 Subject: [PATCH 22/51] =?UTF-8?q?[=E6=94=AF=E4=BB=98][=E6=B7=BB=E5=8A=A0]:?= =?UTF-8?q?=E6=A0=B8=E9=94=80=E5=90=8E=E8=BF=9B=E8=A1=8C=E5=88=86=E8=B4=A6?= =?UTF-8?q?=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/simple/pay/WxProfitSharingP.java | 8 ++++++ .../com/simple/pay/WxProfitSharingQueryP.java | 8 ++++++ .../simple/pay/WxProfitSharingReceiverP.java | 9 ++++++ .../impl/WxCouponOrderServiceImpl.java | 28 +++++++++++++------ .../impl/WxProfitSharingOrderServiceImpl.java | 21 +++++++------- .../WxProfitSharingReceiverServiceImpl.java | 17 +++++------ 6 files changed, 65 insertions(+), 26 deletions(-) diff --git a/mallinkService/src/main/java/com/simple/pay/WxProfitSharingP.java b/mallinkService/src/main/java/com/simple/pay/WxProfitSharingP.java index 3d65abe64..0b5d6e2ed 100644 --- a/mallinkService/src/main/java/com/simple/pay/WxProfitSharingP.java +++ b/mallinkService/src/main/java/com/simple/pay/WxProfitSharingP.java @@ -14,6 +14,7 @@ public class WxProfitSharingP implements Serializable { private String sub_appid; // 子公众账号ID private String nonce_str; // 随机字符串 private String sign; // 签名 + private String sign_type; // 签名方法 private String transaction_id ; // 支付订单号 private String out_trade_no; // 商户订单号 private String receivers; // 分账接收方 @@ -64,6 +65,13 @@ public class WxProfitSharingP implements Serializable { this.sign = sign; } + public String getSign_type() { + return sign_type; + } + + public void setSign_type(String sign_type) { + this.sign_type = sign_type; + } public String getTransaction_id() { return transaction_id; } diff --git a/mallinkService/src/main/java/com/simple/pay/WxProfitSharingQueryP.java b/mallinkService/src/main/java/com/simple/pay/WxProfitSharingQueryP.java index 71f163397..8c1b4bdd5 100644 --- a/mallinkService/src/main/java/com/simple/pay/WxProfitSharingQueryP.java +++ b/mallinkService/src/main/java/com/simple/pay/WxProfitSharingQueryP.java @@ -12,6 +12,7 @@ public class WxProfitSharingQueryP implements Serializable { private String sub_mch_id; // 子商户号 private String nonce_str; // 随机字符串 private String sign; // 签名 + private String sign_type; // 签名方法 private String transaction_id ; // 支付订单号 private String out_trade_no; // 商户分账单号 @@ -45,6 +46,13 @@ public class WxProfitSharingQueryP implements Serializable { public void setSign(String sign) { this.sign = sign; } + public String getSign_type() { + return sign_type; + } + + public void setSign_type(String sign_type) { + this.sign_type = sign_type; + } public String getTransaction_id() { return transaction_id; diff --git a/mallinkService/src/main/java/com/simple/pay/WxProfitSharingReceiverP.java b/mallinkService/src/main/java/com/simple/pay/WxProfitSharingReceiverP.java index ae4205450..7b968b184 100644 --- a/mallinkService/src/main/java/com/simple/pay/WxProfitSharingReceiverP.java +++ b/mallinkService/src/main/java/com/simple/pay/WxProfitSharingReceiverP.java @@ -14,6 +14,7 @@ public class WxProfitSharingReceiverP implements Serializable { private String sub_appid; // 子公众账号ID private String nonce_str; // 随机字符串 private String sign; // 签名 + private String sign_type; // 签名方法 private String receiver; // 分账接收方 public String getMch_id() { @@ -62,6 +63,14 @@ public class WxProfitSharingReceiverP implements Serializable { this.sign = sign; } + public String getSign_type() { + return sign_type; + } + + public void setSign_type(String sign_type) { + this.sign_type = sign_type; + } + public String getReceiver() { return receiver; } 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 1a8d426b4..74772197c 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java @@ -14,11 +14,11 @@ import com.simple.domain.vo.WxCouponOrderCVo; import com.simple.domain.vo.WxCouponOrderCarCVo; import com.simple.enums.EnumCouponOrderStatus; import com.simple.enums.EnumCouponSendType; +import com.simple.enums.EnumPayShare; +import com.simple.enums.EnumPayStatus; import com.simple.exception.MallinkException; import com.simple.mapper.*; -import com.simple.service.WxCouponOrderService; -import com.simple.service.WxCouponSendService; -import com.simple.service.WxOrderService; +import com.simple.service.*; import org.apache.log4j.Logger; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.factory.annotation.Autowired; @@ -58,6 +58,13 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { @Autowired WxCouponSendService wxCouponSendService; + @Autowired + WxProfitSharingOrderService wxProfitSharingOrderService; + + @Autowired + WxPayOrderMapper wxPayOrderMapper; + + @Override public PageInfo listAsPage(WxCouponOrder record, Integer pageIndex, Integer pageSize) { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponOrderMapper.findList(record)); @@ -337,22 +344,27 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { // 核销发券 wxCouponSendService.sendCouponToUser(wxMerchantBUser.getTenantId(), wxOrder.getCUserId(), EnumCouponSendType.COUPON_VERIFY.getCode()); + + // 微信分账 + WxPayOrder wxPayOrder = new WxPayOrder(); + wxPayOrder.setOrderId(wxCouponOrder.getOrderId()); + wxPayOrder.setPayOrderStatus(EnumPayStatus.PAY_WAY_SUCCESS.getCode()); + wxPayOrder = wxPayOrderMapper.selectOne(wxPayOrder); + if (wxPayOrder == null) + throw new MallinkException(ErrorCode.PAY_ORDER_NOT_FOUND); + if (wxPayOrder.getShare() == EnumPayShare.YES.getCode()) + wxProfitSharingOrderService.createSharingOrder(wxPayOrder); return new ResultData(wxCouponOrder); } @Override public List queryPriceTotalGroup(String tenantId, Date startTime, Date endTime) { - return wxCouponOrderMapper.queryPriceTotalGroup(tenantId, startTime, endTime); } - - @Override public int queryPriceTotal(String tenantId, Date startTime, Date endTime) { return wxCouponOrderMapper.queryPriceTotal(tenantId, startTime, endTime); } - - } 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 7f0aaa2e4..242d22320 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java @@ -178,7 +178,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ wxProfitSharingP.setNonce_str(Utility.generate32UUID()); wxProfitSharingP.setTransaction_id(wxPayOrder.getTransactionId()); wxProfitSharingP.setOut_trade_no(record.getId().toString()); - + wxProfitSharingP.setSign_type("HMAC-SHA256"); //添加分账接受方 WxProfitSharingReceiver wxProfitSharingReceiver = new WxProfitSharingReceiver(); wxProfitSharingReceiver.setMerchantId(wxOrder.getMerchantId()); @@ -211,7 +211,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ wxProfitSharingP.setReceivers(receivers.toJSONString()); - wxProfitSharingP.setSign(WxPayment.createSign(BeanUtils.toStringMap(wxProfitSharingP), payAccount.getApiKey())); + wxProfitSharingP.setSign(WxPayment.createSignHMAC(BeanUtils.toStringMap(wxProfitSharingP), payAccount.getApiKey())); String response = WxProfitSharing.pushOrder(BeanUtils.toStringMap(wxProfitSharingP)); Map returnMap = WxPayment.xmlToMap(response); @@ -220,11 +220,11 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ record.setSharingStatus(EnumProfitSharingStatus.PROFIT_SHARING_REQ_FAILED.getCode()); record.setUpdateTime(new Date()); wxProfitSharingOrderMapper.updateByPrimaryKey(record); - return new ResultData(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(), returnMap.get("return_msg")); + throw new MallinkException(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(), returnMap.get("return_msg")); } if (!WxPayment.verifyNotify(returnMap,payAccount.getApiKey())){ - return new ResultData(ErrorCode.PROFIT_SHARING_RETURN_INVALID.getCode(), ErrorCode.PROFIT_SHARING_RETURN_INVALID.getMessage()); + throw new MallinkException(ErrorCode.PROFIT_SHARING_RETURN_INVALID.getCode(), ErrorCode.PROFIT_SHARING_RETURN_INVALID.getMessage()); } String result_code = returnMap.get("result_code"); @@ -232,7 +232,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ record.setSharingStatus(EnumProfitSharingStatus.PROFIT_SHARING_APPLY_FAILED.getCode()); record.setUpdateTime(new Date()); wxProfitSharingOrderMapper.updateByPrimaryKey(record); - return new ResultData(ErrorCode.PROFIT_SHARING_APPLY_FAILED.getCode(), returnMap.get("result_msg")); + throw new MallinkException(ErrorCode.PROFIT_SHARING_APPLY_FAILED.getCode(), returnMap.get("result_msg")); } record.setSharingOrderNo(returnMap.get("order_id")); @@ -268,28 +268,29 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ wxProfitSharingQueryP.setNonce_str(Utility.generate32UUID()); wxProfitSharingQueryP.setTransaction_id(wxPayOrder.getTransactionId()); wxProfitSharingQueryP.setOut_trade_no(record.getId().toString()); + wxProfitSharingQueryP.setSign_type("HMAC-SHA256"); - wxProfitSharingQueryP.setSign(WxPayment.createSign(BeanUtils.toStringMap(wxProfitSharingQueryP), payAccount.getApiKey())); + wxProfitSharingQueryP.setSign(WxPayment.createSignHMAC(BeanUtils.toStringMap(wxProfitSharingQueryP), payAccount.getApiKey())); String response = WxProfitSharing.pushOrder(BeanUtils.toStringMap(wxProfitSharingQueryP)); Map returnMap = WxPayment.xmlToMap(response); String return_code = returnMap.get("return_code"); if (!"SUCCESS".equals(return_code)) { - return new ResultData(ErrorCode.PROFIT_SHARING_QUERY_REQUEST_FAILED.getCode(), returnMap.get("return_msg")); + throw new MallinkException(ErrorCode.PROFIT_SHARING_QUERY_REQUEST_FAILED.getCode(), returnMap.get("return_msg")); } if (!WxPayment.verifyNotify(returnMap,payAccount.getApiKey())){ - return new ResultData(ErrorCode.PROFIT_SHARING_QUERY_RETURN_INVALID.getCode(), ErrorCode.PROFIT_SHARING_RETURN_INVALID.getMessage()); + throw new MallinkException(ErrorCode.PROFIT_SHARING_QUERY_RETURN_INVALID.getCode(), ErrorCode.PROFIT_SHARING_RETURN_INVALID.getMessage()); } String out_order_no = returnMap.get("out_order_no"); if (!out_order_no.equals(record.getId().toString())){ - return new ResultData(ErrorCode.PROFIT_SHARING_QUERY_RETURN_INVALID.getCode(), ErrorCode.PROFIT_SHARING_RETURN_INVALID.getMessage()); + throw new MallinkException(ErrorCode.PROFIT_SHARING_QUERY_RETURN_INVALID.getCode(), ErrorCode.PROFIT_SHARING_RETURN_INVALID.getMessage()); } String result_code = returnMap.get("result_code"); if (!"SUCCESS".equals(result_code)) { - return new ResultData(ErrorCode.PROFIT_SHARING_QUERY_APPLY_FAILED.getCode(), returnMap.get("result_msg")); + throw new MallinkException(ErrorCode.PROFIT_SHARING_QUERY_APPLY_FAILED.getCode(), returnMap.get("result_msg")); } record.setSharingStatus((Integer) statusMap.get(returnMap.get("status"))); diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingReceiverServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingReceiverServiceImpl.java index 861694576..a3af0f492 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingReceiverServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingReceiverServiceImpl.java @@ -111,6 +111,7 @@ public class WxProfitSharingReceiverServiceImpl implements WxProfitSharingReceiv wxProfitSharingReceiverP.setSub_appid(appInfo.getAppId()); wxProfitSharingReceiverP.setSub_mch_id(payAccount.getSubMchId()); wxProfitSharingReceiverP.setNonce_str(Utility.generate32UUID()); + wxProfitSharingReceiverP.setSign_type("HMAC-SHA256"); JSONObject receiverJSON = new JSONObject(); @@ -121,7 +122,7 @@ public class WxProfitSharingReceiverServiceImpl implements WxProfitSharingReceiv wxProfitSharingReceiverP.setReceiver(receiverJSON.toJSONString()); String response; try { - wxProfitSharingReceiverP.setSign(WxPayment.createSign(BeanUtils.toStringMap(wxProfitSharingReceiverP), payAccount.getApiKey())); + wxProfitSharingReceiverP.setSign(WxPayment.createSignHMAC(BeanUtils.toStringMap(wxProfitSharingReceiverP), payAccount.getApiKey())); response = WxProfitSharing.addReceiver(BeanUtils.toStringMap(wxProfitSharingReceiverP)); }catch (Exception e) { return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED, e.getMessage()); @@ -132,13 +133,13 @@ public class WxProfitSharingReceiverServiceImpl implements WxProfitSharingReceiv return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getCode(), returnMap.get("return_msg")); } - if (!WxPayment.verifyNotify(returnMap,payAccount.getApiKey())){ - return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getCode(), ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getMessage()); - } - String result_code = returnMap.get("result_code"); if (!"SUCCESS".equals(result_code)) { - return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getCode(), returnMap.get("result_msg")); + return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getCode(), returnMap.get("err_code_des")); + } + + if (!WxPayment.verifyNotify(returnMap,payAccount.getApiKey())){ + return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getCode(), ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getMessage()); } wxProfitSharingReceiverMapper.insertSelective(receiver); @@ -171,7 +172,7 @@ public class WxProfitSharingReceiverServiceImpl implements WxProfitSharingReceiv wxProfitSharingReceiverP.setSub_appid(appInfo.getAppId()); wxProfitSharingReceiverP.setSub_mch_id(payAccount.getSubMchId()); wxProfitSharingReceiverP.setNonce_str(Utility.generate32UUID()); - + wxProfitSharingReceiverP.setSign_type("HMAC-SHA256"); JSONObject receiverJSON = new JSONObject(); receiverJSON.put("type",EnumProfitSharingReceiverType.getEnum(receiver.getReceiverType()).getMessage()); @@ -180,7 +181,7 @@ public class WxProfitSharingReceiverServiceImpl implements WxProfitSharingReceiv wxProfitSharingReceiverP.setReceiver(receiverJSON.toJSONString()); String response; try { - wxProfitSharingReceiverP.setSign(WxPayment.createSign(BeanUtils.toStringMap(wxProfitSharingReceiverP), payAccount.getApiKey())); + wxProfitSharingReceiverP.setSign(WxPayment.createSignHMAC(BeanUtils.toStringMap(wxProfitSharingReceiverP), payAccount.getApiKey())); response = WxProfitSharing.addReceiver(BeanUtils.toStringMap(wxProfitSharingReceiverP)); }catch (Exception e) { return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED, e.getMessage()); From 475344ab72e8254dac0d67a9eb25c66f1e1ac9bb Mon Sep 17 00:00:00 2001 From: hupeng Date: Thu, 6 Sep 2018 17:46:37 +0800 Subject: [PATCH 23/51] =?UTF-8?q?[=E6=94=AF=E4=BB=98][=E4=BF=AE=E5=A4=8D]:?= =?UTF-8?q?=E5=88=86=E8=B4=A6=E6=94=AF=E4=BB=98=E4=B8=AD=E6=9B=B4=E6=94=B9?= =?UTF-8?q?appid=E7=9A=84=E8=8E=B7=E5=8F=96=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/WxProfitSharingOrderServiceImpl.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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 242d22320..e835d65bb 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java @@ -124,12 +124,14 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ } private WxAppinfo getAppinfo(WxPayOrder wxPayOrder) { - WxAppinfo wxAppinfo; + WxAppinfo wxAppinfo = new WxAppinfo(); WxCUser wxCUser = wxCUserMapper.selectByPrimaryKey(wxPayOrder.getcUserId()); if (wxCUser == null) throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(), ErrorCode.USER_IS_EMPTY.getMessage()); - wxAppinfo = wxAppinfoMapper.selectByPrimaryKey(wxCUser.getAppId()); + + wxAppinfo.setAppId(wxCUser.getAppId()); + wxAppinfo = wxAppinfoMapper.selectOne(wxAppinfo); if (wxAppinfo == null) throw new MallinkException(ErrorCode.APP_ID_NOT_FOUND.getCode(), ErrorCode.APP_ID_NOT_FOUND.getMessage()); From 025d994e633938d9def1ccf88c3de1a973e31d6b Mon Sep 17 00:00:00 2001 From: gongbiao Date: Thu, 6 Sep 2018 19:16:59 +0800 Subject: [PATCH 24/51] =?UTF-8?q?[=E7=A7=9F=E9=87=91=E7=AE=A1=E7=90=86][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9]=E4=BF=AE=E6=94=B9=E4=B8=9A=E5=8A=A1?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WxBillRentController.java | 4 +- .../controller/WxRentContractController.java | 62 +++++++ .../java/com/simple/domain/po/WxBillRent.java | 14 +- .../java/com/simple/domain/po/WxMerchant.java | 13 ++ .../com/simple/domain/po/WxRentContract.java | 170 ++++++++++++++++++ .../simple/mapper/WxRentContractMapper.java | 15 ++ .../simple/service/WxRentContractService.java | 48 +++++ .../service/impl/WxBillRentServiceImpl.java | 4 +- .../service/impl/WxMerchantServiceImpl.java | 23 +++ .../impl/WxRentContractServiceImpl.java | 53 ++++++ .../resources/mapper/WxRentContractMapper.xml | 50 ++++++ .../main/resources/mapper/WxShopMapper.xml | 4 +- 12 files changed, 449 insertions(+), 11 deletions(-) create mode 100644 mallinkAdmin/src/main/java/com/simple/controller/WxRentContractController.java create mode 100644 mallinkService/src/main/java/com/simple/domain/po/WxRentContract.java create mode 100644 mallinkService/src/main/java/com/simple/mapper/WxRentContractMapper.java create mode 100644 mallinkService/src/main/java/com/simple/service/WxRentContractService.java create mode 100644 mallinkService/src/main/java/com/simple/service/impl/WxRentContractServiceImpl.java create mode 100644 mallinkService/src/main/resources/mapper/WxRentContractMapper.xml diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxBillRentController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxBillRentController.java index 944f4e834..eae2c45d6 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxBillRentController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxBillRentController.java @@ -40,13 +40,13 @@ public class WxBillRentController extends BaseController //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); wxBillRent.setTenantId(getTenantId()); wxBillRentService.saveOrUpdate(wxBillRent); - return new ResultData(); + return new ResultData(ResultData.SUCCESS,"操作成功"); } @PostMapping("update") public ResultData update(@RequestBody WxBillRent wxBillRent) { wxBillRentService.saveOrUpdate(wxBillRent); - return new ResultData(); + return new ResultData(ResultData.SUCCESS,"操作成功"); } @GetMapping("/del") diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxRentContractController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxRentContractController.java new file mode 100644 index 000000000..868b8761e --- /dev/null +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxRentContractController.java @@ -0,0 +1,62 @@ +package com.simple.controller; + +import com.github.pagehelper.PageInfo; +import com.simple.common.Result; +import com.simple.common.ResultData; +import com.simple.domain.po.WxRentContract; +import com.simple.service.WxRentContractService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("wxRentContract") +public class WxRentContractController extends BaseController +{ + @Autowired + private WxRentContractService wxRentContractService; + + private Logger logger = Logger.getLogger(WxRentContractController.class); + + @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 WxRentContract wxRentContract,Integer pageNum, Integer pageSize) { + if (null == wxRentContract) wxRentContract = new WxRentContract(); + final PageInfo page = wxRentContractService.listAsPage(wxRentContract, pageNum, pageSize); + return new ResultData(page); + } + + @PostMapping("add") + public ResultData add(@RequestBody WxRentContract wxRentContract) { + //Assert.notNull(wxRentContract.getName(), "角色名不能为空"); + //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); + wxRentContractService.saveOrUpdate(wxRentContract); + return new ResultData(); + } + + @PostMapping("update") + public ResultData update(@RequestBody WxRentContract wxRentContract) { + wxRentContractService.saveOrUpdate(wxRentContract); + return new ResultData(); + } + + @GetMapping("/del") + @ApiImplicitParam(name="id",value="id",dataType="String", paramType = "query",required=true) + public ResultData delete(String id) { + wxRentContractService.deleteById(id); + return new ResultData(Result.SUCCESS, "删除成功", null); + } + + @GetMapping("/findById") + @ApiImplicitParam(name="id",value="id",dataType="String", paramType = "query",required=true) + public ResultData findById(String id) { + return new ResultData(Result.SUCCESS,"查询成功",wxRentContractService.getById(id)); + } + + + +} diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxBillRent.java b/mallinkService/src/main/java/com/simple/domain/po/WxBillRent.java index 63edafde8..1da4e4137 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxBillRent.java +++ b/mallinkService/src/main/java/com/simple/domain/po/WxBillRent.java @@ -14,17 +14,17 @@ public class WxBillRent implements Serializable { private static final long serialVersionUID = 1L; @Id - protected String id; + protected Long id; @Transient protected List ids; @Transient protected String sortColumns; - public String getId() { + public Long getId() { return id; } - public void setId(String id) { + public void setId(Long id) { this.id = id; } public String getSortColumns() { @@ -55,13 +55,13 @@ public class WxBillRent implements Serializable { @io.swagger.annotations.ApiModelProperty(value="单价",name="price") private BigDecimal price; /*应缴金额**/ - @io.swagger.annotations.ApiModelProperty(value="应缴金额",name="needPay") + @io.swagger.annotations.ApiModelProperty(value="应收金额",name="needPay") private BigDecimal needPay; /*应收金额**/ - @io.swagger.annotations.ApiModelProperty(value="应收金额",name="receivePay") + @io.swagger.annotations.ApiModelProperty(value="实际应收金额",name="receivePay") private BigDecimal receivePay; /*实收金额**/ - @io.swagger.annotations.ApiModelProperty(value="实收金额",name="pay") + @io.swagger.annotations.ApiModelProperty(value="实缴金额",name="pay") private BigDecimal pay; /*缴费周期**/ @io.swagger.annotations.ApiModelProperty(value="缴费周期",name="receivePeriod") @@ -90,7 +90,7 @@ public class WxBillRent implements Serializable { private String tenantId; /*欠缴**/ - @io.swagger.annotations.ApiModelProperty(value="欠缴",name="owe") + @io.swagger.annotations.ApiModelProperty(value="欠缴金额",name="owe") private BigDecimal owe; 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 72b7ce216..1501524c4 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxMerchant.java +++ b/mallinkService/src/main/java/com/simple/domain/po/WxMerchant.java @@ -4,6 +4,7 @@ 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; @@ -56,6 +57,10 @@ public class WxMerchant implements Serializable { @Transient private Date rentalEndDate; + /*单价**/ + @Transient + private BigDecimal price; + /*租户ID**/ @io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId") private String tenantId; @@ -202,6 +207,14 @@ public class WxMerchant implements Serializable { this.linkPerson = linkPerson; } + public BigDecimal getPrice() { + return price; + } + + public void setPrice(BigDecimal price) { + this.price = price; + } + public static enum Field { Id_ASC("`id` ASC"),Id_DESC("`id` DESC") diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxRentContract.java b/mallinkService/src/main/java/com/simple/domain/po/WxRentContract.java new file mode 100644 index 000000000..e444d49dc --- /dev/null +++ b/mallinkService/src/main/java/com/simple/domain/po/WxRentContract.java @@ -0,0 +1,170 @@ +package com.simple.domain.po; + +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Transient; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Table(name = "wx_rent_contract") +public class WxRentContract 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="merchantId") + private Long merchantId; + /*单价**/ + @io.swagger.annotations.ApiModelProperty(value="单价",name="price") + private BigDecimal price; + /*计租开始时间**/ + @io.swagger.annotations.ApiModelProperty(value="计租开始时间",name="rentalStartDate") + private Date rentalStartDate; + /*计租结束时间**/ + @io.swagger.annotations.ApiModelProperty(value="计租结束时间",name="rentalEndDate") + private Date rentalEndDate; + /*签定合同时间**/ + @io.swagger.annotations.ApiModelProperty(value="签定合同时间",name="signDate") + private Date signDate; + /*计租面积**/ + @io.swagger.annotations.ApiModelProperty(value="计租面积",name="payArea") + private BigDecimal payArea; + /***/ + @io.swagger.annotations.ApiModelProperty(value="",name="receivePeriod") + private Integer receivePeriod; + public Long getMerchantId() { + return merchantId; + } + public void setMerchantId(Long _merchantId) { + merchantId = _merchantId; + } + public BigDecimal getPrice() { + return price; + } + public void setPrice(BigDecimal _price) { + price = _price; + } + public Date getRentalStartDate() { + return rentalStartDate; + } + public void setRentalStartDate(Date _rentalStartDate) { + rentalStartDate = _rentalStartDate; + } + public Date getRentalEndDate() { + return rentalEndDate; + } + public void setRentalEndDate(Date _rentalEndDate) { + rentalEndDate = _rentalEndDate; + } + public Date getSignDate() { + return signDate; + } + public void setSignDate(Date _signDate) { + signDate = _signDate; + } + public BigDecimal getPayArea() { + return payArea; + } + public void setPayArea(BigDecimal _payArea) { + payArea = _payArea; + } + public Integer getReceivePeriod() { + return receivePeriod; + } + public void setReceivePeriod(Integer _receivePeriod) { + receivePeriod = _receivePeriod; + } + + + + public static enum Field + { + Id_ASC("`id` ASC"),Id_DESC("`id` DESC") + ,MerchantId_ASC("`merchantId` ASC"),MerchantId_DESC("`merchantId` DESC") + ,Price_ASC("`price` ASC"),Price_DESC("`price` DESC") + ,RentalStartDate_ASC("`rentalStartDate` ASC"),RentalStartDate_DESC("`rentalStartDate` DESC") + ,RentalEndDate_ASC("`rentalEndDate` ASC"),RentalEndDate_DESC("`rentalEndDate` DESC") + ,SignDate_ASC("`signDate` ASC"),SignDate_DESC("`signDate` DESC") + ,PayArea_ASC("`payArea` ASC"),PayArea_DESC("`payArea` DESC") + ,ReceivePay_ASC("`receive_period` ASC"),ReceivePay_DESC("`receive_period` 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(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(","); + List fList = new 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/mapper/WxRentContractMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxRentContractMapper.java new file mode 100644 index 000000000..2d0a866ae --- /dev/null +++ b/mallinkService/src/main/java/com/simple/mapper/WxRentContractMapper.java @@ -0,0 +1,15 @@ +package com.simple.mapper; + +import com.simple.common.CommonMapper; +import com.simple.domain.po.WxRentContract; + +import java.util.List; + +public interface WxRentContractMapper extends CommonMapper { + + List findList(WxRentContract wxRentContract); + + + WxRentContract findObjectByMerchantId(Long id); + +} diff --git a/mallinkService/src/main/java/com/simple/service/WxRentContractService.java b/mallinkService/src/main/java/com/simple/service/WxRentContractService.java new file mode 100644 index 000000000..596989d64 --- /dev/null +++ b/mallinkService/src/main/java/com/simple/service/WxRentContractService.java @@ -0,0 +1,48 @@ +package com.simple.service; + +import java.util.*; +import com.github.pagehelper.PageInfo; +import com.simple.domain.po.WxRentContract; + +public interface WxRentContractService { + + /** + * 根据实体查询分页列表 + * + * @param record + * @param offset + * @param limit + * @return + */ + PageInfo listAsPage(WxRentContract record, Integer pageIndex, Integer pageSize); + + /** + * 根据Id获得实体 + * + * @param id + * @return + */ + WxRentContract getById(String id); + + /** + * 保存或更新实体 + * + * @param record + */ + void saveOrUpdate(WxRentContract record); + + /** + * 根据Id删除实体 + * + * @param id + */ + void deleteById(String id); + + + + + + + + +} diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxBillRentServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxBillRentServiceImpl.java index 1103a62a9..7309d2330 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxBillRentServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxBillRentServiceImpl.java @@ -3,6 +3,7 @@ package com.simple.service.impl; import java.util.*; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.simple.common.IdWorker; import com.simple.domain.po.WxBillRent; import com.simple.mapper.WxBillRentMapper; import com.simple.service.WxBillRentService; @@ -33,7 +34,8 @@ public class WxBillRentServiceImpl implements WxBillRentService { @Override public void saveOrUpdate(WxBillRent record) { if (record.getId() == null) { - record.setId(UUID.randomUUID().toString().replaceAll("-", "")); + final IdWorker idWorker = IdWorker.get(); + record.setId(idWorker.nextId()); wxBillRentMapper.insertSelective(record); } else { wxBillRentMapper.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 26feaed59..d6fed2f2c 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxMerchantServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxMerchantServiceImpl.java @@ -12,6 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -36,6 +37,9 @@ public class WxMerchantServiceImpl implements WxMerchantService { @Autowired WxAppinfoMapper wxAppinfoMapper; + @Autowired + WxRentContractMapper wxRentContractMapper; + @Override public PageInfo listAsPage(WxMerchant record, Integer pageIndex, Integer pageSize) { @@ -123,6 +127,16 @@ public class WxMerchantServiceImpl implements WxMerchantService { wxMerchant.setCreateDate(date); wxMerchantMapper.insertSelective(wxMerchant); + WxRentContract wxRentContract = new WxRentContract(); + wxRentContract.setMerchantId(merchantid); + wxRentContract.setRentalStartDate(wxMerchant.getRentalStartDate()); + wxRentContract.setRentalEndDate(wxMerchant.getRentalEndDate()); + wxRentContract.setPrice(wxMerchant.getPrice()); + wxRentContract.setSignDate(date); + wxRentContract.setPayArea(new BigDecimal(0)); + wxRentContract.setReceivePeriod(0); + wxRentContractMapper.insertSelective(wxRentContract); + //保存商户商铺的关联 List shopidlist = wxMerchant.getShopids(); for(Long shopid:shopidlist){ @@ -171,6 +185,15 @@ public class WxMerchantServiceImpl implements WxMerchantService { wxMerchant.setUpdateDate(date); wxMerchantMapper.updateByPrimaryKeySelective(wxMerchant); + WxRentContract wxRentContract = wxRentContractMapper.findObjectByMerchantId(wxMerchant.getId()); + wxRentContract.setRentalStartDate(wxMerchant.getRentalStartDate()); + wxRentContract.setRentalEndDate(wxMerchant.getRentalEndDate()); + wxRentContract.setPrice(wxMerchant.getPrice()); + wxRentContract.setSignDate(date); + wxRentContract.setPayArea(new BigDecimal(0)); + wxRentContract.setReceivePeriod(0); + wxRentContractMapper.updateByPrimaryKeySelective(wxRentContract); + //删除当前商户关联的所有商铺然后再插入 WxMerchantShop wxMerchantShopQuery = new WxMerchantShop(); wxMerchantShopQuery.setTenantId(wxMerchant.getTenantId()); diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxRentContractServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxRentContractServiceImpl.java new file mode 100644 index 000000000..d58292da1 --- /dev/null +++ b/mallinkService/src/main/java/com/simple/service/impl/WxRentContractServiceImpl.java @@ -0,0 +1,53 @@ +package com.simple.service.impl; + +import java.util.*; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.simple.common.IdWorker; +import com.simple.domain.po.WxRentContract; +import com.simple.mapper.WxRentContractMapper; +import com.simple.service.WxRentContractService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class WxRentContractServiceImpl implements WxRentContractService { + + @Autowired + WxRentContractMapper wxRentContractMapper; + + + @Override + public PageInfo listAsPage(WxRentContract record, Integer pageIndex, Integer pageSize) { + return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxRentContractMapper.findList(record)); + } + + @Override + public WxRentContract getById(String id) { + return wxRentContractMapper.selectByPrimaryKey(id); + } + + @Override + public void saveOrUpdate(WxRentContract record) { + if (record.getId() == null) { + final IdWorker idWorker = IdWorker.get(); + record.setId(idWorker.nextId()); + wxRentContractMapper.insertSelective(record); + } else { + wxRentContractMapper.updateByPrimaryKeySelective(record); + } + } + + @Override + public void deleteById(String id) { + wxRentContractMapper.deleteByPrimaryKey(id); + } + + + + + + + + +} diff --git a/mallinkService/src/main/resources/mapper/WxRentContractMapper.xml b/mallinkService/src/main/resources/mapper/WxRentContractMapper.xml new file mode 100644 index 000000000..e9a1cdf71 --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxRentContractMapper.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + `id`,`merchant_id`,`price`,`rental_start_date`,`rental_end_date`,`sign_date`,`pay_area`,`receive_pay` + + + + where 1 = 1 + and `id` = #{id} + and `merchant_id` = #{merchantId} + and `price` = #{price} + and `rental_start_date` = #{rentalStartDate} + and `rental_end_date` = #{rentalEndDate} + and `sign_date` = #{signDate} + and `pay_area` = #{payArea} + and `receive_period` = #{receivePeriod} + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxShopMapper.xml b/mallinkService/src/main/resources/mapper/WxShopMapper.xml index 465d911c6..d08480203 100644 --- a/mallinkService/src/main/resources/mapper/WxShopMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxShopMapper.xml @@ -232,9 +232,11 @@ From ed009a9b7d768d95b10f1813fcd0769d747e70b9 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Thu, 6 Sep 2018 20:34:39 +0800 Subject: [PATCH 25/51] =?UTF-8?q?[=E5=BE=AE=E4=BF=A1=E5=9B=9E=E8=B0=83][?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D]:=E6=94=AF=E6=8C=81=E4=B8=8D=E5=90=8C?= =?UTF-8?q?=E9=AA=8C=E7=AD=BE=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/simple/pay/WxPayment.java | 15 ++++++++++++ .../service/impl/WxPayOrderServiceImpl.java | 24 +++++++++++++++---- 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/mallinkService/src/main/java/com/simple/pay/WxPayment.java b/mallinkService/src/main/java/com/simple/pay/WxPayment.java index 9eb183287..40d1e442d 100644 --- a/mallinkService/src/main/java/com/simple/pay/WxPayment.java +++ b/mallinkService/src/main/java/com/simple/pay/WxPayment.java @@ -434,6 +434,21 @@ public class WxPayment { return sign.equals(localSign); } + /** + * 支付异步通知时校验sign + * + * @param params + * 参数 + * @param paternerKey + * 支付密钥 + * @return {boolean} + */ + public static boolean verifyNotifyHMAC(Map params, String paternerKey) { + String sign = params.get("sign"); + String localSign = WxPayment.createSignHMAC(params, paternerKey); + return sign.equals(localSign); + } + /** * 判断接口返回的code是否是SUCCESS * 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 421a3726d..98d1156a5 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java @@ -516,17 +516,21 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { String mchId = paramMap.get("mch_id"); String subMchId = paramMap.get("sub_mch_id"); WxAppinfo appinfo = null; + boolean isNormal = true; if (StringUtils.isBlank(subAppId) && StringUtils.isBlank(subMchId)) { // 普通商户号 appinfo = wxAppinfoMapper.findByAppId(appId); if (appinfo == null) { throw new MallinkException(ErrorCode.APP_ID_NOT_FOUND); } + isNormal = true; } else { + // 服务号 现在用hmac-sha256 appinfo = wxAppinfoMapper.findByAppId(subAppId); if (appinfo == null) { throw new MallinkException(ErrorCode.APP_ID_NOT_FOUND); } + isNormal = false; } WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(appinfo.getPayId()); @@ -537,12 +541,22 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { try { if (payWay == EnumPayWay.PAY_WAY_WEAPP) { boolean signVerified = false; - // 微信支付 - signVerified = WxPayment.verifyNotify(paramMap, partnerKey); - if (!signVerified) { - logger.warn("notify order, wxpay checksign error, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); - throw new MallinkException(ErrorCode.PAY_ORDER_NOTIFY_CHECK_SIGN_ERROR); + if (isNormal) { + // 普通商户号支付 + signVerified = WxPayment.verifyNotify(paramMap, partnerKey); + if (!signVerified) { + logger.warn("notify order, wxpay checksign error, paramMap: " + paramMap.toString() + ", payWay:" + payWay.toString()); + throw new MallinkException(ErrorCode.PAY_ORDER_NOTIFY_CHECK_SIGN_ERROR); + } + } else { + // 服务号 现在用hmac-sha256 + signVerified = WxPayment.verifyNotifyHMAC(paramMap, partnerKey); + if (!signVerified) { + 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()); SortedMap resultMap = new TreeMap(); From e5a06248f11515b1032a6702c4780edaf9094e14 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Thu, 6 Sep 2018 21:26:05 +0800 Subject: [PATCH 26/51] =?UTF-8?q?[=E5=88=86=E8=B4=A6][=E6=96=B0=E5=A2=9E]:?= =?UTF-8?q?=E5=88=86=E8=B4=A6=E8=AF=B7=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/simple/pay/WxProfitSharing.java | 8 ++++++-- .../service/impl/WxProfitSharingOrderServiceImpl.java | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/mallinkService/src/main/java/com/simple/pay/WxProfitSharing.java b/mallinkService/src/main/java/com/simple/pay/WxProfitSharing.java index 93686e89b..385a20a2a 100644 --- a/mallinkService/src/main/java/com/simple/pay/WxProfitSharing.java +++ b/mallinkService/src/main/java/com/simple/pay/WxProfitSharing.java @@ -28,8 +28,8 @@ public class WxProfitSharing { * @param params * @return */ - public static String pushOrder(Map params) { - return doPost(PROFIT_SHARING_URL, params); + public static String pushOrder(Map params, String certPath, String certPass) { + return doPostSSL(PROFIT_SHARING_URL, params, certPath, certPass); } /** @@ -59,4 +59,8 @@ public class WxProfitSharing { public static String doPost(String url, Map params) { return HttpUtil.payPost(url, WxPayment.toXml(params)); } + + public static String doPostSSL(String url, Map params, String certPath, String certPass) { + return HttpUtil.payPostSSL(url, WxPayment.toXml(params), certPath, certPass); + } } 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 e835d65bb..7cd73ae62 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java @@ -214,7 +214,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ wxProfitSharingP.setReceivers(receivers.toJSONString()); wxProfitSharingP.setSign(WxPayment.createSignHMAC(BeanUtils.toStringMap(wxProfitSharingP), payAccount.getApiKey())); - String response = WxProfitSharing.pushOrder(BeanUtils.toStringMap(wxProfitSharingP)); + String response = WxProfitSharing.pushOrder(BeanUtils.toStringMap(wxProfitSharingP), payAccount.getCertPath(), payAccount.getMchId()); Map returnMap = WxPayment.xmlToMap(response); String return_code = returnMap.get("return_code"); @@ -273,7 +273,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ wxProfitSharingQueryP.setSign_type("HMAC-SHA256"); wxProfitSharingQueryP.setSign(WxPayment.createSignHMAC(BeanUtils.toStringMap(wxProfitSharingQueryP), payAccount.getApiKey())); - String response = WxProfitSharing.pushOrder(BeanUtils.toStringMap(wxProfitSharingQueryP)); + String response = WxProfitSharing.pushOrder(BeanUtils.toStringMap(wxProfitSharingQueryP), payAccount.getCertPath(), payAccount.getMchId()); Map returnMap = WxPayment.xmlToMap(response); String return_code = returnMap.get("return_code"); From 2621b70b49c0ab0e0ae6210f7f71ee296ee0723a Mon Sep 17 00:00:00 2001 From: hupeng Date: Thu, 6 Sep 2018 21:35:05 +0800 Subject: [PATCH 27/51] =?UTF-8?q?[=E6=94=AF=E4=BB=98][=E4=BF=AE=E5=A4=8D]:?= =?UTF-8?q?=E5=88=86=E8=B4=A6=E8=AF=B7=E6=B1=82=E5=AD=97=E6=AE=B5=E6=9B=B4?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/simple/pay/WxProfitSharingP.java | 8 ++++---- .../service/impl/WxProfitSharingOrderServiceImpl.java | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/mallinkService/src/main/java/com/simple/pay/WxProfitSharingP.java b/mallinkService/src/main/java/com/simple/pay/WxProfitSharingP.java index 0b5d6e2ed..38cea0e08 100644 --- a/mallinkService/src/main/java/com/simple/pay/WxProfitSharingP.java +++ b/mallinkService/src/main/java/com/simple/pay/WxProfitSharingP.java @@ -16,7 +16,7 @@ public class WxProfitSharingP implements Serializable { private String sign; // 签名 private String sign_type; // 签名方法 private String transaction_id ; // 支付订单号 - private String out_trade_no; // 商户订单号 + private String out_order_no; // 商户订单号 private String receivers; // 分账接收方 public String getMch_id() { @@ -80,10 +80,10 @@ public class WxProfitSharingP implements Serializable { this.transaction_id = transaction_id; } - public String getOut_trade_no() { return out_trade_no; } + public String getOut_order_no() { return out_order_no; } - public void setOut_trade_no(String out_trade_no) { - this.out_trade_no = out_trade_no; + public void setOut_order_no(String out_order_no) { + this.out_order_no = out_order_no; } public String getReceivers() { 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 7cd73ae62..24f5928ca 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java @@ -179,7 +179,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ wxProfitSharingP.setSub_mch_id(payAccount.getSubMchId()); wxProfitSharingP.setNonce_str(Utility.generate32UUID()); wxProfitSharingP.setTransaction_id(wxPayOrder.getTransactionId()); - wxProfitSharingP.setOut_trade_no(record.getId().toString()); + wxProfitSharingP.setOut_order_no(record.getId().toString()); wxProfitSharingP.setSign_type("HMAC-SHA256"); //添加分账接受方 WxProfitSharingReceiver wxProfitSharingReceiver = new WxProfitSharingReceiver(); From 7723b5a90821010948f97820b88aa07c61740ef6 Mon Sep 17 00:00:00 2001 From: hupeng Date: Thu, 6 Sep 2018 21:42:58 +0800 Subject: [PATCH 28/51] =?UTF-8?q?[=E6=94=AF=E4=BB=98][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E6=9B=B4=E6=AD=A3=E9=AA=8C=E8=AF=81=E5=BE=AE=E4=BF=A1=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E4=BF=A1=E6=81=AF=E7=9A=84=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/WxProfitSharingOrderServiceImpl.java | 2 +- .../impl/WxProfitSharingReceiverServiceImpl.java | 10 ++++------ 2 files changed, 5 insertions(+), 7 deletions(-) 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 24f5928ca..4d2a37d36 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java @@ -225,7 +225,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ throw new MallinkException(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(), returnMap.get("return_msg")); } - if (!WxPayment.verifyNotify(returnMap,payAccount.getApiKey())){ + if (!WxPayment.verifyNotifyHMAC(returnMap,payAccount.getApiKey())){ throw new MallinkException(ErrorCode.PROFIT_SHARING_RETURN_INVALID.getCode(), ErrorCode.PROFIT_SHARING_RETURN_INVALID.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 index a3af0f492..768e65813 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingReceiverServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingReceiverServiceImpl.java @@ -138,7 +138,7 @@ public class WxProfitSharingReceiverServiceImpl implements WxProfitSharingReceiv return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getCode(), returnMap.get("err_code_des")); } - if (!WxPayment.verifyNotify(returnMap,payAccount.getApiKey())){ + if (!WxPayment.verifyNotifyHMAC(returnMap,payAccount.getApiKey())){ return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getCode(), ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getMessage()); } @@ -192,15 +192,13 @@ public class WxProfitSharingReceiverServiceImpl implements WxProfitSharingReceiv return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED.getCode(), returnMap.get("return_msg")); } - if (!WxPayment.verifyNotify(returnMap,payAccount.getApiKey())){ - return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED.getCode(), ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED.getMessage()); - } - String result_code = returnMap.get("result_code"); if (!"SUCCESS".equals(result_code)) { return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED.getCode(), returnMap.get("result_msg")); } - + if (!WxPayment.verifyNotifyHMAC(returnMap,payAccount.getApiKey())){ + return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED.getCode(), ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED.getMessage()); + } wxProfitSharingReceiverMapper.deleteByPrimaryKey(receiver); return new ResultData(returnMap); } From e3d74cbf222922e86af145acca786fad52b03001 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Thu, 6 Sep 2018 23:07:25 +0800 Subject: [PATCH 29/51] =?UTF-8?q?[=E6=A0=B8=E9=94=80=E3=80=81=E5=88=86?= =?UTF-8?q?=E8=B4=A6][=E4=BF=AE=E5=A4=8D]:=E6=A0=B8=E9=94=80=E4=B8=8E?= =?UTF-8?q?=E6=A0=B8=E9=94=80=E5=8F=91=E5=88=B8=E3=80=81=E5=88=86=E8=B4=A6?= =?UTF-8?q?=E5=88=86=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/simple/pay/WxProfitSharingP.java | 17 ++++ .../simple/service/WxCouponOrderService.java | 4 + .../impl/WxCouponOrderServiceImpl.java | 78 +++++++++++-------- .../impl/WxProfitSharingOrderServiceImpl.java | 11 ++- 4 files changed, 74 insertions(+), 36 deletions(-) diff --git a/mallinkService/src/main/java/com/simple/pay/WxProfitSharingP.java b/mallinkService/src/main/java/com/simple/pay/WxProfitSharingP.java index 38cea0e08..49f81226a 100644 --- a/mallinkService/src/main/java/com/simple/pay/WxProfitSharingP.java +++ b/mallinkService/src/main/java/com/simple/pay/WxProfitSharingP.java @@ -94,4 +94,21 @@ public class WxProfitSharingP implements Serializable { this.receivers = receivers; } + @Override + public String toString() { + final StringBuilder sb = new StringBuilder("WxPayOrderSQ{"); + sb.append("appid='").append(appid).append('\''); + sb.append(", sub_appid='").append(sub_appid).append('\''); + sb.append(", mch_id='").append(mch_id).append('\''); + sb.append(", sub_mch_id='").append(sub_mch_id).append('\''); + sb.append(", nonce_str='").append(nonce_str).append('\''); + sb.append(", sign='").append(sign).append('\''); + sb.append(", sign_type='").append(sign_type).append('\''); + sb.append(", transaction_id='").append(transaction_id).append('\''); + sb.append(", out_order_no='").append(out_order_no).append('\''); + sb.append(", receivers='").append(receivers).append('\''); + sb.append('}'); + return sb.toString(); + } + } diff --git a/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java b/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java index eeb5e4c1a..bfc38c53b 100644 --- a/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java +++ b/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java @@ -3,6 +3,8 @@ package com.simple.service; import com.github.pagehelper.PageInfo; import com.simple.common.ResultData; import com.simple.domain.po.WxCouponOrder; +import com.simple.domain.po.WxMerchantBUser; +import com.simple.domain.po.WxOrder; import com.simple.domain.vo.CUserDateAmountVo; import java.util.Date; @@ -63,6 +65,8 @@ public interface WxCouponOrderService { */ ResultData verify(Long couponOrderId, Long bUserId); + ResultData couponOrderVerify(WxCouponOrder wxCouponOrder, WxMerchantBUser wxMerchantBUser, WxOrder wxOrder); + /** * 根据日期 b用户查券list * 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 74772197c..4eaf5aeed 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java @@ -295,9 +295,35 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } } - @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + public ResultData couponOrderVerify(WxCouponOrder wxCouponOrder, WxMerchantBUser wxMerchantBUser, WxOrder wxOrder) { + if (wxCouponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_OVER_TIME.getCode()) { + logger.error("已过期: couponOrder-" + wxCouponOrder.getId()); + throw new MallinkException(ErrorCode.COUPON_ORDER_IS_OVER_TIME); + } + if (wxCouponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode()) { + logger.error("已退款: couponOrder-" + wxCouponOrder.getId()); + throw new MallinkException(ErrorCode.COUPON_ORDER_IS_INVALID); + } + if (wxCouponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()) { + logger.error("已经核销过的券: couponOrder-" + wxCouponOrder.getId()); + throw new MallinkException(ErrorCode.COUPON_ORDER_IS_USED); + } + try { + wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()); //1核销 + wxCouponOrder.setBUserId(wxMerchantBUser.getBUserId()); + wxCouponOrder.setUpdateDate(new Date()); + wxCouponOrderMapper.updateByPrimaryKeySelective(wxCouponOrder); + } catch (Exception e) { + logger.error("db failed: couponOrder-" + wxCouponOrder.getId() + ", e:" + e.getMessage()); + throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); + } + + return new ResultData(wxCouponOrder); + } + + @Override public ResultData verify(Long couponOrderId, Long bUserId) { WxCouponOrder wxCouponOrder = wxCouponOrderMapper.selectByPrimaryKey(couponOrderId); @@ -319,42 +345,30 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL); } - if (wxCouponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_OVER_TIME.getCode()) { - logger.error("已过期: couponOrder-" + couponOrderId); - throw new MallinkException(ErrorCode.COUPON_ORDER_IS_OVER_TIME); - } - if (wxCouponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_INVALID.getCode()) { - logger.error("已退款: couponOrder-" + couponOrderId); - throw new MallinkException(ErrorCode.COUPON_ORDER_IS_INVALID); - } - if (wxCouponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()) { - logger.error("已经核销过的券: couponOrder-" + couponOrderId); - throw new MallinkException(ErrorCode.COUPON_ORDER_IS_USED); - } + ResultData rd = couponOrderVerify(wxCouponOrder, wxMerchantBUser, wxOrder); + + // 核销发券 try { - wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()); //1核销 - wxCouponOrder.setBUserId(bUserId); - wxCouponOrder.setUpdateDate(new Date()); - wxCouponOrderMapper.updateByPrimaryKeySelective(wxCouponOrder); + wxCouponSendService.sendCouponToUser(wxMerchantBUser.getTenantId(), wxOrder.getCUserId(), EnumCouponSendType.COUPON_VERIFY.getCode()); } catch (Exception e) { - logger.error("db failed: couponOrder-" + couponOrderId + ", e:" + e.getMessage()); - throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); + logger.error("核销发券: " + e.getMessage()); } - // 核销发券 - wxCouponSendService.sendCouponToUser(wxMerchantBUser.getTenantId(), wxOrder.getCUserId(), EnumCouponSendType.COUPON_VERIFY.getCode()); - - // 微信分账 - WxPayOrder wxPayOrder = new WxPayOrder(); - wxPayOrder.setOrderId(wxCouponOrder.getOrderId()); - wxPayOrder.setPayOrderStatus(EnumPayStatus.PAY_WAY_SUCCESS.getCode()); - wxPayOrder = wxPayOrderMapper.selectOne(wxPayOrder); - if (wxPayOrder == null) - throw new MallinkException(ErrorCode.PAY_ORDER_NOT_FOUND); - if (wxPayOrder.getShare() == EnumPayShare.YES.getCode()) - wxProfitSharingOrderService.createSharingOrder(wxPayOrder); - return new ResultData(wxCouponOrder); + try { + WxPayOrder wxPayOrder = new WxPayOrder(); + wxPayOrder.setOrderId(wxCouponOrder.getOrderId()); + wxPayOrder.setPayOrderStatus(EnumPayStatus.PAY_WAY_SUCCESS.getCode()); + wxPayOrder = wxPayOrderMapper.selectOne(wxPayOrder); + if (wxPayOrder == null) + throw new MallinkException(ErrorCode.PAY_ORDER_NOT_FOUND); + if (wxPayOrder.getShare() == EnumPayShare.YES.getCode()) + wxProfitSharingOrderService.createSharingOrder(wxPayOrder); + } catch (Exception e) { + logger.error("微信分账: " + e.getMessage()); + } + + return rd; } @Override 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 4d2a37d36..30d6d84b2 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java @@ -23,6 +23,7 @@ import com.simple.pay.WxProfitSharingQueryP; import com.simple.service.WxProfitSharingOrderService; import com.simple.utils.BeanUtils; import com.simple.utils.Utility; +import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.simple.common.IdWorker; @@ -31,6 +32,7 @@ import com.simple.common.IdWorker; @Service public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderService { + private Logger logger = Logger.getLogger(getClass()); @Autowired WxProfitSharingOrderMapper wxProfitSharingOrderMapper; @@ -214,8 +216,9 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ wxProfitSharingP.setReceivers(receivers.toJSONString()); wxProfitSharingP.setSign(WxPayment.createSignHMAC(BeanUtils.toStringMap(wxProfitSharingP), payAccount.getApiKey())); + logger.info("wxProfitSharingP :" + wxProfitSharingP.toString()); String response = WxProfitSharing.pushOrder(BeanUtils.toStringMap(wxProfitSharingP), payAccount.getCertPath(), payAccount.getMchId()); - + logger.info("response: " + response); Map returnMap = WxPayment.xmlToMap(response); String return_code = returnMap.get("return_code"); if (!"SUCCESS".equals(return_code)) { @@ -225,9 +228,9 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ throw new MallinkException(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(), returnMap.get("return_msg")); } - if (!WxPayment.verifyNotifyHMAC(returnMap,payAccount.getApiKey())){ - throw new MallinkException(ErrorCode.PROFIT_SHARING_RETURN_INVALID.getCode(), ErrorCode.PROFIT_SHARING_RETURN_INVALID.getMessage()); - } + //if (!WxPayment.verifyNotifyHMAC(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)) { From f3bfcd0a8c7a6fde337877945bcb4a436bcd8f2d Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Thu, 6 Sep 2018 23:36:28 +0800 Subject: [PATCH 30/51] =?UTF-8?q?[=E9=80=80=E6=AC=BE=E5=9B=9E=E8=B0=83][?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D]:mchId=E6=AF=94=E8=BE=83=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/simple/service/impl/WxRefundOrderServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 fcfcb5c78..6e1f63533 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java @@ -664,7 +664,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { logger.error("未找到mch_id信息:"+mchId); throw new MallinkException(ErrorCode.MCH_INFO_NOT_FOUND); } - if (mchId != payAccount.getMchId()) { + if (!mchId.equalsIgnoreCase(payAccount.getMchId())) { logger.error("mch_id不对应:"+mchId + ",account:" + payAccount.getMchId()); throw new MallinkException(ErrorCode.MCH_INFO_NOT_EQUAL); } @@ -755,7 +755,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { logger.error("未找到mch_id信息:"+mchId); throw new MallinkException(ErrorCode.MCH_INFO_NOT_FOUND); } - if (mchId != payAccount.getMchId()) { + if (!mchId.equalsIgnoreCase(payAccount.getMchId())) { logger.error("mch_id不对应:"+mchId + ",account:" + payAccount.getMchId()); throw new MallinkException(ErrorCode.MCH_INFO_NOT_EQUAL); } From 124555700f40015fdf7992639dc89e2a404897d0 Mon Sep 17 00:00:00 2001 From: masterspirit Date: Thu, 6 Sep 2018 17:49:41 +0800 Subject: [PATCH 31/51] =?UTF-8?q?[=E5=B0=8F=E7=A8=8B=E5=BA=8F=E6=8A=95?= =?UTF-8?q?=E6=94=BE][=E4=BF=AE=E6=94=B9]=20=E8=BF=94=E5=9B=9E=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/vo/WxCouponChannelAddVo.java | 58 +++++++++++++++++++ .../impl/WxCouponChannelServiceImpl.java | 28 ++++++--- 2 files changed, 79 insertions(+), 7 deletions(-) create mode 100644 mallinkService/src/main/java/com/simple/domain/vo/WxCouponChannelAddVo.java diff --git a/mallinkService/src/main/java/com/simple/domain/vo/WxCouponChannelAddVo.java b/mallinkService/src/main/java/com/simple/domain/vo/WxCouponChannelAddVo.java new file mode 100644 index 000000000..c19e7125f --- /dev/null +++ b/mallinkService/src/main/java/com/simple/domain/vo/WxCouponChannelAddVo.java @@ -0,0 +1,58 @@ +package com.simple.domain.vo; + +import com.simple.domain.po.WxCoupon; + +import java.io.Serializable; +import java.util.Date; + +/** + * Created by syf on 2018/9/6. + * 返回投放错误列表使用 + */ +public class WxCouponChannelAddVo implements Serializable { + private static final long serialVersionUID = 1L; + private Long couponId; + private String title; + private Integer channelId; + private Date validEndDate; + + public WxCouponChannelAddVo toCouponChannnelVo(WxCoupon wxCoupon,Integer channelId){ + this.couponId = wxCoupon.getId(); + this.title = wxCoupon.getTitle(); + this.validEndDate = wxCoupon.getValidEndDate(); + return this; + } + + + public Long getCouponId() { + return couponId; + } + + public void setCouponId(Long couponId) { + this.couponId = couponId; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public Integer getChannelId() { + return channelId; + } + + public void setChannelId(Integer channelId) { + this.channelId = channelId; + } + + public Date getValidEndDate() { + return validEndDate; + } + + public void setValidEndDate(Date validEndDate) { + this.validEndDate = validEndDate; + } +} diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxCouponChannelServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxCouponChannelServiceImpl.java index 516d3930d..6cac84d3b 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxCouponChannelServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxCouponChannelServiceImpl.java @@ -10,6 +10,7 @@ import com.simple.common.ResultData; import com.simple.domain.po.WxCoupon; import com.simple.domain.po.WxCouponChannel; import com.simple.domain.po.WxMerchant; +import com.simple.domain.vo.WxCouponChannelAddVo; import com.simple.domain.vo.WxCouponChannelVo; import com.simple.mapper.WxCouponChannelMapper; import com.simple.mapper.WxMerchantMapper; @@ -70,20 +71,21 @@ public class WxCouponChannelServiceImpl implements WxCouponChannelService { @Override public ResultData addBatch(String[] ids, String[] channelId, String tanantId, Date beginTime, Date endTime) { boolean result = false; + List errorList = new ArrayList<>(); for (String targetIdstr:channelId) { Integer targetId = Integer.parseInt(targetIdstr); for (String couponidstr:ids) { Long couponid = Long.parseLong(couponidstr); - boolean addResult = addCuponChannel(couponid,targetId,tanantId,beginTime,endTime); + boolean addResult = addCuponChannel(couponid,targetId,tanantId,beginTime,endTime,errorList); if(addResult){ result = true; } } } if(result) { - return new ResultData(); + return new ResultData(errorList); }else { - return new ResultData(Result.ERROR,"请检查券的有效期以及投放截止时间"); + return new ResultData(Result.ERROR,"请检查券的有效期以及投放截止时间",errorList); } @@ -95,10 +97,11 @@ public class WxCouponChannelServiceImpl implements WxCouponChannelService { wxCouponChannel.setTenantId(tenantId); wxCouponChannel.setStatus(status); wxCouponChannel.setCouponId(couponId); + wxCouponChannelMapper.updateStatusByCouponId(wxCouponChannel); } - public boolean addCuponChannel(Long couponid,Integer channelId,String tanantId,Date beginTime,Date endTime){ + public boolean addCuponChannel(Long couponid,Integer channelId,String tanantId,Date beginTime,Date endTime,List errorList){ WxCouponChannel wxCouponChannelQuery = new WxCouponChannel(); wxCouponChannelQuery.setTenantId(tanantId); @@ -121,10 +124,21 @@ public class WxCouponChannelServiceImpl implements WxCouponChannelService { return false; } - if(wxCoupon.getValidEndDate()!=null&&wxCoupon.getValidEndDate().before(endTime)){ - logger.debug(wxCoupon.getId()+"发放时间不能晚于使用时间"); - return false; + if(channelId==1){ //列表默认投放结束时间为有效时间之后 + beginTime = new Date(); + endTime = wxCoupon.getValidEndDate(); + } + + if(channelId==2){ + if(wxCoupon.getValidEndDate()!=null&&wxCoupon.getValidEndDate().before(endTime)){ + logger.debug(wxCoupon.getId()+"发放时间不能晚于使用时间"); + WxCouponChannelAddVo vo = new WxCouponChannelAddVo(); + errorList.add(vo.toCouponChannnelVo(wxCoupon,channelId)); + return false; + } } + + WxCouponChannel wxCouponChannel = new WxCouponChannel(); wxCouponChannel.setEndTime(endTime); wxCouponChannel.setStatus(0); From 5199a9e2350b16bcd54bc787615379c7a82c2ac8 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Fri, 7 Sep 2018 07:07:53 +0800 Subject: [PATCH 32/51] =?UTF-8?q?[=E5=88=86=E8=B4=A6][=E4=BF=AE=E5=A4=8D]:?= =?UTF-8?q?=E6=89=8B=E7=BB=AD=E8=B4=B9=E9=97=AE=E9=A2=98,=E5=88=86?= =?UTF-8?q?=E8=B4=A6result=E5=A1=AB=E5=86=99pay=5Famount?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/simple/domain/po/WxPayAccount.java | 13 +++++++++++++ .../impl/WxProfitSharingOrderServiceImpl.java | 6 +++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxPayAccount.java b/mallinkService/src/main/java/com/simple/domain/po/WxPayAccount.java index 7545a7682..a063e8f2d 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxPayAccount.java +++ b/mallinkService/src/main/java/com/simple/domain/po/WxPayAccount.java @@ -65,6 +65,9 @@ public class WxPayAccount implements Serializable { /**是否开启分账**/ @io.swagger.annotations.ApiModelProperty(value="0:未开启分账1:开启分账",name="type") private boolean share; + /**手续费**/ + @io.swagger.annotations.ApiModelProperty(value="手续费",name="rate") + private Integer rate; public String getTenantId() { return tenantId; @@ -119,6 +122,15 @@ public class WxPayAccount implements Serializable { public void setShare(boolean share) { this.share = share; } + + public Integer getRate() { + return rate; + } + + public void setRate(Integer rate) { + this.rate = rate; + } + public String getPayNotifyUrl() { return notifyUrl + "/pay"; } @@ -141,6 +153,7 @@ public class WxPayAccount implements Serializable { ,CertPath_ASC("`cert_path` ASC"),CertPath_DESC("`cert_path` DESC") ,Type_ASC("`type` ASC"),Type_DESC("`type` DESC") ,Share_ASC("`share` ASC"),Share_DESC("`share` DESC") + ,Rate_ASC("`rate` ASC"),Rate_DESC("`rate` DESC") ; private String value; Field(String value){ 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 30d6d84b2..5b5533ab4 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java @@ -191,6 +191,9 @@ 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()); } + // 计算分账总金额,总金额-0.6% + Double amountD = Math.ceil(record.getPayAmount()*1.0D*(1000-payAccount.getRate())/1000); + Integer total_amount = amountD.intValue(); JSONArray receivers = new JSONArray(); List resultList = new ArrayList(); for (int i=0;i Date: Fri, 7 Sep 2018 07:09:23 +0800 Subject: [PATCH 33/51] =?UTF-8?q?[=E5=88=86=E8=B4=A6][=E4=BF=AE=E5=A4=8D]:?= =?UTF-8?q?=E6=89=8B=E7=BB=AD=E8=B4=B9=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/WxPayAccountMapper.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mallinkService/src/main/resources/mapper/WxPayAccountMapper.xml b/mallinkService/src/main/resources/mapper/WxPayAccountMapper.xml index eda1b2aa4..f8a3b6ebc 100644 --- a/mallinkService/src/main/resources/mapper/WxPayAccountMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxPayAccountMapper.xml @@ -10,10 +10,11 @@ + - `id`,`mch_id`,`parent_mch_id`,`api_key`,`notify_url`,`cert_path`,`type`,`share` + `id`,`mch_id`,`parent_mch_id`,`api_key`,`notify_url`,`cert_path`,`type`,`share`,`rate` @@ -48,6 +49,9 @@ and `share` = #{share} + + and `rate` = #{rate} + and id in From 36e28e0181cb89cd52732d05e8348b68056085ab Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Fri, 7 Sep 2018 10:42:01 +0800 Subject: [PATCH 34/51] =?UTF-8?q?[=E5=88=86=E8=B4=A6][=E4=BF=AE=E5=A4=8D]:?= =?UTF-8?q?=E6=89=8B=E7=BB=AD=E8=B4=B9=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../simple/service/impl/WxProfitSharingOrderServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 5b5533ab4..23d5411d8 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java @@ -192,8 +192,8 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ throw new MallinkException(ErrorCode.PROFIT_SHARING_RECEIVER_INVALID.getCode(), ErrorCode.PROFIT_SHARING_RECEIVER_INVALID.getMessage()); } // 计算分账总金额,总金额-0.6% - Double amountD = Math.ceil(record.getPayAmount()*1.0D*(1000-payAccount.getRate())/1000); - Integer total_amount = amountD.intValue(); + Float dChargeFee = record.getPayAmount()*1.0f*payAccount.getRate()/1000; + Integer total_amount = record.getPayAmount() - Math.round(dChargeFee.floatValue()); JSONArray receivers = new JSONArray(); List resultList = new ArrayList(); for (int i=0;i Date: Fri, 7 Sep 2018 11:00:15 +0800 Subject: [PATCH 35/51] =?UTF-8?q?[HttpException=E5=A4=84=E7=90=86][?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D]:=E6=B7=BB=E5=8A=A0log=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/simple/utils/HttpUtil.java | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/mallinkService/src/main/java/com/simple/utils/HttpUtil.java b/mallinkService/src/main/java/com/simple/utils/HttpUtil.java index 555772e11..a7b3a26f1 100644 --- a/mallinkService/src/main/java/com/simple/utils/HttpUtil.java +++ b/mallinkService/src/main/java/com/simple/utils/HttpUtil.java @@ -4,7 +4,6 @@ import okhttp3.MediaType; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; -import org.apache.commons.codec.Charsets; import org.apache.commons.io.IOUtils; import org.apache.http.*; import org.apache.http.client.entity.UrlEncodedFormEntity; @@ -19,6 +18,8 @@ import org.apache.http.message.BasicNameValuePair; import org.apache.http.protocol.HTTP; import org.apache.http.ssl.SSLContexts; import org.apache.http.util.EntityUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.KeyManager; @@ -34,7 +35,6 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; -import java.util.logging.Logger; /** @@ -44,7 +44,7 @@ import java.util.logging.Logger; */ public class HttpUtil { - private static Logger logger = Logger.getLogger(String.valueOf(HttpUtil.class)); + private static final Logger logger = LoggerFactory.getLogger(ETCPUtil.class); private static final MediaType CONTENT_TYPE_FORM = MediaType.parse("application/x-www-form-urlencoded"); private static final String DEFAULT_USER_AGENT = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.146 Safari/537.36"; @@ -70,7 +70,8 @@ public class HttpUtil { } } catch (IOException e) { - e.printStackTrace(); + logger.error(e.getMessage()); + throw new RuntimeException(e); } return null; @@ -124,13 +125,12 @@ public class HttpUtil { return sb.toString(); } else{ // - System.out.println("状态码:" + code); + logger.info("状态码:" + code); client.close(); } } catch(Exception e){ - e.printStackTrace(); - + logger.error(e.getMessage()); return null; } @@ -172,13 +172,13 @@ public class HttpUtil { try { response.close(); } catch (IOException e) { - e.printStackTrace(); + logger.error(e.getMessage()); } } try { httpclient.close(); } catch (IOException e) { - e.printStackTrace(); + logger.error(e.getMessage()); } } return null; @@ -196,6 +196,7 @@ public class HttpUtil { .url(url).post(body).build(); return exec(request); } catch (IOException e) { + logger.error(e.getMessage()); return null; } } @@ -207,6 +208,7 @@ public class HttpUtil { throw new RuntimeException("Unexpected code " + response); return response.body().string(); } catch (IOException e) { + logger.error(e.getMessage()); throw new RuntimeException(e); } } @@ -252,6 +254,7 @@ public class HttpUtil { } return sb.toString(); } catch (Exception e) { + logger.error(e.getMessage()); throw new RuntimeException(e); } finally { IOUtils.closeQuietly(out); @@ -289,17 +292,17 @@ public class HttpUtil { HttpPost httpPost = new HttpPost(url); StringEntity entityStr = new StringEntity(xmlStr); entityStr.setContentType("text/xml"); - System.out.println("entityStr--------------"+entityStr); + //logger.info("entityStr--------------"+entityStr); httpPost.setEntity(entityStr); CloseableHttpResponse response = httpclient.execute(httpPost); try { HttpEntity entity = response.getEntity(); - System.out.println("----------------------------------------"); - System.out.println(response.getStatusLine()); + //System.out.println("----------------------------------------"); + //System.out.println(response.getStatusLine()); if (entity != null) { - System.out.println("Response content length: " + entity.getContentLength()); + //System.out.println("Response content length: " + entity.getContentLength()); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(entity.getContent())); StringBuilder sb = new StringBuilder(); String line = null; From 6848cb7259dd8eb10068805da1cfe4b568e82d09 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Fri, 7 Sep 2018 11:26:01 +0800 Subject: [PATCH 36/51] =?UTF-8?q?[=E4=BC=9A=E5=91=98=E7=AE=A1=E7=90=86][?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D]:=E4=BC=9A=E5=91=98=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WxCUserBasicInfoController.java | 298 ++++++++--------- .../controller/WxCUserDataController.java | 4 +- .../controller/WxUserStructureController.java | 24 +- ...cInfoDto.java => WxCUserBasicInfoDto.java} | 230 +++++++------ .../simple/domain/po/WxCUserBasicInfo.java | 12 +- .../simple/mapper/WxCUserBasicInfoMapper.java | 9 +- .../java/com/simple/mapper/WxCUserMapper.java | 4 +- .../service/WxCUserBasicInfoService.java | 8 +- .../com/simple/service/WxCUserService.java | 4 +- .../impl/WxCUserBasicInfoServiceImpl.java | 8 +- .../service/impl/WxCUserServiceImpl.java | 4 +- .../service/impl/WxScoreRulesServiceImpl.java | 4 +- .../mapper/WxCUserBasicInfoMapper.xml | 314 +++++++++--------- .../main/resources/mapper/WxCUserMapper.xml | 2 +- 14 files changed, 450 insertions(+), 475 deletions(-) rename mallinkService/src/main/java/com/simple/domain/dto/{WxCuerBasicInfoDto.java => WxCUserBasicInfoDto.java} (90%) diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxCUserBasicInfoController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxCUserBasicInfoController.java index b281d108f..867d7f84d 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxCUserBasicInfoController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxCUserBasicInfoController.java @@ -1,108 +1,85 @@ package com.simple.controller; -import java.text.NumberFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.apache.log4j.Logger; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.ModelAttribute; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; import com.simple.common.Result; import com.simple.common.ResultData; -import com.simple.domain.dto.WxCuerBasicInfoDto; -import com.simple.domain.po.WxCUser; -import com.simple.domain.po.WxCUserBasicInfo; -import com.simple.domain.po.WxCUserTags; -import com.simple.domain.po.WxCoupon; -import com.simple.domain.po.WxCouponOrder; -import com.simple.domain.po.WxTags; -import com.simple.domain.vo.UserStructureVo; -import com.simple.enums.EnumAgeInfo; -import com.simple.service.WxCUserBasicInfoService; -import com.simple.service.WxCUserService; -import com.simple.service.WxCUserTagsService; -import com.simple.service.WxCouponOrderService; -import com.simple.service.WxCouponService; -import com.simple.service.WxTagsService; - +import com.simple.domain.dto.WxCUserBasicInfoDto; +import com.simple.domain.po.*; +import com.simple.service.*; 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.ArrayList; +import java.util.List; @RestController @RequestMapping("wxCUserBasicInfo") -@Api(description="会员管理相关接口") -public class WxCUserBasicInfoController extends BaseController -{ - @Autowired +@Api(description = "会员管理相关接口") +public class WxCUserBasicInfoController extends BaseController { + @Autowired private WxCUserBasicInfoService wxCUserBasicInfoService; - - @Autowired - private WxCUserTagsService wxCUserTagsService; - - @Autowired - private WxTagsService wxTagsService; - - @Autowired - private WxCUserService wxCUserService; - - @Autowired - private WxCouponOrderService wxCouponOrderService; - - @Autowired - private WxCouponService wxCouponService; + + @Autowired + private WxCUserTagsService wxCUserTagsService; + + @Autowired + private WxTagsService wxTagsService; + + @Autowired + private WxCUserService wxCUserService; + + @Autowired + private WxCouponOrderService wxCouponOrderService; + + @Autowired + private WxCouponService wxCouponService; private Logger logger = Logger.getLogger(WxCUserBasicInfoController.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 WxCuerBasicInfoDto wxCUserBasicInfo,Integer pageNum, Integer pageSize) { - if (null == wxCUserBasicInfo) wxCUserBasicInfo = new WxCuerBasicInfoDto(); - String tenantId = getTenantId(); - wxCUserBasicInfo.setTenantId(tenantId); + @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 WxCUserBasicInfoDto wxCUserBasicInfo, Integer pageNum, Integer pageSize) { + if (null == wxCUserBasicInfo) wxCUserBasicInfo = new WxCUserBasicInfoDto(); + String tenantId = getTenantId(); + wxCUserBasicInfo.setTenantId(tenantId); PageInfo page = wxCUserBasicInfoService.list(wxCUserBasicInfo, pageNum, pageSize); - if(page.getSize()==0 && StringUtils.isNotBlank(wxCUserBasicInfo.getPhone()) - && wxCUserBasicInfo.getEndTime()==null && wxCUserBasicInfo.getStartTime()==null - && StringUtils.isBlank(wxCUserBasicInfo.getName()) - ) {//当只有手机号查询并且查不到数据 ,新增 - WxCUser cUser = new WxCUser(); - cUser.setTenantId(tenantId); - cUser.setPhone(wxCUserBasicInfo.getPhone()); - PageInfo cUsers = wxCUserService.listAsPage(cUser, 1, 1); - if(cUsers.getSize()>0) { - createUserBasicInfo(cUsers.getList().get(0)); - page = wxCUserBasicInfoService.list(wxCUserBasicInfo, pageNum, pageSize); - } + if (page.getSize() == 0 && StringUtils.isNotBlank(wxCUserBasicInfo.getPhone()) + && wxCUserBasicInfo.getEndTime() == null && wxCUserBasicInfo.getStartTime() == null + && StringUtils.isBlank(wxCUserBasicInfo.getName()) + ) {//当只有手机号查询并且查不到数据 ,新增 + WxCUser cUser = new WxCUser(); + cUser.setTenantId(tenantId); + cUser.setPhone(wxCUserBasicInfo.getPhone()); + PageInfo cUsers = wxCUserService.listAsPage(cUser, 1, 1); + if (cUsers.getSize() > 0) { + createUserBasicInfo(cUsers.getList().get(0)); + page = wxCUserBasicInfoService.list(wxCUserBasicInfo, pageNum, pageSize); + } } return new ResultData(page); } - - - private void createUserBasicInfo(WxCUser wxCUser) { - WxCUserBasicInfo wxCUserBasicInfo =new WxCUserBasicInfo(); - wxCUserBasicInfo.setCUserId(wxCUser.getId()); - wxCUserBasicInfo.setPhone(wxCUser.getPhone()); - wxCUserBasicInfo.setTenantId(wxCUser.getTenantId()); - wxCUserBasicInfo.setNickName(wxCUser.getNickName()); - wxCUserBasicInfoService.saveOrUpdate(wxCUserBasicInfo); - - } + + + private void createUserBasicInfo(WxCUser wxCUser) { + WxCUserBasicInfo wxCUserBasicInfo = new WxCUserBasicInfo(); + wxCUserBasicInfo.setId(wxCUser.getId()); + wxCUserBasicInfo.setPhone(wxCUser.getPhone()); + wxCUserBasicInfo.setTenantId(wxCUser.getTenantId()); + wxCUserBasicInfo.setNickName(wxCUser.getNickName()); + wxCUserBasicInfoService.saveOrUpdate(wxCUserBasicInfo); + + } // @ApiOperation("新增接口") // @PostMapping("add") @@ -116,89 +93,98 @@ public class WxCUserBasicInfoController extends BaseController @ApiOperation("根据id更新接口") @PostMapping("update") public ResultData update(@RequestBody WxCUserBasicInfo wxCUserBasicInfo) { - WxCUserBasicInfo info = wxCUserBasicInfoService.getById(wxCUserBasicInfo.getId()); - wxCUserBasicInfo.setTenantId(getTenantId()); - if(StringUtils.isNotBlank(wxCUserBasicInfo.getTagIds())) { - WxCUserTags record =new WxCUserTags(); - record.setUserId(info.getCUserId()); - record.setTenantId(getTenantId()); - PageInfo page = wxCUserTagsService.listAsPage(record, 1, 1); - if(page.getSize()>0) { - WxCUserTags t = page.getList().get(0); - record.setId(t.getId()); - } - String tags = wxCUserBasicInfo.getTagIds(); - List tagIdList = new ArrayList<>(); - for(String t:tags.split(",")) { - tagIdList.add(Long.valueOf(t)); - } - record.setTags(JSON.toJSONString(tagIdList)); - wxCUserTagsService.saveOrUpdate(record); - wxCUserBasicInfo.setTagId(record.getId()); - } + WxCUserBasicInfo info = wxCUserBasicInfoService.getById(wxCUserBasicInfo.getId()); + wxCUserBasicInfo.setTenantId(getTenantId()); + if (StringUtils.isNotBlank(wxCUserBasicInfo.getTagIds())) { + WxCUserTags record = new WxCUserTags(); + record.setUserId(info.getId()); + record.setTenantId(getTenantId()); + PageInfo page = wxCUserTagsService.listAsPage(record, 1, 1); + if (page.getSize() > 0) { + WxCUserTags t = page.getList().get(0); + record.setId(t.getId()); + } + String tags = wxCUserBasicInfo.getTagIds(); + List tagIdList = new ArrayList<>(); + for (String t : tags.split(",")) { + tagIdList.add(Long.valueOf(t)); + } + record.setTags(JSON.toJSONString(tagIdList)); + wxCUserTagsService.saveOrUpdate(record); + wxCUserBasicInfo.setTagId(record.getId()); + } wxCUserBasicInfoService.saveOrUpdate(wxCUserBasicInfo); return new ResultData(); } @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) { wxCUserBasicInfoService.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) { - WxCUserBasicInfo info = wxCUserBasicInfoService.getById(id); - if(info.getTagId()!=null) { - WxCUserTags uTag = wxCUserTagsService.getById(info.getTagId()); - if(StringUtils.isNotBlank(uTag.getTags())) { - List ids = JSONObject.parseArray(uTag.getTags(),Long.class); - WxTags wxTags =new WxTags(); - wxTags.setIds(ids); - PageInfo page = wxTagsService.listAsPage(wxTags, 1, 5000); - String tagNames=""; - String tagIds=""; - List tagIdList = new ArrayList<>(); - for(WxTags wt:page.getList()) { - tagNames+=wt.getName()+"/"; - tagIds+=wt.getId()+","; - tagIdList.add(wt.getId()); - } - if(StringUtils.isNotBlank(tagNames)) { - info.setTagNames(tagNames.substring(0,tagNames.length()-1)); - } - if(StringUtils.isNoneBlank(tagIds)) { - info.setTagIds(tagIds.substring(0,tagIds.length()-1)); - } - long count = wxCUserTagsService.findCountByTag(tagIdList); - info.setCount(count); - } - } - return new ResultData(Result.SUCCESS,"查询成功",info); + WxCUserBasicInfo info = wxCUserBasicInfoService.getById(id); + if (info != null && info.getTagId() != null) { + WxCUserTags uTag = wxCUserTagsService.getById(info.getTagId()); + if (StringUtils.isNotBlank(uTag.getTags())) { + List ids = JSONObject.parseArray(uTag.getTags(), Long.class); + WxTags wxTags = new WxTags(); + wxTags.setIds(ids); + PageInfo page = wxTagsService.listAsPage(wxTags, 1, 5000); + String tagNames = ""; + String tagIds = ""; + List tagIdList = new ArrayList<>(); + for (WxTags wt : page.getList()) { + tagNames += wt.getName() + "/"; + tagIds += wt.getId() + ","; + tagIdList.add(wt.getId()); + } + if (StringUtils.isNotBlank(tagNames)) { + info.setTagNames(tagNames.substring(0, tagNames.length() - 1)); + } + if (StringUtils.isNoneBlank(tagIds)) { + info.setTagIds(tagIds.substring(0, tagIds.length() - 1)); + } + long count = wxCUserTagsService.findCountByTag(tagIdList); + info.setCount(count); + } + } else { + info = new WxCUserBasicInfo(); + info.setId(id); + WxCUser user = wxCUserService.getById(id); + if (user != null) { + info.setTenantId(user.getTenantId()); + info.setPhone(user.getPhone()); + info.setSex(user.getGender()); + } + } + return new ResultData(Result.SUCCESS, "查询成功", info); + } + + @ApiOperation("根据userId查询交易记录接口") + @GetMapping("/findOrderCouponByUserId") + @ApiImplicitParam(name = "userId", value = "userId", dataType = "Long", paramType = "query", required = true) + public ResultData findOrderCouponByUserId(Long userId, Integer pageNum, Integer pageSize) { + WxCouponOrder corder = new WxCouponOrder(); + corder.setCUserId(userId); + corder.setTenantId(getTenantId()); + PageInfo page = wxCouponOrderService.listAsPage(corder, pageNum, pageSize); + if (page.getSize() > 0) { + List list = page.getList(); + for (WxCouponOrder c : list) { + WxCoupon coupon = wxCouponService.getById(c.getCouponId()); + c.setCouponName(coupon.getTitle()); + c.setSalePrice(coupon.getPrice()); + } + } + return new ResultData(Result.SUCCESS, "查询成功", page); } - - @ApiOperation("根据userId查询交易记录接口") - @GetMapping("/findOrderCouponByUserId") - @ApiImplicitParam(name="userId",value="userId",dataType="Long", paramType = "query",required=true) - public ResultData findOrderCouponByUserId(Long userId,Integer pageNum, Integer pageSize) { - WxCouponOrder corder = new WxCouponOrder(); - corder.setCUserId(userId); - corder.setTenantId(getTenantId()); - PageInfo page = wxCouponOrderService.listAsPage(corder, pageNum, pageSize); - if(page.getSize()>0) { - List list = page.getList(); - for(WxCouponOrder c:list) { - WxCoupon coupon = wxCouponService.getById(c.getCouponId()); - c.setCouponName(coupon.getTitle()); - c.setSalePrice(coupon.getPrice()); - } - } - return new ResultData(Result.SUCCESS,"查询成功",page); - } - - + + } diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxCUserDataController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxCUserDataController.java index 6f9304468..e8953e854 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxCUserDataController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxCUserDataController.java @@ -16,7 +16,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.simple.common.ResultData; -import com.simple.domain.dto.WxCuerBasicInfoDto; +import com.simple.domain.dto.WxCUserBasicInfoDto; import com.simple.domain.vo.CUserDateAmountVo; import com.simple.domain.vo.TouchUsersReportVo; import com.simple.domain.vo.UserStructureVo; @@ -42,7 +42,7 @@ public class WxCUserDataController extends BaseController{ @GetMapping("findUserCountData") @ApiOperation("查询用户数量接口") public ResultData findUserCountData() { - WxCuerBasicInfoDto dto = new WxCuerBasicInfoDto(); + WxCUserBasicInfoDto dto = new WxCUserBasicInfoDto(); long allCount = wxCUserService.findCount(dto);//总数 Calendar c = Calendar.getInstance(); c.set(Calendar.HOUR_OF_DAY, 0); diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxUserStructureController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxUserStructureController.java index 007fcf1dc..9dfbd9411 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxUserStructureController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxUserStructureController.java @@ -1,5 +1,5 @@ package com.simple.controller; - + import java.text.NumberFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -11,21 +11,13 @@ import java.util.Map; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpHeaders; -import org.springframework.http.MediaType; -import org.springframework.http.ResponseEntity; -import org.springframework.util.LinkedMultiValueMap; -import org.springframework.util.MultiValueMap; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.client.RestTemplate; -import com.alibaba.fastjson.JSON; import com.github.pagehelper.PageInfo; import com.simple.common.ResultData; -import com.simple.domain.dto.WxCuerBasicInfoDto; +import com.simple.domain.dto.WxCUserBasicInfoDto; import com.simple.domain.po.WxCUser; import com.simple.domain.po.WxUserChannel; import com.simple.domain.vo.UserStructureVo; @@ -57,7 +49,7 @@ public class WxUserStructureController extends BaseController{ public ResultData findUserSexStructure( Date startTime,Date endTime ) { - WxCuerBasicInfoDto dto = new WxCuerBasicInfoDto(); + WxCUserBasicInfoDto dto = new WxCUserBasicInfoDto(); dto.setTenantId(getTenantId()); dto.setStartTime(startTime); if(endTime!=null) { @@ -84,7 +76,7 @@ public class WxUserStructureController extends BaseController{ @ApiOperation("查询会员年龄结构") @GetMapping("/findUserAgeStructure") public ResultData findUserAgeStructure( Date startTime,Date endTime) { - WxCuerBasicInfoDto dto = new WxCuerBasicInfoDto(); + WxCUserBasicInfoDto dto = new WxCUserBasicInfoDto(); dto.setTenantId(getTenantId()); dto.setStartTime(startTime); if(endTime!=null) { @@ -112,7 +104,7 @@ public class WxUserStructureController extends BaseController{ @ApiOperation("查询会员数量") @GetMapping("/findUserDataCount") public ResultData findUserCount(Date startTime,Date endTime) { - WxCuerBasicInfoDto dto = new WxCuerBasicInfoDto(); + WxCUserBasicInfoDto dto = new WxCUserBasicInfoDto(); dto.setTenantId(getTenantId()); dto.setStartTime(startTime); if(endTime!=null) { @@ -217,9 +209,9 @@ public class WxUserStructureController extends BaseController{ } return new ResultData(vos); } - + - private long getCountByAge(EnumAgeInfo a,Calendar c, WxCuerBasicInfoDto dto ) { + private long getCountByAge(EnumAgeInfo a,Calendar c, WxCUserBasicInfoDto dto ) { c.add(Calendar.YEAR, -a.getEnd()); Date startTime = c.getTime(); c.clear(); @@ -235,7 +227,7 @@ public class WxUserStructureController extends BaseController{ //通过性别获取数量 - private long getCount(WxCuerBasicInfoDto dto) { + private long getCount(WxCUserBasicInfoDto dto) { // wxCUserBasicInfoService.findCountBySex(dto) basic表与cuser表示对应的,先有cuser 才有basic //所有这里不需要再去查basic return wxCUserService.findCount(dto); diff --git a/mallinkService/src/main/java/com/simple/domain/dto/WxCuerBasicInfoDto.java b/mallinkService/src/main/java/com/simple/domain/dto/WxCUserBasicInfoDto.java similarity index 90% rename from mallinkService/src/main/java/com/simple/domain/dto/WxCuerBasicInfoDto.java rename to mallinkService/src/main/java/com/simple/domain/dto/WxCUserBasicInfoDto.java index 3507f64a8..e83f7ae2b 100644 --- a/mallinkService/src/main/java/com/simple/domain/dto/WxCuerBasicInfoDto.java +++ b/mallinkService/src/main/java/com/simple/domain/dto/WxCUserBasicInfoDto.java @@ -1,109 +1,121 @@ -package com.simple.domain.dto; - -import java.io.Serializable; -import java.util.Date; - -import javax.persistence.Transient; -/** - * 用户查询dto - * @author jinguo - * - */ -public class WxCuerBasicInfoDto implements Serializable{ - - /** - * - */ - private static final long serialVersionUID = -1116465873573690766L; - - @io.swagger.annotations.ApiModelProperty(value="开始时间",name="startTime") - private Date startTime; - - @io.swagger.annotations.ApiModelProperty(value="结束时间",name="endTime") - private Date endTime; - - @io.swagger.annotations.ApiModelProperty(value="手机号",name="phone") - private String phone; - - @io.swagger.annotations.ApiModelProperty(value="姓名",name="name") - private String name; - - /*租户id**/ -// @io.swagger.annotations.ApiModelProperty(value="租户id",name="tenantId") - @Transient - private String tenantId; - - @Transient - private Date birthStartTime; - @Transient - private Date birthEndTime; - - @Transient - private Integer sex; - - public Date getBirthStartTime() { - return birthStartTime; - } - - public void setBirthStartTime(Date birthStartTime) { - this.birthStartTime = birthStartTime; - } - - public Date getBirthEndTime() { - return birthEndTime; - } - - public void setBirthEndTime(Date birthEndTime) { - this.birthEndTime = birthEndTime; - } - - public Integer getSex() { - return sex; - } - - public void setSex(Integer sex) { - this.sex = sex; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getTenantId() { - return tenantId; - } - - public void setTenantId(String tenantId) { - this.tenantId = tenantId; - } - - public Date getStartTime() { - return startTime; - } - - public void setStartTime(Date startTime) { - this.startTime = startTime; - } - - public Date getEndTime() { - return endTime; - } - - public void setEndTime(Date endTime) { - this.endTime = endTime; - } - - public String getPhone() { - return phone; - } - - public void setPhone(String phone) { - this.phone = phone; - } - - -} +package com.simple.domain.dto; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Id; +import javax.persistence.Transient; +/** + * 用户查询dto + * @author jinguo + * + */ +public class WxCUserBasicInfoDto implements Serializable{ + + /** + * + */ + private static final long serialVersionUID = -1116465873573690766L; + + @Id + protected Long id; + + @io.swagger.annotations.ApiModelProperty(value="开始时间",name="startTime") + private Date startTime; + + @io.swagger.annotations.ApiModelProperty(value="结束时间",name="endTime") + private Date endTime; + + @io.swagger.annotations.ApiModelProperty(value="手机号",name="phone") + private String phone; + + @io.swagger.annotations.ApiModelProperty(value="姓名",name="name") + private String name; + + /*租户id**/ +// @io.swagger.annotations.ApiModelProperty(value="租户id",name="tenantId") + @Transient + private String tenantId; + + @Transient + private Date birthStartTime; + @Transient + private Date birthEndTime; + + @Transient + private Integer sex; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Date getBirthStartTime() { + return birthStartTime; + } + + public void setBirthStartTime(Date birthStartTime) { + this.birthStartTime = birthStartTime; + } + + public Date getBirthEndTime() { + return birthEndTime; + } + + public void setBirthEndTime(Date birthEndTime) { + this.birthEndTime = birthEndTime; + } + + public Integer getSex() { + return sex; + } + + public void setSex(Integer sex) { + this.sex = sex; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getTenantId() { + return tenantId; + } + + public void setTenantId(String tenantId) { + this.tenantId = tenantId; + } + + public Date getStartTime() { + return startTime; + } + + public void setStartTime(Date startTime) { + this.startTime = startTime; + } + + public Date getEndTime() { + return endTime; + } + + public void setEndTime(Date endTime) { + this.endTime = endTime; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + +} diff --git a/mallinkService/src/main/java/com/simple/domain/po/WxCUserBasicInfo.java b/mallinkService/src/main/java/com/simple/domain/po/WxCUserBasicInfo.java index a3b4d59fa..c65e1ec8b 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxCUserBasicInfo.java +++ b/mallinkService/src/main/java/com/simple/domain/po/WxCUserBasicInfo.java @@ -66,9 +66,6 @@ public class WxCUserBasicInfo implements Serializable { /*标签**/ @io.swagger.annotations.ApiModelProperty(value="标签",name="tagId") private Long tagId; - /*wx_c_user 的id**/ - @io.swagger.annotations.ApiModelProperty(value="wx_c_user 的id",name="cUserId") - private Long cUserId; /*创建时间**/ @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate") private Date createDate; @@ -186,12 +183,6 @@ public class WxCUserBasicInfo implements Serializable { public void setTagId(Long _tagId) { tagId = _tagId; } - public Long getCUserId() { - return cUserId; - } - public void setCUserId(Long _cUserId) { - cUserId = _cUserId; - } public Date getCreateDate() { return createDate; } @@ -230,8 +221,7 @@ public class WxCUserBasicInfo implements Serializable { ,Email_ASC("`email` ASC"),Email_DESC("`email` DESC") ,Address_ASC("`address` ASC"),Address_DESC("`address` DESC") ,Poins_ASC("`poins` ASC"),Poins_DESC("`poins` DESC") - ,TagId_ASC("`tagId` ASC"),TagId_DESC("`tagId` DESC") - ,CUserId_ASC("`cUserId` ASC"),CUserId_DESC("`cUserId` DESC") + ,TagId_ASC("`tag_id` ASC"),TagId_DESC("`tag_id` DESC") ,CreateDate_ASC("`create_date` ASC"),CreateDate_DESC("`create_date` DESC") ,UpdateDate_ASC("`update_date` ASC"),UpdateDate_DESC("`update_date` DESC") ,TenantId_ASC("`tenant_id` ASC"),TenantId_DESC("`tenant_id` DESC") diff --git a/mallinkService/src/main/java/com/simple/mapper/WxCUserBasicInfoMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxCUserBasicInfoMapper.java index cb1d469e7..7bba1edc7 100644 --- a/mallinkService/src/main/java/com/simple/mapper/WxCUserBasicInfoMapper.java +++ b/mallinkService/src/main/java/com/simple/mapper/WxCUserBasicInfoMapper.java @@ -2,9 +2,8 @@ package com.simple.mapper; import java.util.*; import com.simple.common.CommonMapper; -import org.apache.ibatis.annotations.Param; -import com.simple.domain.dto.WxCuerBasicInfoDto; +import com.simple.domain.dto.WxCUserBasicInfoDto; import com.simple.domain.po.WxCUserBasicInfo; public interface WxCUserBasicInfoMapper extends CommonMapper { @@ -13,11 +12,11 @@ public interface WxCUserBasicInfoMapper extends CommonMapper list(WxCuerBasicInfoDto record); + List list(WxCUserBasicInfoDto record); void updateScore(WxCUserBasicInfo record); - long findCountBySex(WxCuerBasicInfoDto dto); + long findCountBySex(WxCUserBasicInfoDto dto); - long findCountByAge(WxCuerBasicInfoDto dto); + long findCountByAge(WxCUserBasicInfoDto dto); } diff --git a/mallinkService/src/main/java/com/simple/mapper/WxCUserMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxCUserMapper.java index d2ed63697..0a58c49c5 100644 --- a/mallinkService/src/main/java/com/simple/mapper/WxCUserMapper.java +++ b/mallinkService/src/main/java/com/simple/mapper/WxCUserMapper.java @@ -5,7 +5,7 @@ import java.util.List; import org.apache.ibatis.annotations.Param; import com.simple.common.CommonMapper; -import com.simple.domain.dto.WxCuerBasicInfoDto; +import com.simple.domain.dto.WxCUserBasicInfoDto; import com.simple.domain.po.WxCUser; public interface WxCUserMapper extends CommonMapper { @@ -17,7 +17,7 @@ public interface WxCUserMapper extends CommonMapper { WxCUser findByToken(String token); - long findCount(WxCuerBasicInfoDto dto); + long findCount(WxCUserBasicInfoDto dto); List listByChannel(@Param("sceneList")List sceneList); diff --git a/mallinkService/src/main/java/com/simple/service/WxCUserBasicInfoService.java b/mallinkService/src/main/java/com/simple/service/WxCUserBasicInfoService.java index defbbed69..10c279b89 100644 --- a/mallinkService/src/main/java/com/simple/service/WxCUserBasicInfoService.java +++ b/mallinkService/src/main/java/com/simple/service/WxCUserBasicInfoService.java @@ -1,7 +1,7 @@ package com.simple.service; import com.github.pagehelper.PageInfo; -import com.simple.domain.dto.WxCuerBasicInfoDto; +import com.simple.domain.dto.WxCUserBasicInfoDto; import com.simple.domain.po.WxCUserBasicInfo; public interface WxCUserBasicInfoService { @@ -40,7 +40,7 @@ public interface WxCUserBasicInfoService { - PageInfo list(WxCuerBasicInfoDto record, Integer pageIndex, Integer pageSize); + PageInfo list(WxCUserBasicInfoDto record, Integer pageIndex, Integer pageSize); /** * 修改会员积分 @@ -53,14 +53,14 @@ public interface WxCUserBasicInfoService { * @param sex * @return */ - long findCountBySex(WxCuerBasicInfoDto dto); + long findCountBySex(WxCUserBasicInfoDto dto); /** * 根据年龄查询数量 * @param dto * @return */ - long findCountByAge(WxCuerBasicInfoDto dto); + long findCountByAge(WxCUserBasicInfoDto dto); diff --git a/mallinkService/src/main/java/com/simple/service/WxCUserService.java b/mallinkService/src/main/java/com/simple/service/WxCUserService.java index 61ef2f35d..4a811283c 100644 --- a/mallinkService/src/main/java/com/simple/service/WxCUserService.java +++ b/mallinkService/src/main/java/com/simple/service/WxCUserService.java @@ -3,7 +3,7 @@ package com.simple.service; import java.util.List; import com.github.pagehelper.PageInfo; -import com.simple.domain.dto.WxCuerBasicInfoDto; +import com.simple.domain.dto.WxCUserBasicInfoDto; import com.simple.domain.po.WxCUser; public interface WxCUserService { @@ -61,7 +61,7 @@ public interface WxCUserService { * @param dto * @return */ - long findCount(WxCuerBasicInfoDto dto); + long findCount(WxCUserBasicInfoDto dto); /** 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 6dac1344d..19aee7de4 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxCUserBasicInfoServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxCUserBasicInfoServiceImpl.java @@ -6,7 +6,7 @@ import org.springframework.stereotype.Service; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.simple.common.IdWorker; -import com.simple.domain.dto.WxCuerBasicInfoDto; +import com.simple.domain.dto.WxCUserBasicInfoDto; import com.simple.domain.po.WxCUserBasicInfo; import com.simple.mapper.WxCUserBasicInfoMapper; import com.simple.service.WxCUserBasicInfoService; @@ -26,7 +26,7 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { @Override - public PageInfo list(WxCuerBasicInfoDto record, Integer pageIndex, Integer pageSize) { + public PageInfo list(WxCUserBasicInfoDto record, Integer pageIndex, Integer pageSize) { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCUserBasicInfoMapper.list(record)); } @@ -63,7 +63,7 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { @Override - public long findCountBySex(WxCuerBasicInfoDto dto) { + public long findCountBySex(WxCUserBasicInfoDto dto) { return wxCUserBasicInfoMapper.findCountBySex(dto); } @@ -71,7 +71,7 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { @Override - public long findCountByAge(WxCuerBasicInfoDto dto) { + public long findCountByAge(WxCUserBasicInfoDto dto) { return wxCUserBasicInfoMapper.findCountByAge(dto); } diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxCUserServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxCUserServiceImpl.java index e083d8242..70f37bc97 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxCUserServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxCUserServiceImpl.java @@ -3,7 +3,7 @@ package com.simple.service.impl; import java.util.*; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; -import com.simple.domain.dto.WxCuerBasicInfoDto; +import com.simple.domain.dto.WxCUserBasicInfoDto; import com.simple.domain.po.WxCUser; import com.simple.mapper.WxCUserMapper; import com.simple.service.WxCUserService; @@ -63,7 +63,7 @@ public class WxCUserServiceImpl implements WxCUserService { } @Override - public long findCount(WxCuerBasicInfoDto dto) { + public long findCount(WxCUserBasicInfoDto dto) { return wxCUserMapper.findCount(dto); } diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxScoreRulesServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxScoreRulesServiceImpl.java index 1549e447b..6a56653c9 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxScoreRulesServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxScoreRulesServiceImpl.java @@ -72,10 +72,10 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService { if (wxCUser.getPhone() != null) { //修改basic表积分 WxCUserBasicInfo wxCUserBasicInfo = new WxCUserBasicInfo(); + wxCUserBasicInfo.setId(wxCUser.getId()); wxCUserBasicInfo.setTenantId(tenantId); wxCUserBasicInfo.setPhone(wxCUser.getPhone()); wxCUserBasicInfo.setPoins(wxCUser.getScore()); - wxCUserBasicInfo.setCUserId(wxCUser.getId()); wxCUserBasicInfoService.updateScore(wxCUserBasicInfo); } return addScoreNumber; @@ -106,10 +106,10 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService { if (wxCUser.getPhone() != null) { //修改basic表积分 WxCUserBasicInfo wxCUserBasicInfo = new WxCUserBasicInfo(); + wxCUserBasicInfo.setId(wxCUser.getId()); wxCUserBasicInfo.setTenantId(tenantId); wxCUserBasicInfo.setPhone(wxCUser.getPhone()); wxCUserBasicInfo.setPoins(wxCUser.getScore()); - wxCUserBasicInfo.setCUserId(wxCUser.getId()); wxCUserBasicInfoService.updateScore(wxCUserBasicInfo); } return addScoreNumber; diff --git a/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml b/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml index 2ecd237ac..ba1b218cb 100644 --- a/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml @@ -1,172 +1,168 @@ - - - - - - - - - - - - - - - - - - - - - `id`,`phone`,`birthdate`,`education`,`sex`,`email`,`address`,`poins`,`tag_id`,`c_user_id`, + + + + + + + + + + + + + + + + + + + + `id`,`phone`,`birthdate`,`education`,`sex`,`email`,`address`,`poins`,`tag_id`, `create_date`,`update_date`,`tenant_id`,`name`,level,nick_name - - where 1 = 1 - - - and `id` = #{id} - - - - - and `phone` like concat('%', #{phone},'%') - - - - - and `birthdate` = #{birthdate} - - - - - and `education` like concat('%', #{education},'%') - - - - - and `sex` = #{sex} - - - - - and `email` like concat('%', #{email},'%') - - - - - and `address` like concat('%', #{address},'%') - - - - - and `poins` = #{poins} - - - - - and `tag_id` = #{tagId} - - - - - and `c_user_id` = #{cUserId} - - - - - and `create_date` = #{createDate} - - - - - and `update_date` = #{updateDate} - - - - - and `tenant_id` like concat('%', #{tenantId},'%') - - - - - - and `name` like concat('%', #{name},'%') - - - - and id in - - #{idItem} - - - order by ${sortColumns} + + where 1 = 1 + + + and `id` = #{id} + + + + and `phone` like concat('%', #{phone},'%') + + + + and `birthdate` = #{birthdate} + + + + and `education` like concat('%', #{education},'%') + + + + and `sex` = #{sex} + + + + and `email` like concat('%', #{email},'%') + + + + and `address` like concat('%', #{address},'%') + + + + and `poins` = #{poins} + + + + and `tag_id` = #{tagId} + + + + and `c_user_id` = #{cUserId} + + + + and c.`create_date` = #{createDate} + + + + and c.`update_date` = #{updateDate} + + + + and c.`tenant_id` like concat('%', #{tenantId},'%') + + + + and c.`name` like concat('%', #{name},'%') + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + + c.`id`,c.`phone`,cb.`birthdate`,cb.`education`,cb.`sex`,cb.`email`,cb.`address`,cb.`poins`,cb.`tag_id`, + cb.`create_date`,cb.`update_date`,c.`tenant_id`,cb.`name`,cb.level,cb.nick_name - - - - - - + + + + update wx_c_user_basic_info set poins=#{poins} where phone=#{phone} and tenant_id=#{tenantId} and c_user_id=#{cUserId} - - - - - + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxCUserMapper.xml b/mallinkService/src/main/resources/mapper/WxCUserMapper.xml index 13531a2fd..6980fb8a8 100644 --- a/mallinkService/src/main/resources/mapper/WxCUserMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCUserMapper.xml @@ -184,7 +184,7 @@ where `token` = #{token} - select count(id) from wx_c_user where 1=1 and gender =#{sex} From 14c14b03585e6f59f7ee5e9bcdf1c764745e2d70 Mon Sep 17 00:00:00 2001 From: hupeng Date: Fri, 7 Sep 2018 11:28:43 +0800 Subject: [PATCH 37/51] =?UTF-8?q?[=E6=94=AF=E4=BB=98][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=80=E4=BA=9B=E5=88=86=E8=B4=A6=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=E7=9A=84=E5=85=A5=E5=BA=93=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enums/EnumProfitSharingResultStatus.java | 39 +++++++++++++++++++ .../impl/WxProfitSharingOrderServiceImpl.java | 35 +++++++++-------- 2 files changed, 58 insertions(+), 16 deletions(-) create mode 100644 mallinkService/src/main/java/com/simple/enums/EnumProfitSharingResultStatus.java diff --git a/mallinkService/src/main/java/com/simple/enums/EnumProfitSharingResultStatus.java b/mallinkService/src/main/java/com/simple/enums/EnumProfitSharingResultStatus.java new file mode 100644 index 000000000..73c1059fc --- /dev/null +++ b/mallinkService/src/main/java/com/simple/enums/EnumProfitSharingResultStatus.java @@ -0,0 +1,39 @@ +package com.simple.enums; + +/** + * Created by Stormeye on 2018/08/09. + */ +public enum EnumProfitSharingResultStatus { + PROFIT_SHARING_UNKNOWN(-1, "未知"), + PROFIT_SHARING_RESULT_PENDING(1, "待分账"), + PROFIT_SHARING_RESULT_SUCCESS(2, "分账成功"), + PROFIT_SHARING_RESULT_ADJUST(3, "分账失败待调账"), + PROFIT_SHARING_RESULT_RETURNED(4, "已转回分账方"), + PROFIT_SHARING_RESULT_CLOSED(5, "已关闭"), + ; + + public static EnumProfitSharingResultStatus getEnum(Integer code) { + for (EnumProfitSharingResultStatus value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumProfitSharingResultStatus(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/service/impl/WxProfitSharingOrderServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java index 23d5411d8..18bb72a41 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java @@ -10,10 +10,7 @@ import com.github.pagehelper.PageInfo; import com.simple.common.ErrorCode; import com.simple.common.ResultData; import com.simple.domain.po.*; -import com.simple.enums.EnumPayDomain; -import com.simple.enums.EnumProfitSharingReceiverType; -import com.simple.enums.EnumProfitSharingStatus; -import com.simple.enums.EnumProfitSharingType; +import com.simple.enums.*; import com.simple.exception.MallinkException; import com.simple.mapper.*; import com.simple.pay.WxPayment; @@ -165,11 +162,11 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ record.setOrderId(wxPayOrder.getId()); record.setPayAmount(wxPayOrder.getPayAmount()); record.setMerchantId(wxOrder.getMerchantId()); + record.setSharingStatus(EnumProfitSharingStatus.PROFIT_SHARING_UNKNOWN.getCode()); record.setCreateTime(currentDate); record.setUpdateTime(currentDate); record.setPayTimeStart(currentDate); record.setPayTimeEnd(currentDate); - wxProfitSharingOrderMapper.insertSelective(record); } @@ -214,34 +211,41 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ result.setPayAmount(total_amount); result.setCreateTime(currentDate); result.setUpdateTime(currentDate); + result.setSharingStatus(EnumProfitSharingResultStatus.PROFIT_SHARING_RESULT_PENDING.getCode()); resultList.add(result); } wxProfitSharingP.setReceivers(receivers.toJSONString()); wxProfitSharingP.setSign(WxPayment.createSignHMAC(BeanUtils.toStringMap(wxProfitSharingP), payAccount.getApiKey())); + logger.info("wxProfitSharingP :" + wxProfitSharingP.toString()); String response = WxProfitSharing.pushOrder(BeanUtils.toStringMap(wxProfitSharingP), payAccount.getCertPath(), payAccount.getMchId()); + logger.info("response: " + response); 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()); + record.setErrorMsg(returnMap.get("return_msg")); 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.verifyNotifyHMAC(returnMap,payAccount.getApiKey())){ - // throw new MallinkException(ErrorCode.PROFIT_SHARING_RETURN_INVALID.getCode(), ErrorCode.PROFIT_SHARING_RETURN_INVALID.getMessage()); - //} + if (!WxPayment.verifyNotifyHMAC(returnMap,payAccount.getApiKey())){ + record.setErrorMsg("返回值校验失败"); + 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()); + record.setErrorMsg(returnMap.get("result_msg")); 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.setSharingOrderNo(returnMap.get("order_id")); @@ -268,7 +272,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ record.setOrderId(wxPayOrder.getId()); record = wxProfitSharingOrderMapper.selectOne(record); if (record == null) - throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND.getCode(), ErrorCode.ORDER_IS_NOT_FIND.getMessage()); + return new ResultData(ErrorCode.ORDER_IS_NOT_FIND.getCode(), ErrorCode.ORDER_IS_NOT_FIND.getMessage()); //分账查询提交 WxProfitSharingQueryP wxProfitSharingQueryP = new WxProfitSharingQueryP();; @@ -285,21 +289,21 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ Map returnMap = WxPayment.xmlToMap(response); String return_code = returnMap.get("return_code"); if (!"SUCCESS".equals(return_code)) { - throw new MallinkException(ErrorCode.PROFIT_SHARING_QUERY_REQUEST_FAILED.getCode(), returnMap.get("return_msg")); + return new ResultData(ErrorCode.PROFIT_SHARING_QUERY_REQUEST_FAILED.getCode(), returnMap.get("return_msg")); } if (!WxPayment.verifyNotify(returnMap,payAccount.getApiKey())){ - throw new MallinkException(ErrorCode.PROFIT_SHARING_QUERY_RETURN_INVALID.getCode(), ErrorCode.PROFIT_SHARING_RETURN_INVALID.getMessage()); + return new ResultData(ErrorCode.PROFIT_SHARING_QUERY_RETURN_INVALID.getCode(), ErrorCode.PROFIT_SHARING_RETURN_INVALID.getMessage()); } String out_order_no = returnMap.get("out_order_no"); if (!out_order_no.equals(record.getId().toString())){ - throw new MallinkException(ErrorCode.PROFIT_SHARING_QUERY_RETURN_INVALID.getCode(), ErrorCode.PROFIT_SHARING_RETURN_INVALID.getMessage()); + return new ResultData(ErrorCode.PROFIT_SHARING_QUERY_RETURN_INVALID.getCode(), ErrorCode.PROFIT_SHARING_RETURN_INVALID.getMessage()); } String result_code = returnMap.get("result_code"); if (!"SUCCESS".equals(result_code)) { - throw new MallinkException(ErrorCode.PROFIT_SHARING_QUERY_APPLY_FAILED.getCode(), returnMap.get("result_msg")); + return new ResultData(ErrorCode.PROFIT_SHARING_QUERY_APPLY_FAILED.getCode(), returnMap.get("result_msg")); } record.setSharingStatus((Integer) statusMap.get(returnMap.get("status"))); @@ -337,7 +341,6 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ } } - return new ResultData(returnMap); }catch (Exception e) { From 7379155cb962a4a49fcbf971abc8283053782faf Mon Sep 17 00:00:00 2001 From: hupeng Date: Fri, 7 Sep 2018 11:48:19 +0800 Subject: [PATCH 38/51] =?UTF-8?q?[=E6=94=AF=E4=BB=98][=E5=88=86=E8=B4=A6]:?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=B8=80=E4=BA=9B=E9=94=99=E8=AF=AF=E5=A4=84?= =?UTF-8?q?=E7=90=86=E7=9A=84=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/WxProfitSharingOrderServiceImpl.java | 8 ++++++-- .../service/impl/WxProfitSharingReceiverServiceImpl.java | 2 ++ 2 files changed, 8 insertions(+), 2 deletions(-) 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 18bb72a41..1ebf7d071 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java @@ -24,7 +24,8 @@ import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.simple.common.IdWorker; - +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; @Service @@ -138,6 +139,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ } @Override + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) public ResultData createSharingOrder(WxPayOrder wxPayOrder) { final IdWorker idworker = IdWorker.get(); @@ -236,6 +238,8 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ if (!WxPayment.verifyNotifyHMAC(returnMap,payAccount.getApiKey())){ record.setErrorMsg("返回值校验失败"); + record.setUpdateTime(new Date()); + wxProfitSharingOrderMapper.updateByPrimaryKey(record); return new ResultData(ErrorCode.PROFIT_SHARING_RETURN_INVALID.getCode(), ErrorCode.PROFIT_SHARING_RETURN_INVALID.getMessage()); } @@ -292,7 +296,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ return new ResultData(ErrorCode.PROFIT_SHARING_QUERY_REQUEST_FAILED.getCode(), returnMap.get("return_msg")); } - if (!WxPayment.verifyNotify(returnMap,payAccount.getApiKey())){ + if (!WxPayment.verifyNotifyHMAC(returnMap,payAccount.getApiKey())){ return new ResultData(ErrorCode.PROFIT_SHARING_QUERY_RETURN_INVALID.getCode(), ErrorCode.PROFIT_SHARING_RETURN_INVALID.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 index 768e65813..51222c45c 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingReceiverServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingReceiverServiceImpl.java @@ -196,9 +196,11 @@ public class WxProfitSharingReceiverServiceImpl implements WxProfitSharingReceiv if (!"SUCCESS".equals(result_code)) { return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED.getCode(), returnMap.get("result_msg")); } + if (!WxPayment.verifyNotifyHMAC(returnMap,payAccount.getApiKey())){ return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED.getCode(), ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED.getMessage()); } + wxProfitSharingReceiverMapper.deleteByPrimaryKey(receiver); return new ResultData(returnMap); } From e5cbdce54dfe1facc5a562111ac88573c617fbfa Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Fri, 7 Sep 2018 11:48:36 +0800 Subject: [PATCH 39/51] =?UTF-8?q?[=E6=A0=B8=E9=94=80=E6=95=B4=E7=90=86][?= =?UTF-8?q?=E6=95=B4=E7=90=86]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WxCouponOrderController.java | 23 +++++- .../simple/service/WxCouponOrderService.java | 15 +++- .../impl/WxCouponOrderServiceImpl.java | 74 ++++++++++--------- 3 files changed, 74 insertions(+), 38 deletions(-) diff --git a/mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java b/mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java index 234a58173..3f855ff79 100644 --- a/mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java +++ b/mallinkBApi/src/main/java/com/simple/controller/WxCouponOrderController.java @@ -118,9 +118,9 @@ public class WxCouponOrderController extends BaseController { logger.error("couponOrderId参数不正确: " + paramMap.toString()); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); } + WxCouponOrder couponOrder = null; try { - ResultData rd = wxCouponOrderService.verify(couponOrderId, getUser().getId()); - return rd; + couponOrder = wxCouponOrderService.verify(couponOrderId, getUser().getId()); } catch (MallinkException e) { logger.error("核销异常: " + e.getMessage()); return new ResultData(e.getErrorCode(), e.getMessage()); @@ -128,6 +128,25 @@ public class WxCouponOrderController extends BaseController { logger.error("核销异常: " + e.getMessage()); return new ResultData(ErrorCode.VERIFY_ERROR, e.getMessage()); } + // 核销分账 + if (couponOrder != null) { + try { + wxCouponOrderService.shareAfterVerify(couponOrder); + } catch (Exception e) { + logger.error(e.getMessage()); + } + } + + // 核销发券 + if (couponOrder != null) { + try { + wxCouponOrderService.sendCouponAfterVerify(couponOrder, getUser()); + } catch (Exception e) { + logger.error(e.getMessage()); + } + } + + return new ResultData(couponOrder); } @ApiOperation(value = "根据couponOrderId查询接口", notes = "{\"couponOrderId\":\"string\"}") diff --git a/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java b/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java index bfc38c53b..d2805b1a9 100644 --- a/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java +++ b/mallinkService/src/main/java/com/simple/service/WxCouponOrderService.java @@ -63,9 +63,20 @@ public interface WxCouponOrderService { * @param couponOrderId * @param bUserId 核销人(登录用户) */ - ResultData verify(Long couponOrderId, Long bUserId); + WxCouponOrder verify(Long couponOrderId, Long bUserId); - ResultData couponOrderVerify(WxCouponOrder wxCouponOrder, WxMerchantBUser wxMerchantBUser, WxOrder wxOrder); + /** + * 核销发券 + * @param couponOrder + * @param bUser + */ + void sendCouponAfterVerify(WxCouponOrder couponOrder, WxMerchantBUser bUser); + + /** + * 核销分账 + * @param couponOrder + */ + void shareAfterVerify(WxCouponOrder couponOrder); /** * 根据日期 b用户查券list 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 4eaf5aeed..cc745801a 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxCouponOrderServiceImpl.java @@ -297,7 +297,26 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public ResultData couponOrderVerify(WxCouponOrder wxCouponOrder, WxMerchantBUser wxMerchantBUser, WxOrder wxOrder) { + public WxCouponOrder 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-" + wxCouponOrder.getId()); throw new MallinkException(ErrorCode.COUPON_ORDER_IS_OVER_TIME); @@ -320,44 +339,18 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); } - return new ResultData(wxCouponOrder); - } - - @Override - 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()); + return wxCouponOrder; - if (!wxOrder.getMerchantId().equals(wxMerchantBUser.getMerchantId())){ - logger.error("券: couponMerchantId-" + wxOrder.getMerchantId()+"核销: couponMerchantId-"+wxMerchantBUser.getMerchantId()); - throw new MallinkException(ErrorCode.COUPON_ORDER_IS_NULL); - } - - ResultData rd = couponOrderVerify(wxCouponOrder, wxMerchantBUser, wxOrder); - // 核销发券 - try { - wxCouponSendService.sendCouponToUser(wxMerchantBUser.getTenantId(), wxOrder.getCUserId(), EnumCouponSendType.COUPON_VERIFY.getCode()); - } catch (Exception e) { - logger.error("核销发券: " + e.getMessage()); - } + } + @Override + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + public void shareAfterVerify(WxCouponOrder couponOrder) { // 微信分账 try { WxPayOrder wxPayOrder = new WxPayOrder(); - wxPayOrder.setOrderId(wxCouponOrder.getOrderId()); + wxPayOrder.setOrderId(couponOrder.getOrderId()); wxPayOrder.setPayOrderStatus(EnumPayStatus.PAY_WAY_SUCCESS.getCode()); wxPayOrder = wxPayOrderMapper.selectOne(wxPayOrder); if (wxPayOrder == null) @@ -367,10 +360,23 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { } catch (Exception e) { logger.error("微信分账: " + e.getMessage()); } + } - return rd; + @Override + public void sendCouponAfterVerify(WxCouponOrder couponOrder, WxMerchantBUser bUser) { + // 核销发券 + WxOrder wxOrder = wxOrderMapper.selectByPrimaryKey(couponOrder.getOrderId()); + if (wxOrder != null) { + try { + wxCouponSendService.sendCouponToUser(bUser.getTenantId(), wxOrder.getCUserId(), EnumCouponSendType.COUPON_VERIFY.getCode()); + } catch (Exception e) { + logger.error("核销发券: " + e.getMessage()); + } + } } + + @Override public List queryPriceTotalGroup(String tenantId, Date startTime, Date endTime) { return wxCouponOrderMapper.queryPriceTotalGroup(tenantId, startTime, endTime); From 1555b82b59209dfb4daaa828547978e97d8e7911 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Fri, 7 Sep 2018 12:02:46 +0800 Subject: [PATCH 40/51] =?UTF-8?q?[=E5=88=86=E8=B4=A6=E6=80=BB=E9=87=91?= =?UTF-8?q?=E9=A2=9D][=E6=95=B4=E7=90=86]payOrder=E4=B8=AD=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=88=86=E8=B4=A6=E6=80=BB=E9=87=91=E9=A2=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/simple/domain/po/WxPayOrder.java | 46 +++++++++++-------- .../service/impl/WxPayOrderServiceImpl.java | 6 +++ .../resources/mapper/WxPayOrderMapper.xml | 7 ++- 3 files changed, 39 insertions(+), 20 deletions(-) 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 620d63743..d57e2941a 100644 --- a/mallinkService/src/main/java/com/simple/domain/po/WxPayOrder.java +++ b/mallinkService/src/main/java/com/simple/domain/po/WxPayOrder.java @@ -42,52 +42,55 @@ public class WxPayOrder implements Serializable { - /*租户ID**/ + /**租户ID**/ @io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId") private String tenantId; - /*创建时间**/ + /**创建时间**/ @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createTime") private Date createTime; - /*更新时间**/ + /**更新时间**/ @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateTime") private Date updateTime; - /*订单ID**/ + /**订单ID**/ @io.swagger.annotations.ApiModelProperty(value="订单ID",name="orderId") private Long orderId; - /*用户ID**/ + /**用户ID**/ @io.swagger.annotations.ApiModelProperty(value="用户ID",name="cUserId") private Long cUserId; - /*ip地址**/ + /**ip地址**/ @io.swagger.annotations.ApiModelProperty(value="ip地址",name="ip") private String ip; - /*支付金额(分)**/ + /**支付金额(分)**/ @io.swagger.annotations.ApiModelProperty(value="支付金额(分)",name="payAmount") private Integer payAmount; - /*支付发起时间**/ + /**支付发起时间**/ @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="prepayId") private String prepayId; - /*微信生成的订单号**/ + /**微信生成的订单号**/ @io.swagger.annotations.ApiModelProperty(value="微信生成的订单号",name="transactionId") private String transactionId; - /*支付渠道: 0-微信 1-支付宝 2-银联 **/ + /**支付渠道: 0-微信 1-支付宝 2-银联 **/ @io.swagger.annotations.ApiModelProperty(value="支付渠道: 0-微信 1-支付宝 2-银联 ",name="payVendor") private Integer payVendor; - /*支付订单号**/ + /**支付订单号**/ @io.swagger.annotations.ApiModelProperty(value="支付订单号",name="payOrderNo") private String payOrderNo; - /*支付状态: 0-支付中;1-支付成功;2-支付失败**/ + /**支付状态: 0-支付中;1-支付成功;2-支付失败**/ @io.swagger.annotations.ApiModelProperty(value="支付状态: 0-支付中;1-支付成功;2-支付失败",name="payOrderStatus") private Integer payOrderStatus; - /*分账状态: 0-未分账;1-分账**/ + /**分账状态: 0-未分账;1-分账**/ @io.swagger.annotations.ApiModelProperty(value="分账状态: 0-未分账;1-分账",name="payOrderStatus") private Integer share; - /*支付失败原因**/ + /**分账金额(总金额扣除手续费后的金额)**/ + @io.swagger.annotations.ApiModelProperty(value="分账金额",name="shareAmount") + private Integer shareAmount; + /**支付失败原因**/ @io.swagger.annotations.ApiModelProperty(value="支付失败原因",name="failReason") private String failReason; public String getTenantId() { @@ -184,11 +187,18 @@ public class WxPayOrder implements Serializable { public Integer getShare() { return share; } - public void setShare(Integer share) { this.share = share; } + public Integer getShareAmount() { + return shareAmount; + } + + public void setShareAmount(Integer shareAmount) { + this.shareAmount = shareAmount; + } + public String getFailReason() { return failReason; } @@ -216,6 +226,7 @@ public class WxPayOrder implements Serializable { ,PayOrderNo_ASC("`pay_order_no` ASC"),PayOrderNo_DESC("`pay_order_no` DESC") ,PayOrderStatus_ASC("`pay_order_status` ASC"),PayOrderStatus_DESC("`pay_order_status` DESC") ,Share_ASC("`share` ASC"),Share_DESC("`share` DESC") + ,ShareAmount_ASC("`share_amount` ASC"),ShareAmount_DESC("`share_amount` DESC") ,FailReason_ASC("`fail_reason` ASC"),FailReason_DESC("`fail_reason` DESC") ; private String value; @@ -251,7 +262,6 @@ public class WxPayOrder implements Serializable { } this.sortColumns = sb.toString(); - } public void setSortColumns(String sortColumns) 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 98d1156a5..32d5cf9e2 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java @@ -152,6 +152,12 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { record.setPayVendor(EnumPayWay.PAY_WAY_WEAPP.getCode()); record.setPayOrderStatus(EnumPayStatus.PAY_WAY_WAIT.getCode()); record.setShare(isShare.getCode()); + if (isShare == EnumPayShare.YES) { + // 分账金额 + Float dChargeFee = record.getPayAmount()*1.0f*payAccount.getRate()/1000; + Integer share_amount = record.getPayAmount() - Math.round(dChargeFee.floatValue()); + record.setShareAmount(share_amount); + } int sqlRow = wxPayOrderMapper.insertSelective(record); if (sqlRow != 1) { diff --git a/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml index ba43d7505..60643f0c7 100644 --- a/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml @@ -18,11 +18,12 @@ + - `id`,`tenant_id`,`create_time`,`update_time`,`order_id`,`c_user_id`,`ip`,`pay_amount`,`pay_time_start`,`pay_time_end`,`prepay_id`,`transaction_id`,`pay_vendor`,`pay_order_no`,`pay_order_status`,`share`,`fail_reason` + `id`,`tenant_id`,`create_time`,`update_time`,`order_id`,`c_user_id`,`ip`,`pay_amount`,`pay_time_start`,`pay_time_end`,`prepay_id`,`transaction_id`,`pay_vendor`,`pay_order_no`,`pay_order_status`,`share`,`share_amount`,`fail_reason` @@ -90,7 +91,9 @@ and `share` = #{share} - + + and `share_amount` = #{shareAmount} + and `fail_reason` like concat('%', #{failReason},'%') From b79d3fac2eda26fd4ed7fd43105026bba2f2ca97 Mon Sep 17 00:00:00 2001 From: hupeng Date: Fri, 7 Sep 2018 13:20:20 +0800 Subject: [PATCH 41/51] =?UTF-8?q?[=E6=94=AF=E4=BB=98][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=88=86=E5=B8=90=E9=94=99=E8=AF=AF=E5=A4=84=E7=90=86=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/WxProfitSharingOrderServiceImpl.java | 339 +++++++++--------- 1 file changed, 170 insertions(+), 169 deletions(-) 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 1ebf7d071..46d3b7268 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java @@ -143,212 +143,213 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ public ResultData createSharingOrder(WxPayOrder wxPayOrder) { final IdWorker idworker = IdWorker.get(); - try { - WxAppinfo appInfo = getAppinfo(wxPayOrder); - WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(appInfo.getPayId()); + WxAppinfo appInfo = getAppinfo(wxPayOrder); + WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(appInfo.getPayId()); - WxOrder wxOrder = wxOrderMapper.selectByPrimaryKey(wxPayOrder.getOrderId()); + WxOrder wxOrder = wxOrderMapper.selectByPrimaryKey(wxPayOrder.getOrderId()); - //是否已创建分账订单 - WxProfitSharingOrder record = new WxProfitSharingOrder(); + //是否已创建分账订单 + WxProfitSharingOrder record = new WxProfitSharingOrder(); + record.setOrderId(wxPayOrder.getId()); + record = wxProfitSharingOrderMapper.selectOne(record); + if (record == null) { + //创建分账订单 + Date currentDate = new Date(); + record = new WxProfitSharingOrder(); + record.setId(idworker.nextId()); + record.setTenantId(wxPayOrder.getTenantId()); + record.setTransactionId(wxPayOrder.getTransactionId()); record.setOrderId(wxPayOrder.getId()); - record = wxProfitSharingOrderMapper.selectOne(record); - if (record == null) { - //创建分账订单 - Date currentDate = new Date(); - record = new WxProfitSharingOrder(); - record.setId(idworker.nextId()); - record.setTenantId(wxPayOrder.getTenantId()); - record.setTransactionId(wxPayOrder.getTransactionId()); - record.setOrderId(wxPayOrder.getId()); - record.setPayAmount(wxPayOrder.getPayAmount()); - record.setMerchantId(wxOrder.getMerchantId()); - record.setSharingStatus(EnumProfitSharingStatus.PROFIT_SHARING_UNKNOWN.getCode()); - record.setCreateTime(currentDate); - record.setUpdateTime(currentDate); - record.setPayTimeStart(currentDate); - record.setPayTimeEnd(currentDate); - wxProfitSharingOrderMapper.insertSelective(record); - } + record.setPayAmount(wxPayOrder.getPayAmount()); + record.setMerchantId(wxOrder.getMerchantId()); + record.setSharingStatus(EnumProfitSharingStatus.PROFIT_SHARING_UNKNOWN.getCode()); + record.setCreateTime(currentDate); + record.setUpdateTime(currentDate); + record.setPayTimeStart(currentDate); + record.setPayTimeEnd(currentDate); + wxProfitSharingOrderMapper.insertSelective(record); + } - //分账提交 - WxProfitSharingP wxProfitSharingP = new WxProfitSharingP(); - wxProfitSharingP.setAppid(appInfo.getParentAppId()); - wxProfitSharingP.setMch_id(payAccount.getMchId()); - wxProfitSharingP.setSub_appid(appInfo.getAppId()); - wxProfitSharingP.setSub_mch_id(payAccount.getSubMchId()); - wxProfitSharingP.setNonce_str(Utility.generate32UUID()); - wxProfitSharingP.setTransaction_id(wxPayOrder.getTransactionId()); - wxProfitSharingP.setOut_order_no(record.getId().toString()); - wxProfitSharingP.setSign_type("HMAC-SHA256"); - //添加分账接受方 - WxProfitSharingReceiver wxProfitSharingReceiver = new WxProfitSharingReceiver(); - wxProfitSharingReceiver.setMerchantId(wxOrder.getMerchantId()); - wxProfitSharingReceiver.setSharingType(EnumProfitSharingType.PROFIT_SHARING_TYPE_WECHAT.getCode()); - 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()); - } - // 计算分账总金额,总金额-0.6% - Float dChargeFee = record.getPayAmount()*1.0f*payAccount.getRate()/1000; - Integer total_amount = record.getPayAmount() - Math.round(dChargeFee.floatValue()); - JSONArray receivers = new JSONArray(); - List resultList = new ArrayList(); - for (int i=0;i 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()); + } - wxProfitSharingP.setReceivers(receivers.toJSONString()); + JSONArray receivers = new JSONArray(); + List resultList = new ArrayList(); + for (int i=0;i returnMap = WxPayment.xmlToMap(response); - String return_code = returnMap.get("return_code"); - - if (!"SUCCESS".equals(return_code)) { - record.setSharingStatus(EnumProfitSharingStatus.PROFIT_SHARING_REQ_FAILED.getCode()); - record.setErrorMsg(returnMap.get("return_msg")); - record.setUpdateTime(new Date()); - wxProfitSharingOrderMapper.updateByPrimaryKey(record); - return new ResultData(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(), returnMap.get("return_msg")); - } + result.setId(idworker.nextId()); + result.setSharingOrderId(record.getId()); + result.setSharingReceiverId(receiver.getId()); + result.setPayAmount(wxPayOrder.getShareAmount()); + result.setCreateTime(currentDate); + result.setUpdateTime(currentDate); + result.setSharingStatus(EnumProfitSharingResultStatus.PROFIT_SHARING_RESULT_PENDING.getCode()); + resultList.add(result); + } - if (!WxPayment.verifyNotifyHMAC(returnMap,payAccount.getApiKey())){ - record.setErrorMsg("返回值校验失败"); - record.setUpdateTime(new Date()); - wxProfitSharingOrderMapper.updateByPrimaryKey(record); - return new ResultData(ErrorCode.PROFIT_SHARING_RETURN_INVALID.getCode(), ErrorCode.PROFIT_SHARING_RETURN_INVALID.getMessage()); - } + wxProfitSharingP.setReceivers(receivers.toJSONString()); - String result_code = returnMap.get("result_code"); - if (!"SUCCESS".equals(result_code)) { - record.setSharingStatus(EnumProfitSharingStatus.PROFIT_SHARING_APPLY_FAILED.getCode()); - record.setUpdateTime(new Date()); - record.setErrorMsg(returnMap.get("result_msg")); - wxProfitSharingOrderMapper.updateByPrimaryKey(record); - return new ResultData(ErrorCode.PROFIT_SHARING_APPLY_FAILED.getCode(), returnMap.get("result_msg")); - } + String response; + try { + wxProfitSharingP.setSign(WxPayment.createSignHMAC(BeanUtils.toStringMap(wxProfitSharingP), payAccount.getApiKey())); + logger.info("wxProfitSharingP :" + wxProfitSharingP.toString()); + response = WxProfitSharing.pushOrder(BeanUtils.toStringMap(wxProfitSharingP), "D:/cert/apiclient_cert.p12", payAccount.getMchId()); + }catch (Exception e) { + record.setSharingStatus(EnumProfitSharingStatus.PROFIT_SHARING_REQ_FAILED.getCode()); + record.setErrorMsg(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getMessage()); + record.setUpdateTime(new Date()); + wxProfitSharingOrderMapper.updateByPrimaryKey(record); + return new ResultData(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(), ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getMessage()+e.getMessage()); + } + logger.info("response: " + response); + 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()); + record.setErrorMsg(returnMap.get("return_msg")); + record.setUpdateTime(new Date()); + wxProfitSharingOrderMapper.updateByPrimaryKey(record); + return new ResultData(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getCode(), returnMap.get("return_msg")); + } - record.setSharingOrderNo(returnMap.get("order_id")); - record.setSharingStatus(EnumProfitSharingStatus.PROFIT_SHARING_ACCEPTED.getCode()); + if (!WxPayment.verifyNotifyHMAC(returnMap,payAccount.getApiKey())){ + record.setErrorMsg(ErrorCode.PROFIT_SHARING_RETURN_INVALID.getMessage()); record.setUpdateTime(new Date()); wxProfitSharingOrderMapper.updateByPrimaryKey(record); - wxProfitSharingResultMapper.insertList(resultList); - return new ResultData(returnMap); + return new ResultData(ErrorCode.PROFIT_SHARING_RETURN_INVALID.getCode(), ErrorCode.PROFIT_SHARING_RETURN_INVALID.getMessage()); + } - } catch (Exception e) { - throw new MallinkException(ErrorCode.PAY_ORDER_ERROR.getCode(), e.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()); + record.setErrorMsg(returnMap.get("result_msg")); + wxProfitSharingOrderMapper.updateByPrimaryKey(record); + return new ResultData(ErrorCode.PROFIT_SHARING_APPLY_FAILED.getCode(), returnMap.get("result_msg")); } + + record.setSharingOrderNo(returnMap.get("order_id")); + record.setSharingStatus(EnumProfitSharingStatus.PROFIT_SHARING_ACCEPTED.getCode()); + record.setUpdateTime(new Date()); + wxProfitSharingOrderMapper.updateByPrimaryKey(record); + for (WxProfitSharingResult result:resultList) + wxProfitSharingResultMapper.insertSelective(result); + return new ResultData(returnMap); + } @Override public ResultData querySharingOrder(WxPayOrder wxPayOrder) { WxProfitSharingOrder record = new WxProfitSharingOrder(); - try { - WxAppinfo appInfo = getAppinfo(wxPayOrder); - WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(appInfo.getPayId()); - - //是否已创建分账订单 - record.setOrderId(wxPayOrder.getId()); - record = wxProfitSharingOrderMapper.selectOne(record); - if (record == null) - return new ResultData(ErrorCode.ORDER_IS_NOT_FIND.getCode(), ErrorCode.ORDER_IS_NOT_FIND.getMessage()); - - //分账查询提交 - WxProfitSharingQueryP wxProfitSharingQueryP = new WxProfitSharingQueryP();; - wxProfitSharingQueryP.setMch_id(payAccount.getMchId()); - wxProfitSharingQueryP.setSub_mch_id(payAccount.getSubMchId()); - wxProfitSharingQueryP.setNonce_str(Utility.generate32UUID()); - wxProfitSharingQueryP.setTransaction_id(wxPayOrder.getTransactionId()); - wxProfitSharingQueryP.setOut_trade_no(record.getId().toString()); - wxProfitSharingQueryP.setSign_type("HMAC-SHA256"); + WxAppinfo appInfo = getAppinfo(wxPayOrder); + WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(appInfo.getPayId()); + + //是否已创建分账订单 + record.setOrderId(wxPayOrder.getId()); + record = wxProfitSharingOrderMapper.selectOne(record); + if (record == null) + return new ResultData(ErrorCode.ORDER_IS_NOT_FIND.getCode(), ErrorCode.ORDER_IS_NOT_FIND.getMessage()); + + //分账查询提交 + WxProfitSharingQueryP wxProfitSharingQueryP = new WxProfitSharingQueryP();; + wxProfitSharingQueryP.setMch_id(payAccount.getMchId()); + wxProfitSharingQueryP.setSub_mch_id(payAccount.getSubMchId()); + wxProfitSharingQueryP.setNonce_str(Utility.generate32UUID()); + wxProfitSharingQueryP.setTransaction_id(wxPayOrder.getTransactionId()); + wxProfitSharingQueryP.setOut_trade_no(record.getId().toString()); + wxProfitSharingQueryP.setSign_type("HMAC-SHA256"); + String response; + try { wxProfitSharingQueryP.setSign(WxPayment.createSignHMAC(BeanUtils.toStringMap(wxProfitSharingQueryP), payAccount.getApiKey())); - String response = WxProfitSharing.pushOrder(BeanUtils.toStringMap(wxProfitSharingQueryP), payAccount.getCertPath(), payAccount.getMchId()); - - Map returnMap = WxPayment.xmlToMap(response); - String return_code = returnMap.get("return_code"); - if (!"SUCCESS".equals(return_code)) { - return new ResultData(ErrorCode.PROFIT_SHARING_QUERY_REQUEST_FAILED.getCode(), returnMap.get("return_msg")); - } + response = WxProfitSharing.pushOrder(BeanUtils.toStringMap(wxProfitSharingQueryP), payAccount.getCertPath(), payAccount.getMchId()); + }catch (Exception e){ + return new ResultData(ErrorCode.PROFIT_SHARING_QUERY_REQUEST_FAILED.getCode(), ErrorCode.PROFIT_SHARING_QUERY_REQUEST_FAILED.getMessage()+e.getMessage()); + } + Map returnMap = WxPayment.xmlToMap(response); + String return_code = returnMap.get("return_code"); + if (!"SUCCESS".equals(return_code)) { + return new ResultData(ErrorCode.PROFIT_SHARING_QUERY_REQUEST_FAILED.getCode(), returnMap.get("return_msg")); + } - if (!WxPayment.verifyNotifyHMAC(returnMap,payAccount.getApiKey())){ - return new ResultData(ErrorCode.PROFIT_SHARING_QUERY_RETURN_INVALID.getCode(), ErrorCode.PROFIT_SHARING_RETURN_INVALID.getMessage()); - } + if (!WxPayment.verifyNotifyHMAC(returnMap,payAccount.getApiKey())){ + return new ResultData(ErrorCode.PROFIT_SHARING_QUERY_RETURN_INVALID.getCode(), ErrorCode.PROFIT_SHARING_RETURN_INVALID.getMessage()); + } - String out_order_no = returnMap.get("out_order_no"); - if (!out_order_no.equals(record.getId().toString())){ - return new ResultData(ErrorCode.PROFIT_SHARING_QUERY_RETURN_INVALID.getCode(), ErrorCode.PROFIT_SHARING_RETURN_INVALID.getMessage()); - } + String out_order_no = returnMap.get("out_order_no"); + if (!out_order_no.equals(record.getId().toString())){ + return new ResultData(ErrorCode.PROFIT_SHARING_QUERY_RETURN_INVALID.getCode(), ErrorCode.PROFIT_SHARING_RETURN_INVALID.getMessage()); + } - String result_code = returnMap.get("result_code"); - if (!"SUCCESS".equals(result_code)) { - return new ResultData(ErrorCode.PROFIT_SHARING_QUERY_APPLY_FAILED.getCode(), returnMap.get("result_msg")); - } + String result_code = returnMap.get("result_code"); + if (!"SUCCESS".equals(result_code)) { + return new ResultData(ErrorCode.PROFIT_SHARING_QUERY_APPLY_FAILED.getCode(), returnMap.get("result_msg")); + } - record.setSharingStatus((Integer) statusMap.get(returnMap.get("status"))); - record.setUpdateTime(new Date()); - wxProfitSharingOrderMapper.updateByPrimaryKey(record); + record.setSharingStatus((Integer) statusMap.get(returnMap.get("status"))); + record.setUpdateTime(new Date()); + wxProfitSharingOrderMapper.updateByPrimaryKey(record); - String receivers = returnMap.get("receivers"); - JSONArray jReceivers = JSONArray.parseArray(receivers); + String receivers = returnMap.get("receivers"); + JSONArray jReceivers = JSONArray.parseArray(receivers); - WxProfitSharingResult result = new WxProfitSharingResult(); - result.setSharingOrderId(record.getId()); - List wxProfitSharingResultList = wxProfitSharingResultMapper.findList(result); + WxProfitSharingResult result = new WxProfitSharingResult(); + result.setSharingOrderId(record.getId()); + List wxProfitSharingResultList = wxProfitSharingResultMapper.findList(result); - WxProfitSharingReceiver wxProfitSharingReceiver; - WxProfitSharingResult wxProfitSharingResult; + WxProfitSharingReceiver wxProfitSharingReceiver; + WxProfitSharingResult wxProfitSharingResult; - for(int i=0; i Date: Fri, 7 Sep 2018 13:23:49 +0800 Subject: [PATCH 42/51] =?UTF-8?q?[=E6=94=AF=E4=BB=98][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=8E=BB=E6=8E=89=E6=9C=AC=E5=9C=B0=E8=B0=83=E8=AF=95=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../simple/service/impl/WxProfitSharingOrderServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 46d3b7268..ded3cc2aa 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingOrderServiceImpl.java @@ -220,7 +220,7 @@ public class WxProfitSharingOrderServiceImpl implements WxProfitSharingOrderServ try { wxProfitSharingP.setSign(WxPayment.createSignHMAC(BeanUtils.toStringMap(wxProfitSharingP), payAccount.getApiKey())); logger.info("wxProfitSharingP :" + wxProfitSharingP.toString()); - response = WxProfitSharing.pushOrder(BeanUtils.toStringMap(wxProfitSharingP), "D:/cert/apiclient_cert.p12", payAccount.getMchId()); + response = WxProfitSharing.pushOrder(BeanUtils.toStringMap(wxProfitSharingP), payAccount.getCertPath(), payAccount.getMchId()); }catch (Exception e) { record.setSharingStatus(EnumProfitSharingStatus.PROFIT_SHARING_REQ_FAILED.getCode()); record.setErrorMsg(ErrorCode.PROFIT_SHARING_REQUEST_FAILED.getMessage()); From 77a46c1952fc08a0a240d99273add44e71c6adba Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Fri, 7 Sep 2018 14:42:53 +0800 Subject: [PATCH 43/51] =?UTF-8?q?[=E5=BE=AE=E4=BF=A1=E6=89=8B=E7=BB=AD?= =?UTF-8?q?=E8=B4=B9][=E4=BF=AE=E5=A4=8D]=E6=89=8B=E7=BB=AD=E8=B4=B9?= =?UTF-8?q?=E9=87=8D=E6=96=B0=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../simple/service/impl/WxPayOrderServiceImpl.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 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 32d5cf9e2..753c3ba7e 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java @@ -23,9 +23,11 @@ import com.simple.service.WxOrderService; import com.simple.service.WxPayOrderService; import com.simple.utils.*; import io.swagger.models.auth.In; +import jdk.nashorn.internal.ir.IdentNode; import me.chanjar.weixin.common.error.WxErrorException; import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; +import org.omg.PortableInterceptor.SYSTEM_EXCEPTION; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.simple.common.IdWorker; @@ -154,8 +156,8 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { record.setShare(isShare.getCode()); if (isShare == EnumPayShare.YES) { // 分账金额 - Float dChargeFee = record.getPayAmount()*1.0f*payAccount.getRate()/1000; - Integer share_amount = record.getPayAmount() - Math.round(dChargeFee.floatValue()); + Double dChargeFee = Math.ceil(record.getPayAmount()*1.0D*payAccount.getRate()/1000); + Integer share_amount = record.getPayAmount() - dChargeFee.intValue(); record.setShareAmount(share_amount); } @@ -914,4 +916,12 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { throw new MallinkException(ErrorCode.TEMPLATE_SEND_FAILED); } } + + public static void main(String [] args) { + Integer v = 500; + Integer rate = 6; + Double dChargeFee = Math.ceil(v*1.0D*6/1000); + Integer share_amount = v - dChargeFee.intValue(); + System.out.println("share value " + share_amount); + } } From 01fb71f8253733d78522bff98ee2b46b0e38a481 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Fri, 7 Sep 2018 14:54:46 +0800 Subject: [PATCH 44/51] =?UTF-8?q?[=E8=AF=81=E4=B9=A6=E6=A3=80=E6=9F=A5][?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D]:=E9=80=80=E6=AC=BE=E8=AF=81=E4=B9=A6?= =?UTF-8?q?=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../simple/service/impl/WxRefundOrderServiceImpl.java | 6 +++++- .../src/main/java/com/simple/utils/Utility.java | 10 ++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) 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 6e1f63533..46f0ce1c0 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java @@ -391,6 +391,10 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { logger.error("证书路径为空"); throw new MallinkException(ErrorCode.CERT_PATH_NOT_FOUND.getCode(), "证书路径为空,请联系商城管理员"); } + if (Utility.isFileExist(payAccount.getCertPath())) { + logger.error("证书文件不存在"); + throw new MallinkException(ErrorCode.CERT_PATH_NOT_FOUND.getCode(), "证书文件不存在,请联系商城管理员"); + } // check 是否有退款订单 List refundList = wxRefundOrderMapper.findList(record); if (refundList.size() > 0) { @@ -831,7 +835,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { return XmlUtil.getRequestXml(resultMap); } } catch (RuntimeException e) { - logger.warn("notify order, alipay checksign error, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString() + ", e:" + e.getMessage()); + logger.warn("notify order, wepay checksign error, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString() + ", e:" + e.getMessage()); throw new MallinkException(ErrorCode.REFUND_ORDER_ERROR); } } diff --git a/mallinkService/src/main/java/com/simple/utils/Utility.java b/mallinkService/src/main/java/com/simple/utils/Utility.java index 26e39c725..6860092f7 100644 --- a/mallinkService/src/main/java/com/simple/utils/Utility.java +++ b/mallinkService/src/main/java/com/simple/utils/Utility.java @@ -4,6 +4,7 @@ package com.simple.utils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.File; import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import java.net.URLDecoder; @@ -562,4 +563,13 @@ public final class Utility { String ret = formatter.format(new Date(t)); return ret; } + + + public static boolean isFileExist(String filePath) { + File path=new File(filePath); + if(path.exists()){ + return true; + } + return false; + } } From 02186c41d8d1afb6a83f0180159e218eaa6be112 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Fri, 7 Sep 2018 15:00:29 +0800 Subject: [PATCH 45/51] =?UTF-8?q?[=E6=94=AF=E4=BB=98=E5=9B=9E=E8=B0=83][?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D]:=E6=94=AF=E4=BB=98=E5=9B=9E=E8=B0=83log?= =?UTF-8?q?=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../simple/controller/WxPayController.java | 38 ++++++++++--------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxPayController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxPayController.java index 67fb91914..6c7bcc575 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxPayController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxPayController.java @@ -67,13 +67,13 @@ public class WxPayController extends BaseController { paramMap = WxPayment.xmlToMap(resultxml); logger.info("微信支付回调, notify, param: " + paramMap.toString() ); String response = wxPayOrderService.notify(paramMap, EnumPayWay.PAY_WAY_WEAPP); - logger.info("微信支付回调, notify success, req : " + paramMap.toString() + ", resp: " + response.toString()); + logger.info("微信支付回调, notify success, req : " + resultxml + ", resp: " + response.toString()); return response; } catch (BizMessageException e) { if (paramMap == null) { logger.error("微信支付回调, order create error, e: " + e.getMessage()); } else { - logger.error("微信支付回调, order create error, req: " + paramMap.toString() + ", e: " + e.getMessage()); + logger.error("微信支付回调, order create error, req: " + resultxml + ", e: " + e.getMessage()); } SortedMap resultMap = new TreeMap<>(); resultMap.put("return_code", "FAIL"); @@ -83,7 +83,7 @@ public class WxPayController extends BaseController { if (paramMap == null) { logger.error("微信支付回调, order create error, e: " + e.getMessage()); } else { - logger.error("微信支付回调, order create error, req: " + paramMap.toString() + ", e: " + e.getMessage()); + logger.error("微信支付回调, order create error, req: " + resultxml + ", e: " + e.getMessage()); } SortedMap resultMap = new TreeMap<>(); resultMap.put("return_code", "FAIL"); @@ -93,7 +93,7 @@ public class WxPayController extends BaseController { if (paramMap == null) { logger.error("微信支付回调, order create error, e: " + e.getMessage()); } else { - logger.error("微信支付回调, order create error, req: " + paramMap.toString() + ", e: " + e.getMessage()); + logger.error("微信支付回调, order create error, req: " + resultxml + ", e: " + e.getMessage()); } SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "FAIL"); @@ -111,28 +111,29 @@ public class WxPayController extends BaseController { @RequestMapping(value = "/refund") public String __refundNotify(HttpServletRequest request) throws Exception { Map paramMap = null; - String response; + String response = ""; + String xml = ""; try { - String xml = IOUtils.toString(request.getInputStream(), Charset.forName("UTF-8")); + xml = IOUtils.toString(request.getInputStream(), Charset.forName("UTF-8")); + logger.info(xml); paramMap = WxPayment.xmlToMap(xml); - logger.info("refund wxpay, notify, param: " + paramMap.toString() ); response = wxRefundOrderService.notify(paramMap, EnumPayWay.PAY_WAY_WEAPP); - logger.info("refund wxpay, notify success, req : " + paramMap.toString() + ", resp: " + response.toString()); + logger.info("refund wxpay, notify success, req : " + xml + ", resp: " + response.toString()); return response; } catch (BizMessageException e) { - logger.error("refund wxpay, notify error, req: " + paramMap.toString() + ", e:" + e.getLocalizedMessage()); + logger.error("refund wxpay, notify error, req: " + xml + ", e:" + e.getLocalizedMessage()); SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", e.getMessage()); return XmlUtil.getRequestXml(resultMap); } catch (MallinkException e) { - logger.error("refund wxpay, notify error, req: " + paramMap.toString() + ", e:" +e.getLocalizedMessage()); + logger.error("refund wxpay, notify error, req: " + xml + ", e:" +e.getLocalizedMessage()); SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", e.getMessage()); return XmlUtil.getRequestXml(resultMap); } catch (Exception e) { - logger.error("refund wxpay, order create error, req: " + paramMap.toString() + ", e: " + e.getMessage()); + logger.error("refund wxpay, order create error, req: " + xml + ", e: " + e.getMessage()); SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", e.getMessage()); @@ -148,28 +149,29 @@ public class WxPayController extends BaseController { @RequestMapping(value = "/sharing") public String __shareNotify(HttpServletRequest request) throws Exception { Map paramMap = null; - String response; + String response = ""; + String xml = ""; try { - String xml = IOUtils.toString(request.getInputStream(), Charset.forName("UTF-8")); + xml = IOUtils.toString(request.getInputStream(), Charset.forName("UTF-8")); paramMap = WxPayment.xmlToMap(xml); - logger.info("share wxpay, notify, param: " + paramMap.toString() ); + logger.info("share wxpay, notify, param: " + xml ); response = wxPayOrderService.notify(paramMap, EnumPayWay.PAY_WAY_WEAPP); - logger.info("share wxpay, notify success, req : " + paramMap.toString() + ", resp: " + response.toString()); + logger.info("share wxpay, notify success, req : " + xml + ", resp: " + response.toString()); return response; } catch (BizMessageException e) { - logger.error("share wxpay, notify error, req: " + paramMap.toString() + ", e:" + e.getLocalizedMessage()); + logger.error("share wxpay, notify error, req: " + xml + ", e:" + e.getLocalizedMessage()); SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", e.getMessage()); return XmlUtil.getRequestXml(resultMap); } catch (MallinkException e) { - logger.error("refund wxpay, notify error, req: " + paramMap.toString() + ", e:" +e.getLocalizedMessage()); + logger.error("refund wxpay, notify error, req: " + xml + ", e:" +e.getLocalizedMessage()); SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", e.getMessage()); return XmlUtil.getRequestXml(resultMap); } catch (Exception e) { - logger.error("refund wxpay, order create error, req: " + paramMap.toString() + ", e: " + e.getMessage()); + logger.error("refund wxpay, order create error, req: " + xml + ", e: " + e.getMessage()); SortedMap resultMap = new TreeMap(); resultMap.put("return_code", "FAIL"); resultMap.put("return_msg", e.getMessage()); From dad9f7d2d5e94346a7f22ce32b34532b42d2bcc5 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Fri, 7 Sep 2018 15:01:04 +0800 Subject: [PATCH 46/51] =?UTF-8?q?[AWSsdk=E6=B7=BB=E5=8A=A0][=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D]:=E6=B7=BB=E5=8A=A0aws=20sdk?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 15864e45c..5ea5eeb82 100644 --- a/pom.xml +++ b/pom.xml @@ -228,7 +228,13 @@ ${weixin-java-miniapp.version} - + + com.amazonaws + aws-java-sdk-bom + 1.11.404 + pom + import + From f56902b97bd6ecfaf18e45618d80759142ccd755 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Fri, 7 Sep 2018 15:04:38 +0800 Subject: [PATCH 47/51] =?UTF-8?q?[AWSsdk=E6=B7=BB=E5=8A=A0][=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D]:=E6=B7=BB=E5=8A=A0aws=20sdk?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pom.xml b/pom.xml index 5ea5eeb82..5306749b5 100644 --- a/pom.xml +++ b/pom.xml @@ -28,6 +28,18 @@ 3.1.0 + + + + com.amazonaws + aws-java-sdk-bom + 1.11.404 + pom + import + + + + org.springframework.boot From ea4413048e826f912c9a1f82d3144e3accaf8046 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Fri, 7 Sep 2018 15:05:18 +0800 Subject: [PATCH 48/51] =?UTF-8?q?[AWSsdk=E6=B7=BB=E5=8A=A0][=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D]:=E6=B7=BB=E5=8A=A0aws=20sdk?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/pom.xml b/pom.xml index 5306749b5..519bede6a 100644 --- a/pom.xml +++ b/pom.xml @@ -240,15 +240,6 @@ ${weixin-java-miniapp.version} - - com.amazonaws - aws-java-sdk-bom - 1.11.404 - pom - import - - - From 91fd7c4b53f981b2a66dee29a4050ade04848155 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Fri, 7 Sep 2018 15:48:04 +0800 Subject: [PATCH 49/51] =?UTF-8?q?[=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF][?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/WxCUserBasicInfoMapper.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml b/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml index ba1b218cb..34eada33a 100644 --- a/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml @@ -31,6 +31,10 @@ and `id` = #{id} + + and c.`tenant_id` like concat('%', #{tenantId},'%') + + and `phone` like concat('%', #{phone},'%') @@ -75,10 +79,6 @@ and c.`update_date` = #{updateDate} - - and c.`tenant_id` like concat('%', #{tenantId},'%') - - and c.`name` like concat('%', #{name},'%') From 5e66447f7bf185c4321eaa38cd39fbab8d891575 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Fri, 7 Sep 2018 15:48:47 +0800 Subject: [PATCH 50/51] =?UTF-8?q?[=E9=80=80=E6=AC=BE=E8=AF=81=E4=B9=A6?= =?UTF-8?q?=E6=A3=80=E6=9F=A5][=E4=BF=AE=E5=A4=8D]:=E8=AF=81=E4=B9=A6?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/simple/service/impl/WxRefundOrderServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 46f0ce1c0..eb9fce350 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java @@ -391,7 +391,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { logger.error("证书路径为空"); throw new MallinkException(ErrorCode.CERT_PATH_NOT_FOUND.getCode(), "证书路径为空,请联系商城管理员"); } - if (Utility.isFileExist(payAccount.getCertPath())) { + if (!Utility.isFileExist(payAccount.getCertPath())) { logger.error("证书文件不存在"); throw new MallinkException(ErrorCode.CERT_PATH_NOT_FOUND.getCode(), "证书文件不存在,请联系商城管理员"); } From a4b9544ca5f0ed789bc49f5e2d0a6b5a5823df71 Mon Sep 17 00:00:00 2001 From: "Stormeye.Wu" Date: Fri, 7 Sep 2018 15:59:28 +0800 Subject: [PATCH 51/51] =?UTF-8?q?[=E9=80=80=E6=AC=BE=E5=9B=9E=E8=B0=83?= =?UTF-8?q?=E9=AA=8C=E7=AD=BE][=E4=BF=AE=E5=A4=8D]:=E9=80=80=E6=AC=BE?= =?UTF-8?q?=E5=9B=9E=E8=B0=83=E9=AA=8C=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/simple/service/impl/WxRefundOrderServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 eb9fce350..76f559ff2 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxRefundOrderServiceImpl.java @@ -768,7 +768,7 @@ public class WxRefundOrderServiceImpl implements WxRefundOrderService { if (payWay == EnumPayWay.PAY_WAY_WEAPP) { boolean signVerified = false; // 微信支付 - signVerified = WxPayment.verifyNotify(paramMap, partnerKey); + signVerified = WxPayment.verifyNotifyHMAC(paramMap, partnerKey); if (!signVerified) { logger.warn("notify order, wxpay checksign error, paramMap: "+paramMap.toString()+ ", payWay:" + payWay.toString()); throw new MallinkException(ErrorCode.PAY_ORDER_NOTIFY_CHECK_SIGN_ERROR);