From 7bd1047470a0600e7697cca4c10023560d98c5e6 Mon Sep 17 00:00:00 2001 From: hupeng Date: Tue, 9 Apr 2019 13:55:12 +0800 Subject: [PATCH 1/9] =?UTF-8?q?[=E4=B8=9A=E6=80=81][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E4=B8=8D=E9=9C=80=E8=A6=81=E7=9A=84=E4=B8=9A?= =?UTF-8?q?=E6=80=81=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iformall/controller/WxBusinessController.java | 14 +------------- .../iformall/controller/WxBusinessController.java | 9 --------- .../iformall/service/impl/WxCouponServiceImpl.java | 1 + 3 files changed, 2 insertions(+), 22 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxBusinessController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxBusinessController.java index bb60f20ad..23ba282fb 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxBusinessController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxBusinessController.java @@ -39,19 +39,7 @@ public class WxBusinessController extends BaseController { final PageInfo page = wxBusinessService.listAsPage(wxBusiness, pageNum, pageSize); return new ResultData(page); } - - @ApiOperation("成长值业态列表接口") - @GetMapping("busListForScore") - @SystemControllerLog(description = "成长值-业态-列表") - public ResultData getList() { - logger.debug("[" + getIpAddr() + "] WxBusinessController::getList"); - WxBusiness wxBusiness = new WxBusiness(); - final List busList = wxBusinessService.getList(wxBusiness); - // 业态 全部 不返回 - List busList2 = busList.stream().filter(b -> !b.getId().equals(0L)).collect(Collectors.toList()); - return new ResultData(busList2); - } - + @ApiOperation("业态全列表接口") @GetMapping("allist") @SystemControllerLog(description = "业态-全列表") diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxBusinessController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxBusinessController.java index 5845683ed..8f4b2fef3 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxBusinessController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxBusinessController.java @@ -40,15 +40,6 @@ public class WxBusinessController extends BaseController { return new ResultData(page); } - @ApiOperation("成长值业态列表接口") - @GetMapping("busListForScore") - public ResultData getList(@ModelAttribute WxBusiness wxBusiness) { - if (null == wxBusiness) wxBusiness = new WxBusiness(); - final List busList = wxBusinessService.getList(wxBusiness); - // 业态 全部 不返回 - List busList2 = busList.stream().filter(b -> !b.getId().equals(0L)).collect(Collectors.toList()); - return new ResultData(busList2); - } @ApiOperation("业态全列表接口") @GetMapping("allist") diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java index 5b36ad415..059520007 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java @@ -314,6 +314,7 @@ public class WxCouponServiceImpl implements WxCouponService { //下架所有投放频道 wxCouponChannelService .updateStatusByCouponId(record.getId(), record.getTenantId(), EnumCouponChannelStatus.STATUS_TAKE_OFFF.getCode()); + //下架所有场景投放 wxCouponSendService .updateStatusByCouponId(record.getId(), record.getTenantId(), EnumCouponSendStatus.INVALID.getCode()); //下架所有已砍价券 From 9e7cd72a8b7999f27b1bfaaef0d3cd13a965e91c Mon Sep 17 00:00:00 2001 From: hanxueda Date: Tue, 9 Apr 2019 14:07:38 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E4=BC=9A=E5=91=98=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=A7=AF=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/iformall/controller/AsyncTask.java | 2 +- .../com/iformall/domain/po/WxScoreRules.java | 4 +-- .../iformall/domain/vo/CUserBaseInfoT.java | 22 +++++++++++---- .../impl/WxCUserBasicInfoServiceImpl.java | 28 ++++++++++++++++++- 4 files changed, 47 insertions(+), 9 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/AsyncTask.java b/mallinkAdmin/src/main/java/com/iformall/controller/AsyncTask.java index 68a40be25..77dae8449 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/AsyncTask.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/AsyncTask.java @@ -66,7 +66,7 @@ public class AsyncTask { public void importExcelData(File file, MallUserInfo user, String importKey, String tenantId) { ImportParams params = new ImportParams(); // 需要验证 - params.setImportFields(new String[]{"姓名", "性别", "手机号", "微信昵称", "学历", "生日", "地址", "上次活跃时间", "注册时间", "标签", "成长值"}); + params.setImportFields(new String[]{"姓名", "性别", "手机号", "微信昵称", "学历", "生日","积分", "地址", "上次活跃时间", "注册时间", "标签", "成长值"}); IExcelDataHandler handler = new AsyncTask.UserExcelHandler(); handler.setNeedHandlerFields(new String[] { "手机号" }); params.setNeedVerify(true); diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxScoreRules.java b/mallinkService/src/main/java/com/iformall/domain/po/WxScoreRules.java index ff91974f6..3cad5f49b 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxScoreRules.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxScoreRules.java @@ -37,11 +37,11 @@ public class WxScoreRules implements Serializable { " {\"businessId\":3,\"limit\":0,\"step\":1,\"score\":50 ,\"desc\":\"线上交易1元\"}," + " {\"businessId\":4,\"limit\":0,\"step\":1,\"score\":50 ,\"desc\":\"线上交易1元\"}," + " {\"businessId\":5,\"limit\":0,\"step\":1,\"score\":50 ,\"desc\":\"线上交易1元\"}," + - " {\"businessId\":6,\"limit\":0,\"step\":1,\"score\":50 ,\"desc\":\"线上交易1元\"}," + " {\"businessId\":7,\"limit\":0,\"step\":1,\"score\":50 ,\"desc\":\"线上交易1元\"}," + " {\"businessId\":8,\"limit\":0,\"step\":1,\"score\":50 ,\"desc\":\"线上交易1元\"}," + " {\"businessId\":9,\"limit\":0,\"step\":1,\"score\":50 ,\"desc\":\"线上交易1元\"}," + - " {\"businessId\":10,\"limit\":0,\"step\":1,\"score\":50 ,\"desc\":\"线上交易1元\"}" + + " {\"businessId\":10,\"limit\":0,\"step\":1,\"score\":50 ,\"desc\":\"线上交易1元\"}," + + " {\"businessId\":6,\"limit\":0,\"step\":1,\"score\":50 ,\"desc\":\"线上交易1元\"}" + "]}," + "{\"id\":3,\"limit\":1,\"step\":1,\"score\":100,\"desc\":\"绑定车牌1个\"}," + "{\"id\":4,\"limit\":0,\"step\":1,\"score\":10 ,\"desc\":\"连接WIFI1次\"}," + diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/CUserBaseInfoT.java b/mallinkService/src/main/java/com/iformall/domain/vo/CUserBaseInfoT.java index f5e4a6afc..17257a9fb 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/CUserBaseInfoT.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/CUserBaseInfoT.java @@ -34,27 +34,31 @@ public class CUserBaseInfoT implements Serializable { @Excel(name="生日",width = 20,orderNum = "6") @io.swagger.annotations.ApiModelProperty(value="出生日期",name="birthdate") private String birthdate; + /**积分**/ + @Excel(name="积分",width = 20,orderNum = "7") + @io.swagger.annotations.ApiModelProperty(value="积分",name="credit") + private String credit; /**地址**/ - @Excel(name="地址",width = 20,orderNum = "7") + @Excel(name="地址",width = 20,orderNum = "8") @io.swagger.annotations.ApiModelProperty(value="地址",name="address") private String address; /**更新时间**/ - @Excel(name="上次活跃时间",width = 20, orderNum = "8") + @Excel(name="上次活跃时间",width = 20, orderNum = "9") @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") private String updateDate; /**创建时间**/ - @Excel(name="注册时间",width = 20, orderNum = "9") + @Excel(name="注册时间",width = 20, orderNum = "10") @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate") private String createDate; @Transient - @Excel(name="标签",width = 20,orderNum = "10") + @Excel(name="标签",width = 20,orderNum = "11") private String tagNames; @Transient - @Excel(name="成长值",width = 20,orderNum = "11") + @Excel(name="成长值",width = 20,orderNum = "12") private String poins; public String getName() { @@ -144,4 +148,12 @@ public class CUserBaseInfoT implements Serializable { public void setPoins(String poins) { this.poins = poins; } + + public String getCredit() { + return credit; + } + + public void setCredit(String credit) { + this.credit = credit; + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java index f4799ad98..b3cbcd789 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java @@ -300,6 +300,7 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { u1.setPhone("13900010001"); u1.setNickName("昵称"); u1.setEducation("本科"); + u1.setCredit(10); u1.setAddress("地址"); try { u1.setBirthdate(sdf.parse("2018-09-10")); @@ -310,7 +311,6 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { u1.setCreateDate(new Date()); u1.setUpdateDate(new Date()); } - u1.setTagNames("附近住户"); u1.setPoins(100); @@ -319,6 +319,7 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { u2.setPhone("13900010002"); u2.setNickName("昵称"); u2.setEducation("本科"); + u2.setCredit(20); u2.setAddress("地址"); try { @@ -339,6 +340,7 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { u3.setPhone("13900010003"); u3.setNickName("昵称"); u3.setEducation("本科"); + u3.setCredit(30); u3.setAddress("地址"); try { @@ -566,6 +568,17 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { } } + //积分 + Integer credit = null; + if (StringUtils.isNotBlank(uBase.getCredit())) { + try { + credit = Integer.valueOf(uBase.getCredit()); + userBase.setCredit(credit); + } catch (Exception e) { + logger.error(e.getMessage()); + } + } + WxCUserBasicInfo oldUserBase = null; WxCUserBasicInfo userBaseQ = new WxCUserBasicInfo(); userBaseQ.setTenantId(tenantId); @@ -590,10 +603,18 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { if(points != null) { oldUserBase.setPoins(points); } + // 覆盖原积分 + if(credit != null) { + oldUserBase.setCredit(credit); + } } else { userBase.setId(idWorker.nextId()); userBase.setUpdateDate(userBase.getUpdateDate() == null ? new Date() : userBase.getUpdateDate()); userBase.setCreateDate(userBase.getCreateDate() == null ? new Date() : userBase.getCreateDate()); + //新增积分 + if(credit != null) { + userBase.setCredit(credit); + } } // update 昵称 @@ -606,6 +627,11 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { if (userList.size() > 0) { WxCUser user = userList.get(0); if (user != null) { + //覆盖积分 + if(credit != null) { + user.setCredit(credit); + wxCUserMapper.updateByPrimaryKey(user); + } bHaveCUser = true; if (oldUserBase != null) { if(oldUserBase != null) { From 2144080ed1a3923f6643cceef01e296c144f2850 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Tue, 9 Apr 2019 14:22:45 +0800 Subject: [PATCH 3/9] =?UTF-8?q?[=E5=95=86=E6=88=B7][=E4=BF=AE=E6=94=B9][?= =?UTF-8?q?=E5=90=88=E5=90=8C=E8=A1=A5=E5=BD=95=E6=9F=A5=E8=AF=A2=E9=97=AE?= =?UTF-8?q?=E9=A2=98]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/iformall/domain/po/WxMerchant.java | 11 +++++++++++ .../service/impl/WxMerchantServiceImpl.java | 16 ++++++++++++++++ .../main/resources/mapper/WxMerchantMapper.xml | 6 ++++++ 3 files changed, 33 insertions(+) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxMerchant.java b/mallinkService/src/main/java/com/iformall/domain/po/WxMerchant.java index e3d318cb7..805bf740b 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxMerchant.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxMerchant.java @@ -97,6 +97,9 @@ public class WxMerchant implements Serializable { @Transient private List levelConfigList; + @Transient + private Integer rentShopType; + /*租户ID**/ @io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId") private String tenantId; @@ -399,6 +402,14 @@ public class WxMerchant implements Serializable { this.isPublic = isPublic; } + public Integer getRentShopType() { + return rentShopType; + } + + public void setRentShopType(Integer rentShopType) { + this.rentShopType = rentShopType; + } + public static enum Field { Id_ASC("`id` ASC"),Id_DESC("`id` DESC") diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java index 5ff020ac0..ef450c453 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java @@ -98,6 +98,22 @@ public class WxMerchantServiceImpl implements WxMerchantService { merchant.setRentalStartDate(collect.get(0).getRentalStartDate()); merchant.setRentalEndDate(collect.get(0).getRentalEndDate()); } + if (record.getRentShopType() != null) { + WxMerchantShop wxMerchantShop = new WxMerchantShop(); + wxMerchantShop.setMerchantId(merchant.getId()); + wxMerchantShop.setIsDel(EnumDelStatus.NOT_DEL.getCode()); + List> shops = new ArrayList<>(); + List wxMerchantShopList = wxMerchantShopMapper.findList(wxMerchantShop); + for (WxMerchantShop merchantShop : wxMerchantShopList) { + WxShop shop = new WxShop(); + record.setId(merchantShop.getShopId()); + List> shoplist = wxShopMapper.findListMap(shop); + if (shoplist.size() > 0) { + shops.add(shoplist.get(0)); + } + } + merchant.setShoplist(shops); + } } PageInfo pageInfo = new PageInfo<>(merchants); diff --git a/mallinkService/src/main/resources/mapper/WxMerchantMapper.xml b/mallinkService/src/main/resources/mapper/WxMerchantMapper.xml index f149ad453..99170d966 100644 --- a/mallinkService/src/main/resources/mapper/WxMerchantMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxMerchantMapper.xml @@ -84,6 +84,12 @@ and `email` = #{email} + + and id in( + select merchant_id from wx_rent_contract where tenant_id=#{tenantId} and rent_shop_type=1 and merchant_id is + not null and status not in(1,2,3,4) + ) + and id in From 1a5462ce6753f89f8639c405362964f477756710 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Tue, 9 Apr 2019 14:23:32 +0800 Subject: [PATCH 4/9] =?UTF-8?q?[=E7=A7=9F=E8=B5=81=E5=90=88=E5=90=8C][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][=E6=9B=B4=E6=96=B0=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=88=A4=E6=96=AD]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/iformall/service/impl/WxRentContractServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java index 7282b8534..ffcc51535 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java @@ -298,7 +298,8 @@ public class WxRentContractServiceImpl implements WxRentContractService { ResultData resultData = getResultDataForUpdate(record, userId); if (dbRent.getRentShopType().equals(EnumRentShopType.SHOP.getCode())) { - if (record.getReceivePeriod() != null && record.getLease() != null && record.getPrice() != null) { + if (record.getReceivePeriod() != null && record.getLease() != null && record.getPrice() != null + && !record.getReceivePeriod().equals(0) && !record.getLease().equals(0) && !record.getPrice().equals(0)) { //删除预账单,重新生成 wxBillRentMapper.deletePreviewBill(record); From 4033bf7704830af9155b66502e5fb78e783cc426 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Tue, 9 Apr 2019 14:47:19 +0800 Subject: [PATCH 5/9] =?UTF-8?q?[=E5=95=86=E6=88=B7][=E4=BF=AE=E6=94=B9][?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E8=AF=AD=E5=8F=A5]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mallinkService/src/main/resources/mapper/WxMerchantMapper.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mallinkService/src/main/resources/mapper/WxMerchantMapper.xml b/mallinkService/src/main/resources/mapper/WxMerchantMapper.xml index 99170d966..84c75c35a 100644 --- a/mallinkService/src/main/resources/mapper/WxMerchantMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxMerchantMapper.xml @@ -85,9 +85,9 @@ and `email` = #{email} - and id in( + and id not in( select merchant_id from wx_rent_contract where tenant_id=#{tenantId} and rent_shop_type=1 and merchant_id is - not null and status not in(1,2,3,4) + not null and status in(1,2,3,4) ) From f54c314e93384ea3dc0d2045a03f57dd90f2d8f2 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Tue, 9 Apr 2019 15:14:58 +0800 Subject: [PATCH 6/9] =?UTF-8?q?[=E5=95=86=E6=88=B7][=E4=BF=AE=E6=94=B9][?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E9=80=BB=E8=BE=91]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/iformall/service/impl/WxMerchantServiceImpl.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java index ef450c453..2c86cfa83 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java @@ -81,12 +81,9 @@ public class WxMerchantServiceImpl implements WxMerchantService { @Override public PageInfo listAsPage(WxMerchant record, Integer pageIndex, Integer pageSize) { - - WxRentContract wxRentContract = new WxRentContract(); wxRentContract.setTenantId(record.getTenantId()); List list = wxRentContractMapper.findList(wxRentContract); - PageHelper.startPage(pageIndex, pageSize); List merchants = wxMerchantMapper.findList(record); for (WxMerchant merchant : merchants) { @@ -99,14 +96,14 @@ public class WxMerchantServiceImpl implements WxMerchantService { merchant.setRentalEndDate(collect.get(0).getRentalEndDate()); } if (record.getRentShopType() != null) { + List> shops = new ArrayList<>(); WxMerchantShop wxMerchantShop = new WxMerchantShop(); wxMerchantShop.setMerchantId(merchant.getId()); wxMerchantShop.setIsDel(EnumDelStatus.NOT_DEL.getCode()); - List> shops = new ArrayList<>(); List wxMerchantShopList = wxMerchantShopMapper.findList(wxMerchantShop); for (WxMerchantShop merchantShop : wxMerchantShopList) { WxShop shop = new WxShop(); - record.setId(merchantShop.getShopId()); + shop.setId(merchantShop.getShopId()); List> shoplist = wxShopMapper.findListMap(shop); if (shoplist.size() > 0) { shops.add(shoplist.get(0)); @@ -115,7 +112,6 @@ public class WxMerchantServiceImpl implements WxMerchantService { merchant.setShoplist(shops); } } - PageInfo pageInfo = new PageInfo<>(merchants); return pageInfo; } From cacc3a5f7069eb08a55a214a653152605aa1749e Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Tue, 9 Apr 2019 15:11:15 +0800 Subject: [PATCH 7/9] =?UTF-8?q?[=E5=85=AC=E4=BC=97=E5=8F=B7=E6=B6=88?= =?UTF-8?q?=E6=81=AF][=E6=96=B0=E5=A2=9E]:=E6=96=B0=E5=A2=9E=E5=85=AC?= =?UTF-8?q?=E4=BC=97=E5=8F=B7=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/iformall/mq/MqBaseConsumer.java | 18 +- .../java/com/iformall/domain/po/BaseMsg.java | 84 +------ .../java/com/iformall/domain/po/MailMsg.java | 87 +------ .../java/com/iformall/domain/po/MpAppMsg.java | 35 +++ .../com/iformall/domain/po/SmartAppMsg.java | 73 ++---- .../java/com/iformall/domain/po/WxMsg.java | 218 ++---------------- .../com/iformall/domain/po/WxMsgRecord.java | 188 ++------------- .../com/iformall/enums/EnumMsgRecordType.java | 1 + .../com/iformall/enums/EnumTemplateType.java | 7 +- .../service/impl/SendMpMsgServiceImpl.java | 65 ++++++ .../impl/SendSmartAppMsgServiceImpl.java | 2 +- 11 files changed, 195 insertions(+), 583 deletions(-) create mode 100644 mallinkService/src/main/java/com/iformall/domain/po/MpAppMsg.java create mode 100644 mallinkService/src/main/java/com/iformall/service/impl/SendMpMsgServiceImpl.java diff --git a/mallinkMQConsumer/src/main/java/com/iformall/mq/MqBaseConsumer.java b/mallinkMQConsumer/src/main/java/com/iformall/mq/MqBaseConsumer.java index 3a6755cbd..697888ba5 100644 --- a/mallinkMQConsumer/src/main/java/com/iformall/mq/MqBaseConsumer.java +++ b/mallinkMQConsumer/src/main/java/com/iformall/mq/MqBaseConsumer.java @@ -3,10 +3,7 @@ package com.iformall.mq; import com.iformall.domain.po.*; import com.iformall.enums.*; import com.iformall.mapper.WxMsgRecordMapper; -import com.iformall.service.impl.SendCallBackSmsServiceImpl; -import com.iformall.service.impl.SendEmailServiceImpl; -import com.iformall.service.impl.SendSmartAppMsgServiceImpl; -import com.iformall.service.impl.SendSmsServiceImpl; +import com.iformall.service.impl.*; import com.iformall.utils.JsonUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -29,6 +26,8 @@ public class MqBaseConsumer { private SendEmailServiceImpl sendEmailService; @Autowired private SendSmartAppMsgServiceImpl sendSmartAppMsgService; + @Autowired + private SendMpMsgServiceImpl sendMpMsgService; // @Autowired // private MqBaseProducer mqBaseProducer; @@ -42,15 +41,18 @@ public class MqBaseConsumer { if(EnumMsgRecordType.SMS.getCode().equals(baseMsg.getMsgType())){ //短信 sendSmsService.send((WxMsgRecord)JsonUtil.readValue(message,WxMsgRecord.class)); - }else if(EnumMsgRecordType.SMS_CALLBACK.getCode().equals(baseMsg.getMsgType())){ + } else if(EnumMsgRecordType.SMS_CALLBACK.getCode().equals(baseMsg.getMsgType())){ //业务短信 sendCallBackSmsService.send((WxMsg)JsonUtil.readValue(message,WxMsg.class)); - }else if(EnumMsgRecordType.EMAIL.getCode().equals(baseMsg.getMsgType())){ + } else if(EnumMsgRecordType.EMAIL.getCode().equals(baseMsg.getMsgType())){ //邮件 sendEmailService.send((MailMsg)JsonUtil.readValue(message,MailMsg.class)); - }else if(EnumMsgRecordType.SMART_APP.getCode().equals(baseMsg.getMsgType())){ - //微信小程序 + } else if(EnumMsgRecordType.SMART_APP.getCode().equals(baseMsg.getMsgType())){ + //微信小程序-模板消息 sendSmartAppMsgService.send((SmartAppMsg)JsonUtil.readValue(message,SmartAppMsg.class)); + } else if(EnumMsgRecordType.PUBLIC.getCode().equals(baseMsg.getMsgType())) { + //公众号-模板消息 + sendMpMsgService.send((MpAppMsg)JsonUtil.readValue(message,MpAppMsg.class)); } baseMsg.setMsgStatus(EnumMsgRecordStatus.CONSUME_SUCC.getCode()); wxMsgRecordMapper.update(baseMsg); diff --git a/mallinkService/src/main/java/com/iformall/domain/po/BaseMsg.java b/mallinkService/src/main/java/com/iformall/domain/po/BaseMsg.java index c2516a546..5ce31b32c 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/BaseMsg.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/BaseMsg.java @@ -1,5 +1,7 @@ package com.iformall.domain.po; +import lombok.Data; + import javax.persistence.Transient; import java.io.Serializable; @@ -7,101 +9,37 @@ import java.io.Serializable; * @author luozukai * @date 2019/3/7 10:05 */ +@Data public class BaseMsg implements Serializable { private static final long serialVersionUID = 923764283764823L; - //域0全部 1sys 2a端 3c端 4b端 + @io.swagger.annotations.ApiModelProperty(value="域0全部 1sys 2a端 3c端 4b端",name="domain") private Integer domain = 0; - //租户id + @io.swagger.annotations.ApiModelProperty(value="租户id",name="tenantId") private String tenantId; - //唯一标识 + @io.swagger.annotations.ApiModelProperty(value="唯一标识",name="uuid") @Transient private String uuid; - //接收人,手机号邮件地址等 + @io.swagger.annotations.ApiModelProperty(value="接收人,手机号邮件地址等",name="receiver") @Transient private String receiver; - //消息类型 1短信 2回调短信 3邮件 4微信小程序模板 5微信公众号模板 6系统通知 + @io.swagger.annotations.ApiModelProperty(value="消息类型 1短信 2回调短信 3邮件 4微信小程序模板 5微信公众号模板 6系统通知 7websocket",name="msgType") @Transient private Integer msgType; - //消息状态 0默认1发送成功2消费成功3消费失败 + @io.swagger.annotations.ApiModelProperty(value="消息状态 0默认1发送成功2消费成功3消费失败",name="msgStatus") @Transient private Integer msgStatus; - //结果信息 + @io.swagger.annotations.ApiModelProperty(value="结果信息",name="statusMessage") @Transient private String statusMessage; - //rocketMQ延迟消息1s,5s,10s,30s,1m,2m,3m,4m,5m,6m,7m,8m,9m,10m,20m,30m,1h,2h + @io.swagger.annotations.ApiModelProperty(value="rocketMQ延迟消息1s,5s,10s,30s,1m,2m,3m,4m,5m,6m,7m,8m,9m,10m,20m,30m,1h,2h",name="delayTimeLevel") @Transient private Integer delayTimeLevel = 0; - - - public Integer getDomain() { - return domain; - } - - public void setDomain(Integer domain) { - this.domain = domain; - } - - public String getTenantId() { - return tenantId; - } - - public void setTenantId(String tenantId) { - this.tenantId = tenantId; - } - - public String getReceiver() { - return receiver; - } - - public void setReceiver(String receiver) { - this.receiver = receiver; - } - - public Integer getDelayTimeLevel() { - return delayTimeLevel; - } - - public void setDelayTimeLevel(Integer delayTimeLevel) { - this.delayTimeLevel = delayTimeLevel; - } - - public String getStatusMessage() { - return statusMessage; - } - - public void setStatusMessage(String statusMessage) { - this.statusMessage = statusMessage; - } - - public String getUuid() { - return uuid; - } - - public void setUuid(String uuid) { - this.uuid = uuid; - } - - public Integer getMsgStatus() { - return msgStatus; - } - - public void setMsgStatus(Integer msgStatus) { - this.msgStatus = msgStatus; - } - - public Integer getMsgType() { - return msgType; - } - - public void setMsgType(Integer msgType) { - this.msgType = msgType; - } } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/MailMsg.java b/mallinkService/src/main/java/com/iformall/domain/po/MailMsg.java index b3de76d13..5e2287bcd 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/MailMsg.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/MailMsg.java @@ -1,11 +1,18 @@ package com.iformall.domain.po; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + import java.util.Map; /** * @author luozukai * @date 2019/3/7 10:05 */ +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) public class MailMsg extends BaseMsg { private static final long serialVersionUID = 923764283760321L; // 模板id @@ -26,84 +33,4 @@ public class MailMsg extends BaseMsg { //动态替换内容 private Map dynamicContentMap; - - public Map getDynamicContentMap() { - return dynamicContentMap; - } - - public void setDynamicContentMap(Map dynamicContentMap) { - this.dynamicContentMap = dynamicContentMap; - } - - public Integer getModelId() { - return modelId; - } - - public void setModelId(Integer modelId) { - this.modelId = modelId; - } - - public String[] getTo() { - return to; - } - - public void setTo(String[] to) { - this.to = to; - } - - public String getFrom() { - return from; - } - - public void setFrom(String from) { - this.from = from; - } - - public String getMsg() { - return msg; - } - - public void setMsg(String msg) { - this.msg = msg; - } - - public String getSubject() { - return subject; - } - - public void setSubject(String subject) { - this.subject = subject; - } - - public boolean isHtml() { - return isHtml; - } - - public void setHtml(boolean html) { - isHtml = html; - } - - public String getFilePath() { - return filePath; - } - - public void setFilePath(String filePath) { - this.filePath = filePath; - } - - public String getRscPath() { - return rscPath; - } - - public void setRscPath(String rscPath) { - this.rscPath = rscPath; - } - - public String getRscI() { - return rscI; - } - - public void setRscI(String rscI) { - this.rscI = rscI; - } } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/MpAppMsg.java b/mallinkService/src/main/java/com/iformall/domain/po/MpAppMsg.java new file mode 100644 index 000000000..1f8d694dc --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/MpAppMsg.java @@ -0,0 +1,35 @@ +package com.iformall.domain.po; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import me.chanjar.weixin.mp.bean.template.WxMpTemplateData; + +import java.util.List; + +/** + * 微信公众号模板消息 + * @author Stormeye + * @date 2019/4/9 13:55 + */ +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public class MpAppMsg extends BaseMsg { + private static final long serialVersionUID = 223232132183760321L; + + @io.swagger.annotations.ApiModelProperty(value="公众号AppId",name="appId") + private String appId; + @io.swagger.annotations.ApiModelProperty(value="公众号openid",name="to") + private String to; + @io.swagger.annotations.ApiModelProperty(value="模板类型",name="templateType") + private Integer templateType; + @io.swagger.annotations.ApiModelProperty(value="小程序AppId",name="miniAppId") + private String miniAppId; + @io.swagger.annotations.ApiModelProperty(value="小程序路径",name="miniPagePath") + private String miniPagePath; + @io.swagger.annotations.ApiModelProperty(value="公众号AppId",name="appId") + private String emphasisKeyword; + @io.swagger.annotations.ApiModelProperty(value="公众号模板主体",name="templateDataList") + private List templateDataList; +} diff --git a/mallinkService/src/main/java/com/iformall/domain/po/SmartAppMsg.java b/mallinkService/src/main/java/com/iformall/domain/po/SmartAppMsg.java index 411e5ffa8..fac78419b 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/SmartAppMsg.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/SmartAppMsg.java @@ -1,6 +1,10 @@ package com.iformall.domain.po; import cn.binarywang.wx.miniapp.bean.WxMaTemplateData; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + import java.util.List; /** @@ -8,71 +12,24 @@ import java.util.List; * @author luozukai * @date 2019/3/7 10:05 */ +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) public class SmartAppMsg extends BaseMsg { private static final long serialVersionUID = 223232132183760321L; - //小程序的appId + @io.swagger.annotations.ApiModelProperty(value="小程序AppId",name="appId") private String appId; + @io.swagger.annotations.ApiModelProperty(value="小程序用户openId",name="to") private String to; - private String from; + @io.swagger.annotations.ApiModelProperty(value="小程序formId",name="formId") + private String formId; + @io.swagger.annotations.ApiModelProperty(value="小程序模板类型",name="templateType") private Integer templateType; + @io.swagger.annotations.ApiModelProperty(value="小程序路径",name="gotopage") private String gotopage; + @io.swagger.annotations.ApiModelProperty(value="小程序模板消息标题",name="emphasisKeyword") private String emphasisKeyword; + @io.swagger.annotations.ApiModelProperty(value="小程序模板实体",name="templateDataList") private List templateDataList; - - public String getAppId() { - return appId; - } - - public void setAppId(String appId) { - this.appId = appId; - } - - public String getEmphasisKeyword() { - return emphasisKeyword; - } - - public void setEmphasisKeyword(String emphasisKeyword) { - this.emphasisKeyword = emphasisKeyword; - } - - public String getGotopage() { - return gotopage; - } - - public void setGotopage(String gotopage) { - this.gotopage = gotopage; - } - - public String getTo() { - return to; - } - - public void setTo(String to) { - this.to = to; - } - - public String getFrom() { - return from; - } - - public void setFrom(String from) { - this.from = from; - } - - public Integer getTemplateType() { - return templateType; - } - - public void setTemplateType(Integer templateType) { - this.templateType = templateType; - } - - public List getTemplateDataList() { - return templateDataList; - } - - public void setTemplateDataList(List templateDataList) { - this.templateDataList = templateDataList; - } } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxMsg.java b/mallinkService/src/main/java/com/iformall/domain/po/WxMsg.java index 35b3a5ecf..56004d379 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxMsg.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxMsg.java @@ -1,5 +1,9 @@ package com.iformall.domain.po; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + import javax.persistence.Id; import javax.persistence.Table; import javax.persistence.Transient; @@ -8,6 +12,9 @@ import java.util.Date; import java.util.List; @Table(name = "wx_msg") +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) public class WxMsg extends BaseMsg { private static final long serialVersionUID = 1L; @@ -19,66 +26,32 @@ public class WxMsg extends BaseMsg { @Transient protected String sortColumns; - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getSortColumns() { - return sortColumns; - } - - public List getIds() { - return ids; - } - - public void setIds(List ids) { - this.ids = ids; - } - - /*租户ID**/ @io.swagger.annotations.ApiModelProperty(value = "租户ID", name = "tenantId") private String tenantId; - /*模板id**/ @io.swagger.annotations.ApiModelProperty(value = "模板id", name = "modelId") private Long modelId; - /*内容**/ @io.swagger.annotations.ApiModelProperty(value = "内容", name = "msg") private String msg; - /*发送时间**/ @io.swagger.annotations.ApiModelProperty(value = "发送时间", name = "sendtime") private String sendtime; - /*发送时间**/ @io.swagger.annotations.ApiModelProperty(value = "发送时间", name = "createtime") private Date createtime; - /*预计发送数量**/ @io.swagger.annotations.ApiModelProperty(value = "预计发送数量", name = "expectSendNumber") private Integer expectSendNumber; - /*成功数量**/ @io.swagger.annotations.ApiModelProperty(value = "成功数量", name = "successNumber") private Integer successNumber; - /*错误数量**/ @io.swagger.annotations.ApiModelProperty(value = "错误数量", name = "errorNumber") private Integer errorNumber; - /***/ @io.swagger.annotations.ApiModelProperty(value = "", name = "returnResult") private String returnResult; - /***/ @io.swagger.annotations.ApiModelProperty(value = "", name = "phones") private String phones; - /***/ @io.swagger.annotations.ApiModelProperty(value = "", name = "signature") private String signature; - /***/ @io.swagger.annotations.ApiModelProperty(value = "", name = "isright") private Integer isright; - /***/ @io.swagger.annotations.ApiModelProperty(value = "", name = "name") private String name; - /*发送状态0未发送 1已发送 2草稿箱**/ @io.swagger.annotations.ApiModelProperty(value = "发送状态0失败1成功", name = "sendstatus") private Integer sendstatus; @@ -121,168 +94,23 @@ public class WxMsg extends BaseMsg { this.couponInject = couponInject; } - public String getTenantId() { - return tenantId; - } - - public void setTenantId(String _tenantId) { - tenantId = _tenantId; - } - - public Long getModelId() { - return modelId; - } - - public void setModelId(Long _modelId) { - modelId = _modelId; - } - - public String getMsg() { - return msg; - } - - public void setMsg(String _msg) { - msg = _msg; - } - - public String getSendtime() { - return sendtime; - } - - public void setSendtime(String _sendtime) { - sendtime = _sendtime; - } - - public Date getCreatetime() { - return createtime; - } - - public void setCreatetime(Date _createtime) { - createtime = _createtime; - } - - public Integer getExpectSendNumber() { - return expectSendNumber; - } - - public void setExpectSendNumber(Integer _expectSendNumber) { - expectSendNumber = _expectSendNumber; - } - - public Integer getSuccessNumber() { - return successNumber; - } - - public void setSuccessNumber(Integer _successNumber) { - successNumber = _successNumber; - } - - public Integer getErrorNumber() { - return errorNumber; - } - - public void setErrorNumber(Integer _errorNumber) { - errorNumber = _errorNumber; - } - - public String getReturnResult() { - return returnResult; - } - - public void setReturnResult(String _returnResult) { - returnResult = _returnResult; - } - - public String getPhones() { - return phones; - } - - public void setPhones(String _phones) { - phones = _phones; - } - - public String getSignature() { - return signature; - } - - public void setSignature(String _signature) { - signature = _signature; - } - - public Integer getIsright() { - return isright; - } - - public void setIsright(Integer _isright) { - isright = _isright; - } - - public String getName() { - return name; - } - - public void setName(String _name) { - name = _name; - } - - public Integer getSendstatus() { - return sendstatus; - } - - public void setSendstatus(Integer _sendstatus) { - sendstatus = _sendstatus; - } - - public String getExcelpath() { - return excelpath; - } - - public void setExcelpath(String excelpath) { - this.excelpath = excelpath; - } - - public String getLabel() { - return label; - } - - public void setLabel(String label) { - this.label = label; - } - - public Integer getStatus() { - return status; - } - - public void setStatus(Integer status) { - this.status = status; - } - - public Integer getWay() { - return way; - } - - public void setWay(Integer way) { - this.way = way; - } - - public List getTagsList() { - return tagsList; - } - - public void setTagsList(List tagsList) { - this.tagsList = tagsList; - } - - public Long getCouponInjectId() { - return couponInjectId; - } - - public void setCouponInjectId(Long couponInjectId) { - this.couponInjectId = couponInjectId; - } - public static enum Field { - Id_ASC("`id` ASC"), Id_DESC("`id` DESC"), TenantId_ASC("`tenant_id` ASC"), TenantId_DESC("`tenant_id` DESC"), ModelId_ASC("`model_id` ASC"), ModelId_DESC("`model_id` DESC"), Msg_ASC("`msg` ASC"), Msg_DESC("`msg` DESC"), Sendtime_ASC("`sendtime` ASC"), Sendtime_DESC("`sendtime` DESC"), Createtime_ASC("`createtime` ASC"), Createtime_DESC("`createtime` DESC"), ExpectSendNumber_ASC("`expect_send_number` ASC"), ExpectSendNumber_DESC("`expect_send_number` DESC"), SuccessNumber_ASC("`success_number` ASC"), SuccessNumber_DESC("`success_number` DESC"), ErrorNumber_ASC("`error_number` ASC"), ErrorNumber_DESC("`error_number` DESC"), ReturnResult_ASC("`return_result` ASC"), ReturnResult_DESC("`return_result` DESC"), Phones_ASC("`phones` ASC"), Phones_DESC("`phones` DESC"), Signature_ASC("`signature` ASC"), Signature_DESC("`signature` DESC"), Isright_ASC("`isright` ASC"), Isright_DESC("`isright` DESC"), Name_ASC("`name` ASC"), Name_DESC("`name` DESC"), Sendstatus_ASC("`sendstatus` ASC"), Sendstatus_DESC("`sendstatus` DESC"); + Id_ASC("`id` ASC"), Id_DESC("`id` DESC") + , TenantId_ASC("`tenant_id` ASC"), TenantId_DESC("`tenant_id` DESC") + , ModelId_ASC("`model_id` ASC"), ModelId_DESC("`model_id` DESC") + , Msg_ASC("`msg` ASC"), Msg_DESC("`msg` DESC") + , Sendtime_ASC("`sendtime` ASC"), Sendtime_DESC("`sendtime` DESC") + , Createtime_ASC("`createtime` ASC"), Createtime_DESC("`createtime` DESC") + , ExpectSendNumber_ASC("`expect_send_number` ASC"), ExpectSendNumber_DESC("`expect_send_number` DESC") + , SuccessNumber_ASC("`success_number` ASC"), SuccessNumber_DESC("`success_number` DESC") + , ErrorNumber_ASC("`error_number` ASC"), ErrorNumber_DESC("`error_number` DESC") + , ReturnResult_ASC("`return_result` ASC"), ReturnResult_DESC("`return_result` DESC") + , Phones_ASC("`phones` ASC"), Phones_DESC("`phones` DESC") + , Signature_ASC("`signature` ASC"), Signature_DESC("`signature` DESC") + , Isright_ASC("`isright` ASC"), Isright_DESC("`isright` DESC") + , Name_ASC("`name` ASC"), Name_DESC("`name` DESC") + , Sendstatus_ASC("`sendstatus` ASC"), Sendstatus_DESC("`sendstatus` DESC") + ; private String value; Field(String value) { diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxMsgRecord.java b/mallinkService/src/main/java/com/iformall/domain/po/WxMsgRecord.java index b471f8c37..d4cf64a94 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxMsgRecord.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxMsgRecord.java @@ -1,201 +1,59 @@ package com.iformall.domain.po; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + import javax.persistence.Id; import javax.persistence.Table; import java.util.Date; import java.util.Map; @Table(name = "wx_msg_record") +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) public class WxMsgRecord extends BaseMsg { private static final long serialVersionUID = 18957895653478L; @Id protected Long id; - //租户id - private String tenantId; //msg 消息类型1短信 2回调短信 邮件 3微信小程序模板 4微信公众号模板 5系统通 + @io.swagger.annotations.ApiModelProperty(value="消息类型 1短信 2回调短信 3邮件 4微信小程序模板 5微信公众号模板 6系统通知 7websocket",name="msg") private String msg; - //发送时间 + @io.swagger.annotations.ApiModelProperty(value="发送时间",name="sendTime") private String sendTime; - //model_id + @io.swagger.annotations.ApiModelProperty(value="modelId",name="modelId") private Long modelId; - //from,手机号邮件地址等 + @io.swagger.annotations.ApiModelProperty(value="from,手机号邮件地址等",name="sender") private String sender; - //发送人id + @io.swagger.annotations.ApiModelProperty(value="发送人id",name="senderUserId") private Long senderUserId; - //发送人姓名 + @io.swagger.annotations.ApiModelProperty(value="发送人姓名",name="senderUserName") private String senderUserName; - //接收人用户id + @io.swagger.annotations.ApiModelProperty(value="接收人用户id",name="receiverUserId") private Long receiverUserId; - //接收人姓名 + @io.swagger.annotations.ApiModelProperty(value="接收人姓名",name="receiverUserName") private String receiverUserName; - //签名 + @io.swagger.annotations.ApiModelProperty(value="签名",name="signature") private String signature; - //模板类型 + @io.swagger.annotations.ApiModelProperty(value="模板类型",name="modelType") private Integer modelType; - //消息json + @io.swagger.annotations.ApiModelProperty(value="消息json",name="msgJson") private String msgJson; + @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createtime") private Date createtime; + @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updatetime") private Date updatetime; + @io.swagger.annotations.ApiModelProperty(value="消息状态",name="msgStatus") private Integer msgStatus; + @io.swagger.annotations.ApiModelProperty(value="结果信息",name="statusMessage") private String statusMessage; - //动态替换内容 + @io.swagger.annotations.ApiModelProperty(value="动态替换内容",name="dynamicContentMap") private Map dynamicContentMap; - @Override - public Integer getMsgStatus() { - return msgStatus; - } - - @Override - public void setMsgStatus(Integer msgStatus) { - this.msgStatus = msgStatus; - } - - @Override - public String getStatusMessage() { - return statusMessage; - } - - @Override - public void setStatusMessage(String statusMessage) { - this.statusMessage = statusMessage; - } - - public String getMsgJson() { - return msgJson; - } - - public void setMsgJson(String msgJson) { - this.msgJson = msgJson; - } - - public Map getDynamicContentMap() { - return dynamicContentMap; - } - - - public void setDynamicContentMap(Map dynamicContentMap) { - this.dynamicContentMap = dynamicContentMap; - } - - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getSender() { - return sender; - } - - public void setSender(String sender) { - this.sender = sender; - } - - public Long getSenderUserId() { - return senderUserId; - } - - public void setSenderUserId(Long senderUserId) { - this.senderUserId = senderUserId; - } - - public String getSenderUserName() { - return senderUserName; - } - - public void setSenderUserName(String senderUserName) { - this.senderUserName = senderUserName; - } - - public Long getReceiverUserId() { - return receiverUserId; - } - - public void setReceiverUserId(Long receiverUserId) { - this.receiverUserId = receiverUserId; - } - - public String getReceiverUserName() { - return receiverUserName; - } - - public void setReceiverUserName(String receiverUserName) { - this.receiverUserName = receiverUserName; - } - - public Integer getModelType() { - return modelType; - } - - public void setModelType(Integer modelType) { - this.modelType = modelType; - } - - public String getSignature() { - return signature; - } - - public void setSignature(String signature) { - this.signature = signature; - } - - - public String getTenantId() { - return tenantId; - } - - public void setTenantId(String tenantId) { - this.tenantId = tenantId; - } - - - public String getMsg() { - return msg; - } - - public void setMsg(String msg) { - this.msg = msg; - } - - public String getSendTime() { - return sendTime; - } - - public void setSendTime(String sendTime) { - this.sendTime = sendTime; - } - - public Long getModelId() { - return modelId; - } - - public void setModelId(Long modelId) { - this.modelId = modelId; - } - - public Date getCreatetime() { - return createtime; - } - - public void setCreatetime(Date createtime) { - this.createtime = createtime; - } - - public Date getUpdatetime() { - return updatetime; - } - - public void setUpdatetime(Date updatetime) { - this.updatetime = updatetime; - } - } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumMsgRecordType.java b/mallinkService/src/main/java/com/iformall/enums/EnumMsgRecordType.java index d212db91d..6459462ca 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumMsgRecordType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumMsgRecordType.java @@ -10,6 +10,7 @@ public enum EnumMsgRecordType { SMART_APP(4, "小程序"), PUBLIC(5, "公众号"), SYSTEM(6, "系统通知"), + WEBSOCKET_APP(7, "小程序websocket"), ; public static EnumMsgRecordType getEnum(Integer code) { diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumTemplateType.java b/mallinkService/src/main/java/com/iformall/enums/EnumTemplateType.java index e0a960f11..06150bb75 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumTemplateType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumTemplateType.java @@ -7,9 +7,10 @@ public enum EnumTemplateType { // 1-核销成功消息, 2-核销失败消息 - VERIFY_SUCCESS(1, "核销成功消息"), - VERIFY_FAIL(2, "核销失败消息"), - AUDIT_MESSAGE(3, "审核结果通知") + VERIFY_SUCCESS(1, "核销成功消息"), // 小程序 + VERIFY_FAIL(2, "核销失败消息"), // 小程序 + AUDIT_MESSAGE(101, "公众号审核结果通知"), // 公众号 + VERIFY_RESULT(102, "公众号卡券核销通知"), // 公众号 ; public static EnumTemplateType getEnum(Integer code) { diff --git a/mallinkService/src/main/java/com/iformall/service/impl/SendMpMsgServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/SendMpMsgServiceImpl.java new file mode 100644 index 000000000..6db4232e5 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/impl/SendMpMsgServiceImpl.java @@ -0,0 +1,65 @@ +package com.iformall.service.impl; + +import com.iformall.common.ErrorCode; +import com.iformall.domain.po.*; +import com.iformall.exception.MallinkException; +import com.iformall.mapper.WxTemplateMsgMapper; +import com.iformall.service.MsgSendService; +import com.iformall.service.wechat.FmOpenService; +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * 发送微信公众号模板消息 + * @author Stormeye + * @date 2019/4/9 13:51 + */ +@Service +public class SendMpMsgServiceImpl implements MsgSendService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + @Autowired + private WxTemplateMsgMapper wxTemplateMsgMapper; + + @Autowired + private FmOpenService openService; + + @Override + public void send(BaseMsg baseMsg) throws Exception{ + MpAppMsg mpAppMsg = (MpAppMsg)baseMsg; + WxTemplateMsg msg = null; + + WxMpService wxMpService = openService.getWxOpenComponentService().getWxMpServiceByAppid(mpAppMsg.getAppId()); + + // 查询信息模板 + WxTemplateMsg msgQ = new WxTemplateMsg(); + msgQ.setTenantId(mpAppMsg.getTenantId()); + msgQ.setType(mpAppMsg.getTemplateType()); + try { + msg = wxTemplateMsgMapper.selectOne(msgQ); + } catch (Exception e) { + logger.error("公众号消息模板错误: " + e.getMessage()); + } + if (msg == null) { + logger.error("找不到模板Id"); + throw new MallinkException(ErrorCode.TEMPLATE_NOT_FOUND); + } + + WxMpTemplateMessage.MiniProgram miniprogram = new WxMpTemplateMessage.MiniProgram(); + miniprogram.setAppid(mpAppMsg.getMiniAppId()); + miniprogram.setPagePath(mpAppMsg.getMiniPagePath()); + miniprogram.setUsePath(true); + + WxMpTemplateMessage mpTemplateMessage = WxMpTemplateMessage.builder() + .toUser(mpAppMsg.getTo()) + .templateId(msg.getTemplateId()) + .miniProgram(miniprogram) + .data(mpAppMsg.getTemplateDataList()) + .build(); + String retStr = wxMpService.getTemplateMsgService().sendTemplateMsg(mpTemplateMessage); + logger.info(retStr); + } +} diff --git a/mallinkService/src/main/java/com/iformall/service/impl/SendSmartAppMsgServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/SendSmartAppMsgServiceImpl.java index 4c5a02b41..5231903d0 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/SendSmartAppMsgServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/SendSmartAppMsgServiceImpl.java @@ -69,7 +69,7 @@ public class SendSmartAppMsgServiceImpl implements MsgSendService { */ templateMessage = WxMaTemplateMessage.builder() .toUser(smartAppMsg.getTo()) - .formId(smartAppMsg.getFrom()) // 微信支付的formId是prepayId + .formId(smartAppMsg.getFormId()) // 微信支付的formId是prepayId .page(smartAppMsg.getGotopage()) .data(smartAppMsg.getTemplateDataList()) .templateId(msg.getTemplateId()) From 2c7faf4040dbf0088b202d7bdf31e58fd8de6281 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Tue, 9 Apr 2019 15:28:20 +0800 Subject: [PATCH 8/9] =?UTF-8?q?[=E5=B0=8F=E7=A8=8B=E5=BA=8F=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E6=B6=88=E6=81=AFformId][=E6=96=B0=E5=A2=9E]:?= =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E6=A8=A1=E6=9D=BF=E6=B6=88=E6=81=AF?= =?UTF-8?q?formId=E4=BF=9D=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../V201904091440__ADD_FORMID_FOR_ORDER.sql | 2 + .../controller/WxOrderController.java | 10 ++-- .../java/com/iformall/domain/po/WxOrder.java | 37 ++++++------- .../com/iformall/domain/po/WxTemplateMsg.java | 10 +--- .../com/iformall/service/WxOrderService.java | 18 +++---- .../impl/WxCouponOrderServiceImpl.java | 54 ++++++++++--------- .../service/impl/WxOrderServiceImpl.java | 6 ++- .../main/resources/mapper/WxOrderMapper.xml | 7 ++- 8 files changed, 73 insertions(+), 71 deletions(-) create mode 100644 mallinkAdmin/src/main/resources/db/migration/V201904091440__ADD_FORMID_FOR_ORDER.sql diff --git a/mallinkAdmin/src/main/resources/db/migration/V201904091440__ADD_FORMID_FOR_ORDER.sql b/mallinkAdmin/src/main/resources/db/migration/V201904091440__ADD_FORMID_FOR_ORDER.sql new file mode 100644 index 000000000..0599a5d3d --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V201904091440__ADD_FORMID_FOR_ORDER.sql @@ -0,0 +1,2 @@ +ALTER TABLE `wx_order` +ADD COLUMN `form_id` VARCHAR(64) NULL COMMENT 'formId' AFTER `order_group_id`; \ No newline at end of file diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index ff8e1bef5..9d7f211b0 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -39,13 +39,14 @@ public class WxOrderController extends BaseController { @Autowired private WxOrderService wxOrderService; - @ApiOperation(value = "免费领取", notes = "{\"couponChannelId\":\"String\",\"couponId\":\"String\"}") + @ApiOperation(value = "免费领取", notes = "{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"formId\":\"String\"}") @PostMapping("freeCoupon") public ResultData freeCoupon(@RequestBody Map paramMap) { //Assert.notNull(wxOrders.getName(), "角色名不能为空"); //Assert.isTrue(!checkUnique(sysRole.getName(), null), "重复的角色名"); String couponChannelIdStr = paramMap.get("couponChannelId"); String couponIdStr = paramMap.get("couponId"); + String formId = paramMap.get("formId"); if (StringUtils.isBlank(couponChannelIdStr)) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "couponChannelId不能为空"); } @@ -72,7 +73,7 @@ public class WxOrderController extends BaseController { WxOrder order = null; try { - order = wxOrderService.saveFreeCouponOrder(getUserId(), couponChannelId, couponId); + order = wxOrderService.saveFreeCouponOrder(getUserId(), couponChannelId, couponId, formId); return new ResultData(order); } catch (MallinkException e) { logger.error(e.getMessage()); @@ -83,7 +84,7 @@ public class WxOrderController extends BaseController { } } - @ApiOperation(value = "下订单", notes = "{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\"}") + @ApiOperation(value = "下订单", notes = "{\"couponChannelId\":\"String\",\"couponId\":\"String\",\"press\":\"String\",\"orderGroupId\":\"String\",\"formId\":\"String\"}") @PostMapping("save") public ResultData saveOrder(@RequestBody Map paramMap) { logger.info("OrderSave: " + paramMap.toString()); @@ -93,6 +94,7 @@ public class WxOrderController extends BaseController { String couponIdStr = paramMap.get("couponId"); String pressStr = paramMap.get("press"); String orderGroupIdStr = paramMap.get("orderGroupId"); + String formId = paramMap.get("formId"); if (StringUtils.isBlank(couponChannelIdStr)) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "couponChannelId不能为空"); @@ -165,7 +167,7 @@ public class WxOrderController extends BaseController { WxCUser user = getUser(); try { - WxOrder order = wxOrderService.saveCouponOrder(user, couponChannelId, couponId, isPress, orderGroupId); + WxOrder order = wxOrderService.saveCouponOrder(user, couponChannelId, couponId, isPress, orderGroupId, formId); return new ResultData(order); } catch (MallinkException e) { logger.error(e.getMessage()); diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java index 35f120bc3..6bf6c37a0 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOrder.java @@ -48,65 +48,52 @@ public class WxOrder implements Serializable { @Transient private String phone; - /**订单码;正反向交易保持一致。**/ @io.swagger.annotations.ApiModelProperty(value="订单码;正反向交易保持一致。",name="orderNumber") private Long orderNumber; - /**租户ID**/ @io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId") private String tenantId; - /**c端用户id**/ @io.swagger.annotations.ApiModelProperty(value="c端用户id",name="cUserId") private Long cUserId; - /**渠道ID**/ @io.swagger.annotations.ApiModelProperty(value="渠道ID",name="couponChannelId") private Long couponChannelId; - /**产品ID,根据order type**/ @io.swagger.annotations.ApiModelProperty(value="产品ID(type-0:couponId, 1:buserId, 3:merchantId)",name="productId") private Long productId; - /**类型0:券,1:B刷卡支付,2:C扫码支付,3:储值卡**/ - @io.swagger.annotations.ApiModelProperty(value="类型",name="type") + @io.swagger.annotations.ApiModelProperty(value="类型(0:券,1:B刷卡支付,2:C扫码支付,3:储值卡)",name="type") private Integer type; - /**0: 付款 1: 退款**/ @io.swagger.annotations.ApiModelProperty(value="0: 付款 1: 退款",name="paymentType") private Integer paymentType; - /**支付金额(分):允许有负数,退款时为负值。**/ @io.swagger.annotations.ApiModelProperty(value="支付金额(分):允许有负数,退款时为负值。",name="payment") private Integer payment; - /**支付时间**/ @io.swagger.annotations.ApiModelProperty(value="支付时间",name="paymentTime") private Date paymentTime; - /**订单状态:-1全部;正向交易:0-已下单/待付款;1-已支付;2-已取消(限定时间内未付款)反向交易:3-待退款;4-已退款,5-退款失败; 砍价:6-砍价中,7-砍价完成,8-砍价失败**/ @io.swagger.annotations.ApiModelProperty(value="订单状态:-1全部;正向交易:0-已下单/待付款;1-已支付;2-已取消(限定时间内未付款)反向交易:3-已退款; 4-退款失败,5-退款失败; 砍价:6-砍价中,7-砍价完成,8-砍价失败",name="orderStatus") private Integer orderStatus; - /**创建时间/砍价开始时间**/ @io.swagger.annotations.ApiModelProperty(value="创建时间/砍价开始时间",name="createDate") private Date createDate; - /**更新时间**/ @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") private Date updateDate; - /**支付描述,订单支付时用**/ @io.swagger.annotations.ApiModelProperty(value="支付描述,订单支付时用",name="detail") private String detail; - /**砍价结束时间**/ @io.swagger.annotations.ApiModelProperty(value="砍价结束时间",name="pressEndDate") private Date pressEndDate; - - /**砍价人数**/ @io.swagger.annotations.ApiModelProperty(value="砍价人数",name="pressCurrentNum") private Integer pressCurrentNum; - /**已砍价格**/ @io.swagger.annotations.ApiModelProperty(value="已砍价格",name="pressCurrentValue") private Integer pressCurrentValue; + @io.swagger.annotations.ApiModelProperty(value = "拼团ID", name = "orderGroupId") + private Long orderGroupId; + + @io.swagger.annotations.ApiModelProperty(value = "formId", name = "formId") + private String formId; + @Transient protected List statusS; @Transient protected String statusStr; - @io.swagger.annotations.ApiModelProperty(value = "拼团ID", name = "orderGroupId") - private Long orderGroupId; public Long getOrderNumber() { return orderNumber; @@ -275,7 +262,15 @@ public class WxOrder implements Serializable { this.orderGroupId = orderGroupId; } - public static enum Field + public String getFormId() { + return formId; + } + + public void setFormId(String formId) { + this.formId = formId; + } + + public static enum Field { Id_ASC("`id` ASC"),Id_DESC("`id` DESC") ,OrderNumber_ASC("`order_number` ASC"),OrderNumber_DESC("`order_number` DESC") diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxTemplateMsg.java b/mallinkService/src/main/java/com/iformall/domain/po/WxTemplateMsg.java index db4fc6dfe..af437a000 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxTemplateMsg.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxTemplateMsg.java @@ -21,21 +21,15 @@ public class WxTemplateMsg implements Serializable { protected List ids; @Transient protected String sortColumns; - - - /**租户ID**/ + @io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId") private String tenantId; - /**模板ID**/ @io.swagger.annotations.ApiModelProperty(value="模板ID",name="templateId") private String templateId; - /**模板类型1:核销成功消息, 2:核销失败消息**/ - @io.swagger.annotations.ApiModelProperty(value="模板类型1:核销成功消息,2:核销失败消息",name="type") + @io.swagger.annotations.ApiModelProperty(value="模板类型1:核销成功消息,2:核销失败消息, 101:公众号审核结果消息, 102:公众号卡券核销消息",name="type") private Integer type; - /**创建时间**/ @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate") private Date createDate; - /**更新时间**/ @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") private Date updateDate; diff --git a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java index a3fdb80cd..2c8218f6c 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java @@ -33,6 +33,14 @@ public interface WxOrderService { ResultData microPayListOnDateAsPage(Long bUserId, Integer type, String date, Integer pageIndex, Integer pageSize); + /** + * 下免费券订单接口 + * @param userId + * @param couponId + * @return WxOrder + */ + WxOrder saveFreeCouponOrder(Long userId, Long couponChannelId, Long couponId, String formId); + /** * 提交订单 * @param user @@ -40,7 +48,7 @@ public interface WxOrderService { * @param orderGroupId * @return 订单id */ - WxOrder saveCouponOrder(WxCUser user, Long couponChannelId, Long couponId, boolean isPress, Long orderGroupId); + WxOrder saveCouponOrder(WxCUser user, Long couponChannelId, Long couponId, boolean isPress, Long orderGroupId, String formId); /** * 付款码支付 @@ -60,14 +68,6 @@ public interface WxOrderService { */ WxOrder saveCardPayOrder(WxMerchant merchant, Long cUserId, String totalFeeStr, Integer payment); - /** - * 免费券订单接口 - * @param userId - * @param couponId - * @return WxOrder - */ - WxOrder saveFreeCouponOrder(Long userId, Long couponChannelId, Long couponId); - /** * 免费券订单接口 * @param userId diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java index bfe638825..a19e70d3a 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java @@ -26,6 +26,7 @@ import com.iformall.utils.Constant; import com.iformall.utils.DateUtils; import com.iformall.utils.MaUtil; import me.chanjar.weixin.common.error.WxErrorException; +import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.usermodel.Workbook; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -535,16 +536,16 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { logger.error("找不到订单信息"); throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND); } + String formId = null; + if(StringUtils.isNotBlank(order.getFormId())) { + formId = order.getFormId(); + } // 2. get coupon info WxCoupon coupon = wxCouponMapper.selectByPrimaryKey(couponOrder.getCouponId()); if (coupon == null) { logger.error("找不到券信息"); throw new MallinkException(ErrorCode.COUPON_IS_EMPTY); } - if(coupon.getSalePrice().equals(0)) { - logger.info("免费券不发模板消息!"); - return; - } // 3. merchant info WxMerchant merchant = wxMerchantMapper.selectByPrimaryKey(bUser.getMerchantId()); if (merchant == null) { @@ -562,26 +563,27 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { // WxAppinfo appInfo = wxAppinfoService.getByAppId(user.getAppId()); // 6. get payOrder info - WxPayOrder payOrder = null; - WxPayOrder payOrderQ = new WxPayOrder(); - payOrderQ.setTenantId(couponOrder.getTenantId()); - payOrderQ.setOrderId(order.getId()); - payOrderQ.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); - List payList = wxPayOrderMapper.select(payOrderQ); - if (payList.size() > 0) { - payOrder = payList.get(0); - } - if (payOrder == null) { - logger.error("找不到payOrder信息"); - throw new MallinkException(ErrorCode.PAY_ORDER_NOT_FOUND); - } - if (payOrder.getPrepayId() == null) { - logger.error("payOrder信息中,prepay_id为空"); - throw new MallinkException(ErrorCode.PREPAY_ID_IS_EMPTY); + if(StringUtils.isBlank(order.getFormId())) { + WxPayOrder payOrder = null; + WxPayOrder payOrderQ = new WxPayOrder(); + payOrderQ.setTenantId(couponOrder.getTenantId()); + payOrderQ.setOrderId(order.getId()); + payOrderQ.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); + List payList = wxPayOrderMapper.select(payOrderQ); + if (payList.size() > 0) { + payOrder = payList.get(0); + } + if (payOrder == null) { + logger.error("找不到payOrder信息"); + throw new MallinkException(ErrorCode.PAY_ORDER_NOT_FOUND); + } + if (payOrder.getPrepayId() == null) { + logger.error("payOrder信息中,prepay_id为空"); + throw new MallinkException(ErrorCode.PREPAY_ID_IS_EMPTY); + } + formId = payOrder.getPrepayId(); } -// WxMaService wxMaService = MaUtil.getWeappService(appInfo); - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); String couponDetail = ""; if (coupon.getType() == EnumCouponType.COUPON_MANJIAN.getCode()) { @@ -596,7 +598,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { gotopage = "pages/couponorder/index/index"; notes = "您有新的券"; } - //mq发送小程序消息 + //mq发送小程序消息 - 核销成功消息 smartAppMsg = new SmartAppMsg(); smartAppMsg.setMsgType(EnumMsgRecordType.SMART_APP.getCode()); smartAppMsg.setAppId(user.getAppId()); @@ -604,7 +606,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { smartAppMsg.setTemplateType(EnumTemplateType.VERIFY_SUCCESS.getCode()); smartAppMsg.setGotopage(gotopage); smartAppMsg.setTo(user.getOpenId()); - smartAppMsg.setFrom(payOrder.getPrepayId()); + smartAppMsg.setFormId(formId); smartAppMsg.setTemplateDataList(Lists.newArrayList( new WxMaTemplateData("keyword1", coupon.getPriceStr() + "元", "#173177"), new WxMaTemplateData("keyword2", merchant.getName(), "#173177"), @@ -615,7 +617,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { new WxMaTemplateData("keyword7", notes, "#173177"))); smartAppMsg.setEmphasisKeyword("keyword1.DATA"); } else { - //mq发送小程序消息 + //mq发送小程序消息 - 核销失败消息 smartAppMsg = new SmartAppMsg(); smartAppMsg.setMsgType(EnumMsgRecordType.SMART_APP.getCode()); smartAppMsg.setAppId(user.getAppId()); @@ -624,7 +626,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { smartAppMsg.setGotopage("pages/index/index"); smartAppMsg.setTo(user.getOpenId()); smartAppMsg.setReceiver(user.getOpenId()); - smartAppMsg.setFrom(payOrder.getPrepayId()); + smartAppMsg.setFormId(formId); smartAppMsg.setTemplateDataList(Lists.newArrayList( new WxMaTemplateData("keyword1", coupon.getTitle(), "#173177"), new WxMaTemplateData("keyword2", dateFormat.format(new Date()), "#173177"), diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java index 050578020..f02f79093 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -337,7 +337,7 @@ public class WxOrderServiceImpl implements WxOrderService { @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public WxOrder saveCouponOrder(WxCUser user, Long couponChannelId, Long couponId, boolean isPress, Long orderGroupId) { + public WxOrder saveCouponOrder(WxCUser user, Long couponChannelId, Long couponId, boolean isPress, Long orderGroupId, String formId) { // 检查用户 if (user == null) { logger.error("用户不存在"); @@ -428,6 +428,7 @@ public class WxOrderServiceImpl implements WxOrderService { record.setCreateDate(curr); record.setUpdateDate(curr); record.setOrderGroupId(orderGroupId); + record.setFormId(formId); if (isPress) { // 初始砍价信息 @@ -688,7 +689,7 @@ public class WxOrderServiceImpl implements WxOrderService { @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public WxOrder saveFreeCouponOrder(Long userId, Long couponChannelId, Long couponId) { + public WxOrder saveFreeCouponOrder(Long userId, Long couponChannelId, Long couponId, String formId) { // check 用户状态 WxCUser user = null; try { @@ -750,6 +751,7 @@ public class WxOrderServiceImpl implements WxOrderService { record.setDetail(bodyStr); record.setCreateDate(curr); record.setUpdateDate(curr); + record.setFormId(formId); // 保存订单 try { diff --git a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml index bd91adeed..a92019815 100644 --- a/mallinkService/src/main/resources/mapper/WxOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOrderMapper.xml @@ -20,12 +20,13 @@ + `id`,`order_number`,`tenant_id`,`c_user_id`,`coupon_channel_id`,`product_id`,`type`,`payment_type`,`payment`,`payment_time`,`order_status`,`create_date`,`update_date`,`detail`, - `press_end_date`,`press_current_num`,`press_current_value`,`order_group_id` + `press_end_date`,`press_current_num`,`press_current_value`,`order_group_id`,`form_id` @@ -102,6 +103,10 @@ and `order_group_id` = #{orderGroupId} + + + and `form_id` = #{formId} + and `order_status` in From 102d71aee82474027753bfa9bcc55a4cd3b46803 Mon Sep 17 00:00:00 2001 From: hanxueda Date: Tue, 9 Apr 2019 16:01:13 +0800 Subject: [PATCH 9/9] =?UTF-8?q?1.=E6=B7=BB=E5=8A=A0=E6=A0=B9=E6=8D=AE?= =?UTF-8?q?=E6=89=8B=E6=9C=BA=E5=8F=B7=E6=9F=A5=E8=AF=A2=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=8E=A5=E5=8F=A3=202.=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=BD=93=E5=89=8D=E7=A7=9F=E6=88=B7=E4=B8=8B?= =?UTF-8?q?=E5=95=86=E6=88=B7=E5=90=8D=E7=A7=B0=E5=88=97=E8=A1=A8=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=203.=E6=96=B0=E5=A2=9E=E5=AF=B9=E8=B1=A1=E8=BD=AC?= =?UTF-8?q?=E6=8D=A2=E5=B7=A5=E5=85=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WxCUserBasicInfoController.java | 15 ++ .../controller/WxMerchantController.java | 10 ++ mallinkService/pom.xml | 5 + .../domain/vo/WxMerchantSimpleVo.java | 16 ++ .../exception/BeanMappingException.java | 17 +++ .../iformall/service/WxMerchantService.java | 8 + .../service/impl/WxMerchantServiceImpl.java | 10 ++ .../java/com/iformall/utils/BeanMapping.java | 139 ++++++++++++++++++ 8 files changed, 220 insertions(+) create mode 100644 mallinkService/src/main/java/com/iformall/domain/vo/WxMerchantSimpleVo.java create mode 100644 mallinkService/src/main/java/com/iformall/exception/BeanMappingException.java create mode 100644 mallinkService/src/main/java/com/iformall/utils/BeanMapping.java diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java index f6598c944..38c7240b4 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxCUserBasicInfoController.java @@ -38,6 +38,7 @@ import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import static com.iformall.domain.po.WxCouponOrder.Field.CreateDate_DESC; +import static com.iformall.ueditor.define.AppInfo.info; @RestController @RequestMapping("wxCUserBasicInfo") @@ -452,4 +453,18 @@ public class WxCUserBasicInfoController extends BaseController { wxCUserBasicInfoService.exportCarPayData(record, request, response); } + + @ApiOperation("根据手机号查询接口") + @GetMapping("/findByPhone") + @ApiImplicitParam(name = "phone", value = "phone", dataType = "String", paramType = "query", required = true) + @SystemControllerLog(description = "根据手机号查询接口") + public ResultData findByPhone(String phone) { + logger.debug("[" + getIpAddr() + "] WxCUserBasicInfoController::findByPhone"); + List wxCUserBasicInfoList = wxCUserBasicInfoService.findByPhone(getTenantId(),phone); + WxCUserBasicInfo wxCUserBasicInfo = new WxCUserBasicInfo(); + if (wxCUserBasicInfoList != null && wxCUserBasicInfoList.size() > 0) { + wxCUserBasicInfo = wxCUserBasicInfoList.get(0); + } + return new ResultData(wxCUserBasicInfo); + } } \ No newline at end of file diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxMerchantController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxMerchantController.java index 43779d4de..6cf3569ac 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxMerchantController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxMerchantController.java @@ -7,11 +7,13 @@ import com.iformall.common.ResultData; import com.iformall.domain.po.WxLevelConfig; import com.iformall.domain.po.WxMerchant; import com.iformall.domain.po.WxProfitSharingReceiver; +import com.iformall.domain.vo.WxMerchantSimpleVo; import com.iformall.service.WxMerchantService; import com.iformall.service.WxProfitSharingReceiverService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import org.apache.commons.beanutils.BeanUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -154,4 +156,12 @@ public class WxMerchantController extends BaseController { return wxMerchantService.updateMerchantLevel(wxMerchant); } + @ApiOperation("查询当前租户下商户名称列表") + @GetMapping("/name_list") + @SystemControllerLog(description = "查询当前租户下商户名称列表") + public ResultData nameList() { + logger.debug("[" + getIpAddr() + "] WxMerchantController::name_list"); + return new ResultData(wxMerchantService.findList(getTenantId())); + } + } diff --git a/mallinkService/pom.xml b/mallinkService/pom.xml index 5d4801bf5..0ebc4d9a5 100644 --- a/mallinkService/pom.xml +++ b/mallinkService/pom.xml @@ -20,6 +20,11 @@ compile --> + + net.sf.dozer + dozer + 5.5.1 + \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxMerchantSimpleVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxMerchantSimpleVo.java new file mode 100644 index 000000000..bbd372faa --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxMerchantSimpleVo.java @@ -0,0 +1,16 @@ +package com.iformall.domain.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class WxMerchantSimpleVo { + + /**id**/ + @ApiModelProperty(value="id",name="id") + private Long id; + + /**商户名**/ + @ApiModelProperty(value="商户名",name="name") + private String merchantName; +} diff --git a/mallinkService/src/main/java/com/iformall/exception/BeanMappingException.java b/mallinkService/src/main/java/com/iformall/exception/BeanMappingException.java new file mode 100644 index 000000000..c7b281de1 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/exception/BeanMappingException.java @@ -0,0 +1,17 @@ +package com.iformall.exception; + +public class BeanMappingException extends RuntimeException { + private static final long serialVersionUID = -3616240376550557648L; + + public BeanMappingException() { + this("Bean对象映射异常"); + } + + public BeanMappingException(String message) { + super(message); + } + + public BeanMappingException(Throwable cause) { + super(cause); + } +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java b/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java index e5ce57f7a..6043ace5d 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxMerchantService.java @@ -4,6 +4,7 @@ import com.github.pagehelper.PageInfo; import com.iformall.common.ResultData; import com.iformall.domain.po.WxLevelConfig; import com.iformall.domain.po.WxMerchant; +import com.iformall.domain.vo.WxMerchantSimpleVo; import com.iformall.domain.vo.WxMerchantVo; import java.util.HashMap; @@ -39,6 +40,13 @@ public interface WxMerchantService { * @return */ List etcpList(WxMerchant record); + + /** + * 查询商户列表 + * @param tenantId + * @return + */ + List findList(String tenantId); /** * 根据Id获得实体 diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java index 2c86cfa83..c217964a7 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java @@ -7,11 +7,13 @@ import com.iformall.common.IdWorker; import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.domain.po.*; +import com.iformall.domain.vo.WxMerchantSimpleVo; import com.iformall.domain.vo.WxMerchantVo; import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.mapper.*; import com.iformall.service.*; +import com.iformall.utils.BeanMapping; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -133,6 +135,14 @@ public class WxMerchantServiceImpl implements WxMerchantService { return wxMerchantMapper.findList(record); } + @Override + public List findList(String tenantId) { + WxMerchant wxMerchant = new WxMerchant(); + wxMerchant.setTenantId(tenantId); + List wxMerchantList = wxMerchantMapper.findList(wxMerchant); + return BeanMapping.mapList(wxMerchantList,WxMerchantSimpleVo.class,(s, t)->t.setMerchantName(s.getName())); + } + @Override public WxMerchant getById(Long id) { WxMerchant wxMerchant = wxMerchantMapper.selectByPrimaryKey(id); diff --git a/mallinkService/src/main/java/com/iformall/utils/BeanMapping.java b/mallinkService/src/main/java/com/iformall/utils/BeanMapping.java new file mode 100644 index 000000000..a8f458554 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/utils/BeanMapping.java @@ -0,0 +1,139 @@ +package com.iformall.utils; + +import com.iformall.exception.BeanMappingException; +import lombok.extern.slf4j.Slf4j; +import org.dozer.DozerBeanMapper; +import org.dozer.Mapper; +import org.dozer.MappingException; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; +import java.util.function.BiConsumer; + +/** + * 不同类型的bean对象属性映射转化 + * 基于Dozer封装, 对使用者透明 + */ +@Slf4j +public class BeanMapping { + + private static Mapper __instance__; + + private static Lock lock = new ReentrantLock(); + + private BeanMapping() { + + } + + private static Mapper getInstance() { + // TODO 支持XML配置或者传入映射关系 + + if (__instance__ == null) { + lock.lock(); + if (__instance__ == null) { + __instance__ = new DozerBeanMapper(); + } + lock.unlock(); + } + return __instance__; + } + + /** + * 源对象 {@code source} 转换成目标bean对象 {@code D}; 将名称一致的属性进行转换 + * @param source 源Bean + * @param dstClass 目标Bean的class + * @param 原Bean的泛型定义 + * @param 目标Bean的泛型定义 + * @return 目标Bean对象 + */ + public static D map(S source, Class dstClass) throws BeanMappingException { + return map(source, dstClass, null); + } + + /** + * 源对象 {@code source} 转换成目标bean对象 {@code D}; 将名称一致的属性进行转换; 转换完成后进行回调后续处理 + * @param source 源Bean + * @param dstClass 目标Bean的class + * @param biConsumer 目标Bean转换完成后的回调操作 + * @param 原Bean的泛型定义 + * @param 目标Bean的泛型定义 + * @return 目标Bean对象 + * @throws BeanMappingException + */ + public static D map(S source, Class dstClass, BiConsumer biConsumer) throws BeanMappingException { + if (source == null) { + return null; + } + try { + D dstObject = getInstance().map(source, dstClass); + if (dstObject != null && biConsumer != null) { + biConsumer.accept(source, dstObject); + } + return dstObject; + } catch (MappingException e) { + log.error("对象映射出错, 原对象类型: {}, 目标对象类型: {}", source.getClass(), dstClass); + throw new BeanMappingException(e); + } + } + + /** + * 源对象集合 {@code source} 转换成目标bean对象后添加到传入的集合中 {@code D}; 将名称一致的属性进行转换 + * @param source 源对象集合 + * @param destination 目标对象集合 + * @param dstClass 目标Bean的class + * @param 原Bean的泛型定义 + * @param 目标Bean的泛型定义 + * @throws BeanMappingException + */ + public static void map(Collection source, Collection destination, Class dstClass) throws BeanMappingException { + map(source, destination, dstClass, null); + } + + /** + * 源对象集合 {@code source} 转换成目标bean对象后添加到传入的集合中 {@code D}; 将名称一致的属性进行转换 + * @param source 源对象集合 + * @param destination 目标对象集合 + * @param dstClass 目标Bean的class + * @param biConsumer 目标Bean转换完成后的回调操作 + * @param 原Bean的泛型定义 + * @param 目标Bean的泛型定义 + * @throws BeanMappingException + */ + public static void map(Collection source, Collection destination, Class dstClass, BiConsumer biConsumer) throws BeanMappingException { + for (S s : source) { + destination.add(map(s, dstClass, biConsumer)); + } + } + + /** + * 源对象集合 {@code source} 转换成目标bean对象 {@code D}; 将名称一致的属性进行转换 + * @param source 源对象集合 + * @param dstClass 目标Bean的class + * @param 原Bean的泛型定义 + * @param 目标Bean的泛型定义 + * @return 映射完的List集合, 默认返回ArrayList + * @throws BeanMappingException + */ + public static List mapList(Collection source, Class dstClass) throws BeanMappingException { + return mapList(source, dstClass, null); + } + + /** + * 源对象集合 {@code source} 转换成目标bean对象 {@code D}; 将名称一致的属性进行转换 + * @param source 源对象集合 + * @param dstClass 目标Bean的class + * @param biConsumer 目标Bean转换完成后的回调操作 + * @param 原Bean的泛型定义 + * @param 目标Bean的泛型定义 + * @return 映射完的List集合, 默认返回ArrayList + * @throws BeanMappingException + */ + public static List mapList(Collection source, Class dstClass, BiConsumer biConsumer) throws BeanMappingException { + List result = new ArrayList<>(); + map(source, result, dstClass, biConsumer); + return result; + } +}