From d6f0175abd8d474604be83a06c701671a63b2048 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Wed, 18 Sep 2019 20:52:10 +0800 Subject: [PATCH 01/72] =?UTF-8?q?[=E5=8D=A1][=E4=BF=AE=E6=94=B9]:=E5=8D=A1?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/resources/db/migration/V201909182100__FREE_CARD.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 mallinkAdmin/src/main/resources/db/migration/V201909182100__FREE_CARD.sql diff --git a/mallinkAdmin/src/main/resources/db/migration/V201909182100__FREE_CARD.sql b/mallinkAdmin/src/main/resources/db/migration/V201909182100__FREE_CARD.sql new file mode 100644 index 000000000..039ed7925 --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V201909182100__FREE_CARD.sql @@ -0,0 +1,2 @@ +ALTER TABLE `wx_card_info` +CHANGE COLUMN `transaction_id` `transaction_id` varchar(36) COMMENT '微信订单号-购买类储值卡时的订单号'; \ No newline at end of file From 7dca604e2cfe61b7e5658f7fad85ee55aa120ee5 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Wed, 18 Sep 2019 21:07:16 +0800 Subject: [PATCH 02/72] =?UTF-8?q?[=E5=8D=A1][=E4=BF=AE=E6=94=B9]:=E5=8D=A1?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...{V201909182100__FREE_CARD.sql => V201909170200__FREE_CARD.sql} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename mallinkAdmin/src/main/resources/db/migration/{V201909182100__FREE_CARD.sql => V201909170200__FREE_CARD.sql} (100%) diff --git a/mallinkAdmin/src/main/resources/db/migration/V201909182100__FREE_CARD.sql b/mallinkAdmin/src/main/resources/db/migration/V201909170200__FREE_CARD.sql similarity index 100% rename from mallinkAdmin/src/main/resources/db/migration/V201909182100__FREE_CARD.sql rename to mallinkAdmin/src/main/resources/db/migration/V201909170200__FREE_CARD.sql From 872f3adcfa93c325640ebedc7fcc186e9b6e6ada Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Wed, 18 Sep 2019 21:20:30 +0800 Subject: [PATCH 03/72] =?UTF-8?q?[=E5=8D=A1][=E4=BF=AE=E6=94=B9]:=E5=8D=A1?= =?UTF-8?q?=E5=AF=86=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../db/migration/V201909170210__CARD_PASSWORD.sql | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 mallinkAdmin/src/main/resources/db/migration/V201909170210__CARD_PASSWORD.sql diff --git a/mallinkAdmin/src/main/resources/db/migration/V201909170210__CARD_PASSWORD.sql b/mallinkAdmin/src/main/resources/db/migration/V201909170210__CARD_PASSWORD.sql new file mode 100644 index 000000000..7685d6b31 --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V201909170210__CARD_PASSWORD.sql @@ -0,0 +1,13 @@ +DROP TABLE IF EXISTS wx_card_password; +CREATE TABLE wx_card_password( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(10) NOT NULL COMMENT '租户ID', + `coupon_id` bigint(20) NOT NULL COMMENT '卡ID', + `password` varchar(50) NOT NULL COMMENT '商户名称', + `status` smallint(2) NOT NULL COMMENT '卡密状态: 0初始1信息发出中2信息已发出3已使用', + `sended_phone` varchar(20) NULL COMMENT '卡密发送到手机', + `card_id` bigint(20) NULL COMMENT '卡包ID', + `create_date` datetime NOT NULL COMMENT '创建时间', + `update_date` datetime NOT NULL COMMENT '更新时间', + PRIMARY KEY (`id`) +) ENGINE=`InnoDB` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='卡密' CHECKSUM=0 DELAY_KEY_WRITE=0; \ No newline at end of file From af01cf2b89799e128221956b145db23121e11fb8 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Wed, 18 Sep 2019 21:28:32 +0800 Subject: [PATCH 04/72] =?UTF-8?q?[=E5=8D=A1][=E4=BF=AE=E6=94=B9]:=E5=8D=A1?= =?UTF-8?q?=E5=AF=86=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iformall/domain/po/WxCardPassword.java | 44 ++++++++++++ .../iformall/mapper/WxCardPasswordMapper.java | 17 +++++ .../service/WxCardPasswordService.java | 48 +++++++++++++ .../impl/WxCardPasswordServiceImpl.java | 54 +++++++++++++++ .../resources/mapper/WxCardPasswordMapper.xml | 68 +++++++++++++++++++ 5 files changed, 231 insertions(+) create mode 100644 mallinkService/src/main/java/com/iformall/domain/po/WxCardPassword.java create mode 100644 mallinkService/src/main/java/com/iformall/mapper/WxCardPasswordMapper.java create mode 100644 mallinkService/src/main/java/com/iformall/service/WxCardPasswordService.java create mode 100644 mallinkService/src/main/java/com/iformall/service/impl/WxCardPasswordServiceImpl.java create mode 100644 mallinkService/src/main/resources/mapper/WxCardPasswordMapper.xml diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCardPassword.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCardPassword.java new file mode 100644 index 000000000..285e5bf2e --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCardPassword.java @@ -0,0 +1,44 @@ +package com.iformall.domain.po; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.persistence.*; +import java.util.*; +import java.math.*; +import javax.persistence.Transient; +import java.util.List; +import javax.persistence.Id; +import java.io.Serializable; + +@Table(name = "wx_card_password") +@Data +@EqualsAndHashCode(callSuper = true) +public class WxCardPassword extends BaseEntity { + private static final long serialVersionUID = 1L; + + @Id + protected Long id; + + @Transient + protected List ids; + + @io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId") + private String tenantId; + @io.swagger.annotations.ApiModelProperty(value="卡ID",name="couponId") + private Long couponId; + @io.swagger.annotations.ApiModelProperty(value="商户名称",name="password") + private String password; + @io.swagger.annotations.ApiModelProperty(value="卡密状态: 0初始1信息发出中2信息已发出3已使用",name="status") + private Integer status; + @io.swagger.annotations.ApiModelProperty(value="卡密发送到手机",name="sendedPhone") + private String sendedPhone; + @io.swagger.annotations.ApiModelProperty(value="卡包ID",name="cardId") + private Long cardId; + @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/mapper/WxCardPasswordMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCardPasswordMapper.java new file mode 100644 index 000000000..73ebe9c52 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCardPasswordMapper.java @@ -0,0 +1,17 @@ +package com.iformall.mapper; + +import java.util.*; +import com.iformall.common.CommonMapper; +import org.apache.ibatis.annotations.Param; +import com.iformall.domain.po.WxCardPassword; + +public interface WxCardPasswordMapper extends CommonMapper { + + List findList(WxCardPassword wxCardPassword); + + + + + + +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxCardPasswordService.java b/mallinkService/src/main/java/com/iformall/service/WxCardPasswordService.java new file mode 100644 index 000000000..b20068e40 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/WxCardPasswordService.java @@ -0,0 +1,48 @@ +package com.iformall.service; + +import java.util.*; +import com.github.pagehelper.PageInfo; +import com.iformall.domain.po.WxCardPassword; + +public interface WxCardPasswordService { + + /** + * 根据实体查询分页列表 + * + * @param record + * @param pageIndex + * @param pageSize + * @return + */ + PageInfo listAsPage(WxCardPassword record, Integer pageIndex, Integer pageSize); + + /** + * 根据Id获得实体 + * + * @param id + * @return + */ + WxCardPassword getById(Long id); + + /** + * 保存或更新实体 + * + * @param record + */ + void saveOrUpdate(WxCardPassword record); + + /** + * 根据Id删除实体 + * + * @param id + */ + void deleteById(Long id); + + + + + + + + +} diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCardPasswordServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCardPasswordServiceImpl.java new file mode 100644 index 000000000..08d3595f0 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCardPasswordServiceImpl.java @@ -0,0 +1,54 @@ +package com.iformall.service.impl; + +import java.util.*; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.iformall.domain.po.WxCardPassword; +import com.iformall.mapper.WxCardPasswordMapper; +import com.iformall.service.WxCardPasswordService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.iformall.common.IdWorker; + +@Service +public class WxCardPasswordServiceImpl implements WxCardPasswordService { + + @Autowired + WxCardPasswordMapper wxCardPasswordMapper; + + + @Override + public PageInfo listAsPage(WxCardPassword record, Integer pageIndex, Integer pageSize) { + return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCardPasswordMapper.findList(record)); + } + + @Override + public WxCardPassword getById(Long id) { + return wxCardPasswordMapper.selectByPrimaryKey(id); + } + + @Override + public void saveOrUpdate(WxCardPassword record) { + if (record.getId() == null) { + //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); + final IdWorker idWorker = IdWorker.get(); + record.setId(idWorker.nextId()); + wxCardPasswordMapper.insertSelective(record); + } else { + wxCardPasswordMapper.updateByPrimaryKeySelective(record); + } + } + + @Override + public void deleteById(Long id) { + wxCardPasswordMapper.deleteByPrimaryKey(id); + } + + + + + + + + +} diff --git a/mallinkService/src/main/resources/mapper/WxCardPasswordMapper.xml b/mallinkService/src/main/resources/mapper/WxCardPasswordMapper.xml new file mode 100644 index 000000000..518ca8c8e --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxCardPasswordMapper.xml @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + `id`,`tenant_id`,`coupon_id`,`password`,`status`,`sended_phone`,`card_id`,`create_date`,`update_date` + + + + where 1 = 1 + + and `id` = #{id} + + + and `tenant_id` like concat('%', #{tenantId},'%') + + + and `coupon_id` = #{couponId} + + + and `password` like concat('%', #{password},'%') + + + and `status` = #{status} + + + and `sended_phone` like concat('%', #{sendedPhone},'%') + + + and `card_id` = #{cardId} + + + and `create_date` = #{createDate} + + + and `update_date` = #{updateDate} + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + + + + + + From 84bf212a6e6d20003316bd4dd7434e8e4bf0d83a Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Wed, 18 Sep 2019 21:41:35 +0800 Subject: [PATCH 05/72] =?UTF-8?q?[=E5=8D=A1][=E4=BF=AE=E6=94=B9]:=E5=8D=A1?= =?UTF-8?q?=E5=AF=86=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enums/EnumCardPasswordStatus.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumCardPasswordStatus.java diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumCardPasswordStatus.java b/mallinkService/src/main/java/com/iformall/enums/EnumCardPasswordStatus.java new file mode 100644 index 000000000..e12f05091 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumCardPasswordStatus.java @@ -0,0 +1,38 @@ +package com.iformall.enums; + +/** + * Created by Stormeye on 2019/09/17. + */ +public enum EnumCardPasswordStatus { + + + INIT(0, "初始"), + MSG_SENDING(1, "消息发送中"), + MSG_SENDED(2, "消息已发送"), + USED(3, "已使用"); + + public static EnumCardPasswordStatus getEnum(Integer code) { + for (EnumCardPasswordStatus value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumCardPasswordStatus(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} From c6b7f51615b074d80588cde1093a49b2493f26fb Mon Sep 17 00:00:00 2001 From: Burce Date: Wed, 18 Sep 2019 23:50:17 +0800 Subject: [PATCH 06/72] =?UTF-8?q?[=E4=BF=AE=E5=A4=8D]=E7=A7=AF=E5=88=86?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=BC=82=E5=B8=B8=E6=95=B0=E6=8D=AE=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/iformall/controller/sys/DataInitController.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java b/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java index 5d86ab63b..aa02b91e5 100644 --- a/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java +++ b/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java @@ -20,6 +20,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors; @@ -143,7 +144,7 @@ public class DataInitController extends BaseController { return; } //根据商户id和花费金额计算需要新增的积分 - Map result = creditHistoryService.findByMerchantIdAndSpend(wxCreditHistory.getMerchantId(), String.valueOf(wxCreditHistory.getSpend()), wxCreditHistory.getCUserId(),wxCreditHistory.getTenantId()); + Map result = creditHistoryService.findByMerchantIdAndSpend(wxCreditHistory.getMerchantId(), String.valueOf(new BigDecimal(wxCreditHistory.getSpend()/100)), wxCreditHistory.getCUserId(),wxCreditHistory.getTenantId()); //Map result = creditHistoryService.findByMerchantIdAndSpend(wxCreditHistory.getMerchantId(), String.valueOf(wxCreditHistory.getSpend()), wxCreditHistory.getCUserId(), wxCreditHistory.getTenantId()); Integer creditDB = wxCreditHistory.getCreditNum(); From 3534c521a638b308fa5497e0a00c2b9f4f8d751d Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Thu, 19 Sep 2019 09:57:41 +0800 Subject: [PATCH 07/72] =?UTF-8?q?[=E5=8D=A1=E5=AF=86][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=8D=A1=E5=88=B8=E5=AF=86=E7=A0=81=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...CARD_PASSWORD.sql => V201909170210__COUPON_PASSWORD.sql} | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename mallinkAdmin/src/main/resources/db/migration/{V201909170210__CARD_PASSWORD.sql => V201909170210__COUPON_PASSWORD.sql} (79%) diff --git a/mallinkAdmin/src/main/resources/db/migration/V201909170210__CARD_PASSWORD.sql b/mallinkAdmin/src/main/resources/db/migration/V201909170210__COUPON_PASSWORD.sql similarity index 79% rename from mallinkAdmin/src/main/resources/db/migration/V201909170210__CARD_PASSWORD.sql rename to mallinkAdmin/src/main/resources/db/migration/V201909170210__COUPON_PASSWORD.sql index 7685d6b31..c571d89e2 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V201909170210__CARD_PASSWORD.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V201909170210__COUPON_PASSWORD.sql @@ -1,5 +1,5 @@ -DROP TABLE IF EXISTS wx_card_password; -CREATE TABLE wx_card_password( +DROP TABLE IF EXISTS wx_coupon_password; +CREATE TABLE wx_coupon_password( `id` bigint(20) NOT NULL COMMENT '主键ID', `tenant_id` varchar(10) NOT NULL COMMENT '租户ID', `coupon_id` bigint(20) NOT NULL COMMENT '卡ID', @@ -10,4 +10,4 @@ CREATE TABLE wx_card_password( `create_date` datetime NOT NULL COMMENT '创建时间', `update_date` datetime NOT NULL COMMENT '更新时间', PRIMARY KEY (`id`) -) ENGINE=`InnoDB` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='卡密' CHECKSUM=0 DELAY_KEY_WRITE=0; \ No newline at end of file +) ENGINE=`InnoDB` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='卡券领取密码' CHECKSUM=0 DELAY_KEY_WRITE=0; \ No newline at end of file From ccb72f12c162539370d6bda4fd5b0c8772d50da2 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Thu, 19 Sep 2019 10:04:45 +0800 Subject: [PATCH 08/72] =?UTF-8?q?[=E5=8D=A1=E5=88=B8][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=8D=A1=E5=88=B8=E6=94=AF=E6=8C=81=E5=8D=A1=E5=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/db/migration/V201909170327__CHANGE_COUPON.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 mallinkAdmin/src/main/resources/db/migration/V201909170327__CHANGE_COUPON.sql diff --git a/mallinkAdmin/src/main/resources/db/migration/V201909170327__CHANGE_COUPON.sql b/mallinkAdmin/src/main/resources/db/migration/V201909170327__CHANGE_COUPON.sql new file mode 100644 index 000000000..a771dbf1b --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V201909170327__CHANGE_COUPON.sql @@ -0,0 +1,2 @@ +ALTER TABLE `wx_coupon` +ADD COLUMN `password_support` smallint(2) DEFAULT 0 COMMENT '是否支持卡密(0:禁用, 1支持)'; \ No newline at end of file From 22f1863fc47c1993c1309d155f195bfb87727e23 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Thu, 19 Sep 2019 10:17:08 +0800 Subject: [PATCH 09/72] =?UTF-8?q?[=E5=8D=A1=E5=88=B8][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=8D=A1=E5=88=B8=E6=98=AF=E5=90=A6=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/iformall/domain/po/WxCoupon.java | 6 +++- .../enums/EnumCouponPasswordSupport.java | 36 +++++++++++++++++++ .../main/resources/mapper/WxCouponMapper.xml | 1 + 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 mallinkService/src/main/java/com/iformall/enums/EnumCouponPasswordSupport.java diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java index 45cb95f98..de96f12b7 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java @@ -140,6 +140,9 @@ public class WxCoupon extends BaseEntity { private Integer approvalType; + @io.swagger.annotations.ApiModelProperty(value="卡密是否支持(0:不支持,1支持)",name="passwordSupport") + private Integer passwordSupport; + @Transient private String merchantParams; @@ -162,7 +165,8 @@ public class WxCoupon extends BaseEntity { @io.swagger.annotations.ApiModelProperty(value="投放渠道id",name="couponChannelId") private Long couponChannelId; - //营销分析 + @Transient + @io.swagger.annotations.ApiModelProperty(value="营销分析",name="wxCouponStatisVo") private WxCouponStatisVo wxCouponStatisVo; @io.swagger.annotations.ApiModelProperty(value="投放审批状态",name="putApplyStatus") diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumCouponPasswordSupport.java b/mallinkService/src/main/java/com/iformall/enums/EnumCouponPasswordSupport.java new file mode 100644 index 000000000..7024ae8cf --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumCouponPasswordSupport.java @@ -0,0 +1,36 @@ +package com.iformall.enums; + +/** + * Created by Stormeye on 2018/08/09. + */ +public enum EnumCouponPasswordSupport { + + NOT_SUPPORT(0, "不支持"), + SUPPORTED(1, "支持"), + ; + + public static EnumCouponPasswordSupport getEnum(Integer code) { + for (EnumCouponPasswordSupport value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumCouponPasswordSupport(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/resources/mapper/WxCouponMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponMapper.xml index 4eddf76f7..2a192f5f6 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponMapper.xml @@ -43,6 +43,7 @@ + From 75ce0b214265c9a8683bb969a05f4aff9e47b8e6 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Thu, 19 Sep 2019 12:53:13 +0800 Subject: [PATCH 10/72] =?UTF-8?q?[=E7=9F=AD=E4=BF=A1=E5=8F=91=E9=80=81][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][=E5=9B=9E=E8=B0=83=E5=9C=B0=E5=9D=80]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iformall/service/impl/WxCouponInjectServiceImpl.java | 7 ++++--- .../com/iformall/service/msg/impl/SendSmsServiceImpl.java | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponInjectServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponInjectServiceImpl.java index 3b983a92b..b101d07ca 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponInjectServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponInjectServiceImpl.java @@ -21,7 +21,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.*; -import java.util.stream.Collectors; @Service public class WxCouponInjectServiceImpl implements WxCouponInjectService { @@ -119,10 +118,12 @@ public class WxCouponInjectServiceImpl implements WxCouponInjectService { //2、通过标签 String phones = record.getPhones(); List filter = record.getFilterList(); - if (!phones.isEmpty() && !filter.isEmpty()) {//两种方式只能选其一 + if (!phones.isEmpty() && !filter.isEmpty()) { + //两种方式只能选其一 return new ResultData(ErrorCode.MSG_SEND_WAY_CHOOSE_ERROR); } - if (phones.isEmpty() && filter.isEmpty()) {//两种方式必须选其一 + if (phones.isEmpty() && filter.isEmpty()) { + //两种方式必须选其一 return new ResultData(ErrorCode.MSG_SEND_WAY_CHOOSE_ERROR); } diff --git a/mallinkService/src/main/java/com/iformall/service/msg/impl/SendSmsServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/msg/impl/SendSmsServiceImpl.java index d91116eaa..8142e8e56 100644 --- a/mallinkService/src/main/java/com/iformall/service/msg/impl/SendSmsServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/msg/impl/SendSmsServiceImpl.java @@ -87,7 +87,7 @@ public class SendSmsServiceImpl implements MsgSendService { wxMsgValidationcode.setCode(record.getDynamicContentMap().get("s6")); } - String notifyUrl = wxMsgConfig.getNotifyurl(); + String notifyUrl = wxMsgConfig.getVerifynotifyurl(); Integer modelId = wxMsgValidationcodeModel.getModelId(); String result = WiwideUtil.sendMsg(secret, bid, publickey, phone, signature, msg, notifyUrl, EnumVerifyCode.YES.getCode().toString(), modelId); JSONObject jsonObjectResult = JSONObject.parseObject(result); @@ -108,7 +108,7 @@ public class SendSmsServiceImpl implements MsgSendService { wxMsgValidationcodeMapper.insertSelective(wxMsgValidationcode); wxMsgValidationcodeService.addMsgCallback(wxMsgValidationcode,batchNo); //扣减剩余条数 - wxMsgConfig.setRemains(1l); + wxMsgConfig.setRemains(1L); wxMsgConfigMapper.updateRemains(wxMsgConfig); }else{ throw new MallinkException(1001,"运营商返回失败:"+result); From 15c1007c768d96cbcb062871f6da405e80666c67 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Thu, 19 Sep 2019 13:22:43 +0800 Subject: [PATCH 11/72] =?UTF-8?q?[=E7=A7=AF=E5=88=86=E5=8F=98=E6=9B=B4?= =?UTF-8?q?=E8=AE=B0=E5=BD=95][=E4=BF=AE=E6=94=B9][=E6=80=BB=E7=A7=AF?= =?UTF-8?q?=E5=88=86=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/WxCreditHistoryMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml b/mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml index acbddbc96..cf24ed7be 100644 --- a/mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml @@ -213,7 +213,7 @@ select credit.credit_amount as amount,credit.c_user_id from wx_credit_history credit INNER join (select max(create_date) create_date,credit.c_user_id from wx_credit_history credit group by credit.c_user_id) credit_max_id - on credit.create_date=credit_max_id.create_date + on credit.create_date=credit_max_id.create_date and credit.c_user_id=credit_max_id.c_user_id INNER JOIN wx_c_user_basic_info basic ON basic.id = credit.c_user_id LEFT JOIN wx_merchant merchant ON credit.merchant_id = merchant.id From 5a0f57de88f7b0b1f5ed2b9ea03351fad7ebec0a Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Thu, 19 Sep 2019 10:31:39 +0800 Subject: [PATCH 12/72] =?UTF-8?q?[=E5=8D=A1=E5=88=B8][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=8D=A1=E5=AF=86=E7=9B=B8=E5=85=B3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ardPassword.java => WxCouponPassword.java} | 9 ++-- .../iformall/mapper/WxCardPasswordMapper.java | 17 ------ .../mapper/WxCouponPasswordMapper.java | 16 ++++++ ...vice.java => WxCouponPasswordService.java} | 11 ++-- .../impl/WxCardPasswordServiceImpl.java | 54 ------------------- .../impl/WxCouponPasswordServiceImpl.java | 53 ++++++++++++++++++ .../service/impl/WxCouponServiceImpl.java | 4 ++ ...dMapper.xml => WxCouponPasswordMapper.xml} | 6 +-- 8 files changed, 84 insertions(+), 86 deletions(-) rename mallinkService/src/main/java/com/iformall/domain/po/{WxCardPassword.java => WxCouponPassword.java} (82%) delete mode 100644 mallinkService/src/main/java/com/iformall/mapper/WxCardPasswordMapper.java create mode 100644 mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java rename mallinkService/src/main/java/com/iformall/service/{WxCardPasswordService.java => WxCouponPasswordService.java} (63%) delete mode 100644 mallinkService/src/main/java/com/iformall/service/impl/WxCardPasswordServiceImpl.java create mode 100644 mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java rename mallinkService/src/main/resources/mapper/{WxCardPasswordMapper.xml => WxCouponPasswordMapper.xml} (92%) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCardPassword.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java similarity index 82% rename from mallinkService/src/main/java/com/iformall/domain/po/WxCardPassword.java rename to mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java index 285e5bf2e..dfd0616c6 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCardPassword.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java @@ -5,17 +5,14 @@ import lombok.EqualsAndHashCode; import javax.persistence.*; import java.util.*; -import java.math.*; import javax.persistence.Transient; import java.util.List; import javax.persistence.Id; -import java.io.Serializable; -@Table(name = "wx_card_password") +@Table(name = "wx_coupon_password") @Data @EqualsAndHashCode(callSuper = true) -public class WxCardPassword extends BaseEntity { - private static final long serialVersionUID = 1L; +public class WxCouponPassword extends BaseEntity { @Id protected Long id; @@ -33,7 +30,7 @@ public class WxCardPassword extends BaseEntity { private Integer status; @io.swagger.annotations.ApiModelProperty(value="卡密发送到手机",name="sendedPhone") private String sendedPhone; - @io.swagger.annotations.ApiModelProperty(value="卡包ID",name="cardId") + @io.swagger.annotations.ApiModelProperty(value="卡包ID(coupon_order_id/card_id)",name="cardId") private Long cardId; @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate") private Date createDate; diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCardPasswordMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCardPasswordMapper.java deleted file mode 100644 index 73ebe9c52..000000000 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCardPasswordMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.iformall.mapper; - -import java.util.*; -import com.iformall.common.CommonMapper; -import org.apache.ibatis.annotations.Param; -import com.iformall.domain.po.WxCardPassword; - -public interface WxCardPasswordMapper extends CommonMapper { - - List findList(WxCardPassword wxCardPassword); - - - - - - -} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java new file mode 100644 index 000000000..b50173d8c --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java @@ -0,0 +1,16 @@ +package com.iformall.mapper; + +import java.util.*; +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.WxCouponPassword; + +public interface WxCouponPasswordMapper extends CommonMapper { + + List findList(WxCouponPassword wxCouponPassword); + + + + + + +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxCardPasswordService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponPasswordService.java similarity index 63% rename from mallinkService/src/main/java/com/iformall/service/WxCardPasswordService.java rename to mallinkService/src/main/java/com/iformall/service/WxCouponPasswordService.java index b20068e40..0482007d6 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCardPasswordService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponPasswordService.java @@ -1,10 +1,9 @@ package com.iformall.service; -import java.util.*; import com.github.pagehelper.PageInfo; -import com.iformall.domain.po.WxCardPassword; +import com.iformall.domain.po.WxCouponPassword; -public interface WxCardPasswordService { +public interface WxCouponPasswordService { /** * 根据实体查询分页列表 @@ -14,7 +13,7 @@ public interface WxCardPasswordService { * @param pageSize * @return */ - PageInfo listAsPage(WxCardPassword record, Integer pageIndex, Integer pageSize); + PageInfo listAsPage(WxCouponPassword record, Integer pageIndex, Integer pageSize); /** * 根据Id获得实体 @@ -22,14 +21,14 @@ public interface WxCardPasswordService { * @param id * @return */ - WxCardPassword getById(Long id); + WxCouponPassword getById(Long id); /** * 保存或更新实体 * * @param record */ - void saveOrUpdate(WxCardPassword record); + void saveOrUpdate(WxCouponPassword record); /** * 根据Id删除实体 diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCardPasswordServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCardPasswordServiceImpl.java deleted file mode 100644 index 08d3595f0..000000000 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCardPasswordServiceImpl.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.iformall.service.impl; - -import java.util.*; -import com.github.pagehelper.PageHelper; -import com.github.pagehelper.PageInfo; -import com.iformall.domain.po.WxCardPassword; -import com.iformall.mapper.WxCardPasswordMapper; -import com.iformall.service.WxCardPasswordService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.iformall.common.IdWorker; - -@Service -public class WxCardPasswordServiceImpl implements WxCardPasswordService { - - @Autowired - WxCardPasswordMapper wxCardPasswordMapper; - - - @Override - public PageInfo listAsPage(WxCardPassword record, Integer pageIndex, Integer pageSize) { - return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCardPasswordMapper.findList(record)); - } - - @Override - public WxCardPassword getById(Long id) { - return wxCardPasswordMapper.selectByPrimaryKey(id); - } - - @Override - public void saveOrUpdate(WxCardPassword record) { - if (record.getId() == null) { - //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); - final IdWorker idWorker = IdWorker.get(); - record.setId(idWorker.nextId()); - wxCardPasswordMapper.insertSelective(record); - } else { - wxCardPasswordMapper.updateByPrimaryKeySelective(record); - } - } - - @Override - public void deleteById(Long id) { - wxCardPasswordMapper.deleteByPrimaryKey(id); - } - - - - - - - - -} diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java new file mode 100644 index 000000000..dfdb4925d --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java @@ -0,0 +1,53 @@ +package com.iformall.service.impl; + +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.iformall.domain.po.WxCouponPassword; +import com.iformall.mapper.WxCouponPasswordMapper; +import com.iformall.service.WxCouponPasswordService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.iformall.common.IdWorker; + +@Service +public class WxCouponPasswordServiceImpl implements WxCouponPasswordService { + + @Autowired + WxCouponPasswordMapper wxCouponPasswordMapper; + + + @Override + public PageInfo listAsPage(WxCouponPassword record, Integer pageIndex, Integer pageSize) { + return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponPasswordMapper.findList(record)); + } + + @Override + public WxCouponPassword getById(Long id) { + return wxCouponPasswordMapper.selectByPrimaryKey(id); + } + + @Override + public void saveOrUpdate(WxCouponPassword record) { + if (record.getId() == null) { + //record.setId(UUID.randomUUID().toString().replaceAll("-", "")); + final IdWorker idWorker = IdWorker.get(); + record.setId(idWorker.nextId()); + wxCouponPasswordMapper.insertSelective(record); + } else { + wxCouponPasswordMapper.updateByPrimaryKeySelective(record); + } + } + + @Override + public void deleteById(Long id) { + wxCouponPasswordMapper.deleteByPrimaryKey(id); + } + + + + + + + + +} 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 a26b7c95e..8cc6436dc 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java @@ -64,6 +64,8 @@ import java.util.stream.Collectors; @Autowired WxCardInfoMapper wxCardInfoMapper; + @Autowired + @Override public ResultData list(WxCoupon wxCoupon, Integer pageNum, Integer pageSize) { if (null == wxCoupon) wxCoupon = new WxCoupon(); @@ -410,6 +412,8 @@ import java.util.stream.Collectors; wxOrderService.updateOrderGroupStatusByCouponId(record.getId(), record.getTenantId(), EnumOrderStatus.ORDER_STATUS_COOPERATING_CANCEL.getCode()); //修改卡状态 wxCardInfoMapper.updateTransferStatusByCouponId(record.getId()); + // 下架相关卡密 + } record.setUpdateDate(new Date()); diff --git a/mallinkService/src/main/resources/mapper/WxCardPasswordMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml similarity index 92% rename from mallinkService/src/main/resources/mapper/WxCardPasswordMapper.xml rename to mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml index 518ca8c8e..cd76956d5 100644 --- a/mallinkService/src/main/resources/mapper/WxCardPasswordMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml @@ -1,7 +1,7 @@ - - + + @@ -55,7 +55,7 @@ order by ${sortColumns} - select from wx_card_password From 76917394530e80652e431bf196f8d0ad1b04ef06 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Thu, 19 Sep 2019 11:29:09 +0800 Subject: [PATCH 13/72] =?UTF-8?q?[=E5=8D=A1=E5=88=B8][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=8D=A1=E5=AF=86=E8=BF=87=E6=9C=9F=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../db/migration/V201909170410__CHANGE_COUPON_PASSWORD.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 mallinkAdmin/src/main/resources/db/migration/V201909170410__CHANGE_COUPON_PASSWORD.sql diff --git a/mallinkAdmin/src/main/resources/db/migration/V201909170410__CHANGE_COUPON_PASSWORD.sql b/mallinkAdmin/src/main/resources/db/migration/V201909170410__CHANGE_COUPON_PASSWORD.sql new file mode 100644 index 000000000..080497290 --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V201909170410__CHANGE_COUPON_PASSWORD.sql @@ -0,0 +1,2 @@ +ALTER TABLE `wx_coupon_password` +ADD COLUMN `expire_date` datetime NULL COMMENT '卡密过期时间(默认发送后一个月内过期)'; \ No newline at end of file From 85a994cd5bb0e6d15b9ba27ad6effeca8ba3cd7d Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Thu, 19 Sep 2019 13:30:40 +0800 Subject: [PATCH 14/72] =?UTF-8?q?[=E5=8D=A1=E5=88=B8][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=8D=A1=E5=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/db/migration/V201909170210__COUPON_PASSWORD.sql | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mallinkAdmin/src/main/resources/db/migration/V201909170210__COUPON_PASSWORD.sql b/mallinkAdmin/src/main/resources/db/migration/V201909170210__COUPON_PASSWORD.sql index c571d89e2..a24c03f4b 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V201909170210__COUPON_PASSWORD.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V201909170210__COUPON_PASSWORD.sql @@ -2,12 +2,14 @@ DROP TABLE IF EXISTS wx_coupon_password; CREATE TABLE wx_coupon_password( `id` bigint(20) NOT NULL COMMENT '主键ID', `tenant_id` varchar(10) NOT NULL COMMENT '租户ID', - `coupon_id` bigint(20) NOT NULL COMMENT '卡ID', + `coupon_id` bigint(20) NOT NULL COMMENT '卡券ID', + `coupon_short` VARCHAR(2) NULL COMMENT '券短ID', `password` varchar(50) NOT NULL COMMENT '商户名称', `status` smallint(2) NOT NULL COMMENT '卡密状态: 0初始1信息发出中2信息已发出3已使用', `sended_phone` varchar(20) NULL COMMENT '卡密发送到手机', `card_id` bigint(20) NULL COMMENT '卡包ID', `create_date` datetime NOT NULL COMMENT '创建时间', `update_date` datetime NOT NULL COMMENT '更新时间', + `expire_date` datetime NULL COMMENT '卡密过期时间(默认发送后一个月内过期)', PRIMARY KEY (`id`) ) ENGINE=`InnoDB` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='卡券领取密码' CHECKSUM=0 DELAY_KEY_WRITE=0; \ No newline at end of file From f16c946cadb78e5158eda735a6d2030e7938b92e Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Thu, 19 Sep 2019 13:32:34 +0800 Subject: [PATCH 15/72] =?UTF-8?q?[=E5=8D=A1=E5=88=B8][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=8D=A1=E5=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../db/migration/V201909170410__CHANGE_COUPON_PASSWORD.sql | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 mallinkAdmin/src/main/resources/db/migration/V201909170410__CHANGE_COUPON_PASSWORD.sql diff --git a/mallinkAdmin/src/main/resources/db/migration/V201909170410__CHANGE_COUPON_PASSWORD.sql b/mallinkAdmin/src/main/resources/db/migration/V201909170410__CHANGE_COUPON_PASSWORD.sql deleted file mode 100644 index 080497290..000000000 --- a/mallinkAdmin/src/main/resources/db/migration/V201909170410__CHANGE_COUPON_PASSWORD.sql +++ /dev/null @@ -1,2 +0,0 @@ -ALTER TABLE `wx_coupon_password` -ADD COLUMN `expire_date` datetime NULL COMMENT '卡密过期时间(默认发送后一个月内过期)'; \ No newline at end of file From bc161ff7fba3ff638190039c2b1a1c7daab341d1 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Thu, 19 Sep 2019 13:44:32 +0800 Subject: [PATCH 16/72] =?UTF-8?q?[=E5=8D=A1=E5=88=B8][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=8D=A1=E5=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iformall/domain/po/WxCouponPassword.java | 6 ++- ...tus.java => EnumCouponPasswordStatus.java} | 11 ++-- .../mapper/WxCouponPasswordMapper.java | 4 +- .../impl/WxCouponPasswordServiceImpl.java | 52 ++++++++++++++++++- .../service/impl/WxCouponServiceImpl.java | 13 +++-- .../mapper/WxCouponPasswordMapper.xml | 31 ++++++++--- 6 files changed, 95 insertions(+), 22 deletions(-) rename mallinkService/src/main/java/com/iformall/enums/{EnumCardPasswordStatus.java => EnumCouponPasswordStatus.java} (66%) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java index dfd0616c6..2ea4dbab4 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java @@ -22,8 +22,10 @@ public class WxCouponPassword extends BaseEntity { @io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId") private String tenantId; - @io.swagger.annotations.ApiModelProperty(value="卡ID",name="couponId") + @io.swagger.annotations.ApiModelProperty(value="卡券ID",name="couponId") private Long couponId; + @io.swagger.annotations.ApiModelProperty(value="卡券短ID",name="couponShort") + private String couponShort; @io.swagger.annotations.ApiModelProperty(value="商户名称",name="password") private String password; @io.swagger.annotations.ApiModelProperty(value="卡密状态: 0初始1信息发出中2信息已发出3已使用",name="status") @@ -36,6 +38,8 @@ public class WxCouponPassword extends BaseEntity { private Date createDate; @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") private Date updateDate; + @io.swagger.annotations.ApiModelProperty(value="过期时间",name="expireDate") + private Date expireDate; } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumCardPasswordStatus.java b/mallinkService/src/main/java/com/iformall/enums/EnumCouponPasswordStatus.java similarity index 66% rename from mallinkService/src/main/java/com/iformall/enums/EnumCardPasswordStatus.java rename to mallinkService/src/main/java/com/iformall/enums/EnumCouponPasswordStatus.java index e12f05091..6b99f6986 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumCardPasswordStatus.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumCouponPasswordStatus.java @@ -3,16 +3,17 @@ package com.iformall.enums; /** * Created by Stormeye on 2019/09/17. */ -public enum EnumCardPasswordStatus { +public enum EnumCouponPasswordStatus { INIT(0, "初始"), MSG_SENDING(1, "消息发送中"), MSG_SENDED(2, "消息已发送"), - USED(3, "已使用"); + USED(3, "已使用"), + CANCEL(4, "已作废"); - public static EnumCardPasswordStatus getEnum(Integer code) { - for (EnumCardPasswordStatus value : values()) { + public static EnumCouponPasswordStatus getEnum(Integer code) { + for (EnumCouponPasswordStatus value : values()) { if (value.getCode().equals(code)) { return value; } @@ -23,7 +24,7 @@ public enum EnumCardPasswordStatus { private Integer code; private String message; - EnumCardPasswordStatus(Integer code, String message) { + EnumCouponPasswordStatus(Integer code, String message) { this.code = code; this.message = message; } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java index b50173d8c..b1c032cf9 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java @@ -7,9 +7,9 @@ import com.iformall.domain.po.WxCouponPassword; public interface WxCouponPasswordMapper extends CommonMapper { List findList(WxCouponPassword wxCouponPassword); - - + int updateStatusByCouponId(Long couponId); + List findCouponGroupList(WxCouponPassword wxCouponPassword); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java index dfdb4925d..eab4c84d7 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java @@ -9,6 +9,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + @Service public class WxCouponPasswordServiceImpl implements WxCouponPasswordService { @@ -42,8 +46,52 @@ public class WxCouponPasswordServiceImpl implements WxCouponPasswordService { public void deleteById(Long id) { wxCouponPasswordMapper.deleteByPrimaryKey(id); } - - + + public void mkPasswords(String tenantId, Long couponId, Integer inventory) { + // 获取 coupon short 1 + int couponShort = 0; + // 随机字符 + String strAll = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; + Random rand = new Random(); + List pwList = new ArrayList<>(); + while (true) { + StringBuilder sb = new StringBuilder(); + for (int j = 0; j < 9; j++) { + int f = (int) (Math.random() * 62); + sb.append(strAll.charAt(f)); + if (j == 4) { + sb.append(strAll.charAt(couponShort)); + } + } + String pwd = sb.toString(); + if (!pwList.stream().anyMatch(oPwd->oPwd.equals(pwd))) { + pwList.add(pwd); + } else { + continue; + } + + if (pwList.size() >= inventory) { + break; + } + } + // save to db + for (int i=0;i + + - `id`,`tenant_id`,`coupon_id`,`password`,`status`,`sended_phone`,`card_id`,`create_date`,`update_date` + `id`,`tenant_id`,`coupon_id`,`coupon_short`,`password`,`status`,`sended_phone`,`card_id`,`create_date`,`update_date`,`expire_date` @@ -23,11 +25,14 @@ and `id` = #{id} - and `tenant_id` like concat('%', #{tenantId},'%') + and `tenant_id` = #{tenantId} and `coupon_id` = #{couponId} - + + + and `coupon_short` = #{couponShort} + and `password` like concat('%', #{password},'%') @@ -45,7 +50,10 @@ and `update_date` = #{updateDate} - + + + and `expire_date` = #{expireDate} + and id in @@ -59,10 +67,17 @@ select from wx_card_password - - - - + + + update wx_card_password set status=4, update_date=now() + where status != 3 and tenant_id = #{tenantId} and coupon_id=#{couponId} + + + From 960ca22db0523040a244dfa128ba9393d5c27ce8 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Thu, 19 Sep 2019 14:16:19 +0800 Subject: [PATCH 17/72] =?UTF-8?q?[=E5=8D=A1=E5=88=B8][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=8D=A1=E5=AF=86=E6=89=B9=E9=87=8F=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/market/WxCouponController.java | 1 + .../mapper/WxCouponPasswordMapper.java | 1 + .../service/WxCouponPasswordService.java | 8 ++++ .../impl/WxCouponPasswordServiceImpl.java | 42 +++++++++++++------ .../service/impl/WxCouponServiceImpl.java | 5 ++- .../mapper/WxCouponPasswordMapper.xml | 19 +++++++-- 6 files changed, 60 insertions(+), 16 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java index 40871032b..b5fad77ba 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java @@ -79,6 +79,7 @@ public class WxCouponController extends BaseController { @SystemControllerLog(description = "券投放-新增") public ResultData add(@RequestBody WxCoupon wxCoupon) { logger.debug("[" + getIpAddr() + "] WxCouponController::add"); + wxCoupon.setTenantId(getTenantId()); ResultData resultData = wxCouponService.saveOrUpdate(wxCoupon); if(resultData.code != 200){ diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java index b1c032cf9..b7338242d 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java @@ -8,6 +8,7 @@ public interface WxCouponPasswordMapper extends CommonMapper findList(WxCouponPassword wxCouponPassword); + void insertCouponPasswds(List pwdlist); int updateStatusByCouponId(Long couponId); List findCouponGroupList(WxCouponPassword wxCouponPassword); diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponPasswordService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponPasswordService.java index 0482007d6..8cfef2b3b 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponPasswordService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponPasswordService.java @@ -36,6 +36,14 @@ public interface WxCouponPasswordService { * @param id */ void deleteById(Long id); + + /** + * 生产卡密 + * @param tenantId + * @param couponId + * @param inventory + */ + void mkPasswords(String tenantId, Long couponId, Integer inventory); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java index eab4c84d7..427898dbf 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java @@ -3,6 +3,7 @@ package com.iformall.service.impl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxCouponPassword; +import com.iformall.enums.EnumCouponPasswordStatus; import com.iformall.mapper.WxCouponPasswordMapper; import com.iformall.service.WxCouponPasswordService; import org.springframework.beans.factory.annotation.Autowired; @@ -10,6 +11,7 @@ import org.springframework.stereotype.Service; import com.iformall.common.IdWorker; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Random; @@ -47,11 +49,18 @@ public class WxCouponPasswordServiceImpl implements WxCouponPasswordService { wxCouponPasswordMapper.deleteByPrimaryKey(id); } + @Override public void mkPasswords(String tenantId, Long couponId, Integer inventory) { - // 获取 coupon short 1 - int couponShort = 0; - // 随机字符 String strAll = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; + // 1.获取 coupon short 1 + int couponShort = 0; + String couponShortStr = "0"; + WxCouponPassword pwQ = new WxCouponPassword(); + pwQ.setTenantId(tenantId); + List pwgList = wxCouponPasswordMapper.findCouponGroupList(pwQ); + couponShort = pwgList.size(); + couponShortStr = String.valueOf(strAll.charAt(couponShort)); + // 2.随机字符 Random rand = new Random(); List pwList = new ArrayList<>(); while (true) { @@ -60,7 +69,7 @@ public class WxCouponPasswordServiceImpl implements WxCouponPasswordService { int f = (int) (Math.random() * 62); sb.append(strAll.charAt(f)); if (j == 4) { - sb.append(strAll.charAt(couponShort)); + sb.append(couponShortStr); } } String pwd = sb.toString(); @@ -74,12 +83,26 @@ public class WxCouponPasswordServiceImpl implements WxCouponPasswordService { break; } } - // save to db + // 3. save to db + final IdWorker idWorker = IdWorker.get(); + Date curDate = new Date(); + List couponPasswords = new ArrayList<>(); for (int i=0;i + + INSERT INTO wx_coupon_password (`id`,`tenant_id`,`coupon_id`,`coupon_short`,`password`,`status`,`create_date`,`update_date`) + VALUES + + ( + #{item.id},#{item.tenantId},#{item.couponId},#{item.couponShort},#{item.password},#{item.status}, + #{item.createDate},#{item.updateDate} + ) + + + - update wx_card_password set status=4, update_date=now() + update wx_coupon_password + set status=4, update_date=now() where status != 3 and tenant_id = #{tenantId} and coupon_id=#{couponId} From 0b33a88ab105fb808c7ec471fac4d53222c8fa0b Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Thu, 19 Sep 2019 14:40:04 +0800 Subject: [PATCH 18/72] =?UTF-8?q?[=E5=8D=A1=E5=88=B8][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=8D=A1=E5=AF=86=E6=89=B9=E9=87=8F=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/WxCouponPasswordMapper.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml index 52e478268..d68e8c1bb 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml @@ -69,11 +69,11 @@ - INSERT INTO wx_coupon_password (`id`,`tenant_id`,`coupon_id`,`coupon_short`,`password`,`status`,`create_date`,`update_date`) + INSERT INTO wx_coupon_password (`id`,`coupon_id`,`coupon_short`,`password`,`status`,`create_date`,`update_date`) VALUES ( - #{item.id},#{item.tenantId},#{item.couponId},#{item.couponShort},#{item.password},#{item.status}, + #{item.id},#{item.couponId},#{item.couponShort},#{item.password},#{item.status}, #{item.createDate},#{item.updateDate} ) From 6bcb67f93848fb7b79b246589dd31ae6c52533c7 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Thu, 19 Sep 2019 16:06:30 +0800 Subject: [PATCH 19/72] =?UTF-8?q?[=E7=B3=BB=E7=BB=9F=E5=8F=91=E5=8D=A1][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][=E4=B8=9A=E5=8A=A1=E9=80=BB=E8=BE=91]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../market/WxCouponPasswordController.java | 62 +++++++++++++++++++ .../market/WxCouponPresentController.java | 54 ++++++++++++++++ .../iformall/domain/po/WxCouponPassword.java | 8 ++- .../iformall/domain/po/WxCouponPresent.java | 46 ++++++++++++++ .../vo/WxCouponPasswordCountInfoVO.java | 14 +++++ .../mapper/WxCouponPasswordMapper.java | 8 ++- .../mapper/WxCouponPresentMapper.java | 13 ++++ .../service/WxCouponPasswordService.java | 13 ++-- .../service/WxCouponPresentService.java | 15 +++++ .../impl/WxCouponPasswordServiceImpl.java | 10 ++- .../impl/WxCouponPresentServiceImpl.java | 31 ++++++++++ .../mapper/WxCouponPasswordMapper.xml | 26 +++++++- .../mapper/WxCouponPresentMapper.xml | 57 +++++++++++++++++ 13 files changed, 342 insertions(+), 15 deletions(-) create mode 100644 mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPasswordController.java create mode 100644 mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPresentController.java create mode 100644 mallinkService/src/main/java/com/iformall/domain/po/WxCouponPresent.java create mode 100644 mallinkService/src/main/java/com/iformall/domain/vo/WxCouponPasswordCountInfoVO.java create mode 100644 mallinkService/src/main/java/com/iformall/mapper/WxCouponPresentMapper.java create mode 100644 mallinkService/src/main/java/com/iformall/service/WxCouponPresentService.java create mode 100644 mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java create mode 100644 mallinkService/src/main/resources/mapper/WxCouponPresentMapper.xml diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPasswordController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPasswordController.java new file mode 100644 index 000000000..ebcd99cf2 --- /dev/null +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPasswordController.java @@ -0,0 +1,62 @@ +package com.iformall.controller.market; + +import com.github.pagehelper.PageInfo; +import com.iformall.annotation.SystemControllerLog; +import com.iformall.common.Result; +import com.iformall.common.ResultData; +import com.iformall.controller.base.BaseController; +import com.iformall.domain.po.BaseEntity; +import com.iformall.domain.po.WxCouponPassword; +import com.iformall.domain.vo.WxCouponPasswordCountInfoVO; +import com.iformall.service.WxCouponPasswordService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +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.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * @author gongbiao + */ +@RestController +@RequestMapping("couponPassword") +@Api(description = "免费卡接口") +public class WxCouponPasswordController extends BaseController { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private WxCouponPasswordService wxCouponPasswordService; + + @ApiOperation("分页列表接口") + @GetMapping("/list") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) + @SystemControllerLog(description = "列表") + public ResultData list(@ModelAttribute WxCouponPassword wxCouponPassword, Integer pageNum, Integer pageSize) { + logger.debug("[" + getIpAddr() + "] WxCouponPasswordController::list"); + wxCouponPassword.setTenantId(getTenantId()); + wxCouponPassword.setSortColumns(BaseEntity.SortField.CreateDate_DESC, BaseEntity.SortField.Id_DESC); + final PageInfo page = wxCouponPasswordService.listAsPage(wxCouponPassword, pageNum, pageSize); + return new ResultData(page); + } + + @ApiOperation("可发送卡数据") + @GetMapping("/findCouponList") + @SystemControllerLog(description = "可发送卡数据") + public ResultData findCouponList() { + logger.debug("[" + getIpAddr() + "] WxCouponPasswordController::findCouponList"); + List voList = wxCouponPasswordService.findCouponList(getTenantId()); + return new ResultData(Result.SUCCESS, "查询成功", voList); + } + + +} diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPresentController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPresentController.java new file mode 100644 index 000000000..dc1d3663d --- /dev/null +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPresentController.java @@ -0,0 +1,54 @@ +package com.iformall.controller.market; + +import com.github.pagehelper.PageInfo; +import com.iformall.annotation.SystemControllerLog; +import com.iformall.common.ResultData; +import com.iformall.controller.base.BaseController; +import com.iformall.domain.po.BaseEntity; +import com.iformall.domain.po.WxCouponPresent; +import com.iformall.service.WxCouponPresentService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * @author gongbiao + */ +@RestController +@RequestMapping("couponPrsent") +@Api(description = "卡投放接口") +public class WxCouponPresentController extends BaseController { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private WxCouponPresentService wxCouponPresentService; + + @ApiOperation("分页列表接口") + @GetMapping("/list") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) + @SystemControllerLog(description = "列表") + public ResultData list(@ModelAttribute WxCouponPresent wxCouponPresent, Integer pageNum, Integer pageSize) { + logger.debug("[" + getIpAddr() + "] WxCouponPresentController::list"); + wxCouponPresent.setTenantId(getTenantId()); + wxCouponPresent.setSortColumns(BaseEntity.SortField.CreateTime_DESC, BaseEntity.SortField.Id_DESC); + final PageInfo page = wxCouponPresentService.listAsPage(wxCouponPresent, pageNum, pageSize); + return new ResultData(page); + } + + @ApiOperation("根据id查询接口") + @GetMapping("/findById") + @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) + @SystemControllerLog(description = "查询") + public ResultData findById(@RequestParam Long id) { + logger.debug("[" + getIpAddr() + "] WxCouponPresentController::findById"); + return new ResultData(wxCouponPresentService.findById(id)); + } + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java index 2ea4dbab4..46266be8c 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java @@ -3,11 +3,11 @@ package com.iformall.domain.po; import lombok.Data; import lombok.EqualsAndHashCode; -import javax.persistence.*; -import java.util.*; +import javax.persistence.Id; +import javax.persistence.Table; import javax.persistence.Transient; +import java.util.Date; import java.util.List; -import javax.persistence.Id; @Table(name = "wx_coupon_password") @Data @@ -41,5 +41,7 @@ public class WxCouponPassword extends BaseEntity { @io.swagger.annotations.ApiModelProperty(value="过期时间",name="expireDate") private Date expireDate; + @Transient + private String statusStr; } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPresent.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPresent.java new file mode 100644 index 000000000..9ceac242d --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPresent.java @@ -0,0 +1,46 @@ +package com.iformall.domain.po; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Transient; +import java.util.Date; +import java.util.List; + +@Table(name = "wx_coupon_present") +@Data +@EqualsAndHashCode(callSuper = true) +public class WxCouponPresent extends BaseEntity { + + @Id + protected Long id; + + @Transient + protected List ids; + + @io.swagger.annotations.ApiModelProperty(value = "租户ID", name = "tenantId") + private String tenantId; + @io.swagger.annotations.ApiModelProperty(value = "用户ID", name = "userId") + private Long userId; + @io.swagger.annotations.ApiModelProperty(value = "卡券ID", name = "couponId") + private Long couponId; + @io.swagger.annotations.ApiModelProperty(value = "卡券名称", name = "couponName") + private String couponName; + @io.swagger.annotations.ApiModelProperty(value = "手机", name = "phones") + private String phones; + @io.swagger.annotations.ApiModelProperty(value = "创建时间", name = "createDate") + private Date createTime; + @io.swagger.annotations.ApiModelProperty(value = "更新时间", name = "updateDate") + private Date updateTime; + + + @Transient + protected Date sendTimeStart; + + @Transient + protected Date sendTimeEnd; + + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponPasswordCountInfoVO.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponPasswordCountInfoVO.java new file mode 100644 index 000000000..acbd15f6c --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxCouponPasswordCountInfoVO.java @@ -0,0 +1,14 @@ +package com.iformall.domain.vo; + +import lombok.Data; + +/** + * @author gongbiao + */ +@Data +public class WxCouponPasswordCountInfoVO { + + private Long couponId; + private String couponName; + private Long couponCount; +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java index b7338242d..72649d2a1 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java @@ -1,8 +1,10 @@ package com.iformall.mapper; -import java.util.*; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxCouponPassword; +import com.iformall.domain.vo.WxCouponPasswordCountInfoVO; + +import java.util.List; public interface WxCouponPasswordMapper extends CommonMapper { @@ -11,7 +13,7 @@ public interface WxCouponPasswordMapper extends CommonMapper pwdlist); int updateStatusByCouponId(Long couponId); List findCouponGroupList(WxCouponPassword wxCouponPassword); - - + + List findCouponCountInfo(WxCouponPassword wxCouponPassword); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponPresentMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponPresentMapper.java new file mode 100644 index 000000000..aefc18519 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponPresentMapper.java @@ -0,0 +1,13 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.WxCouponPassword; +import com.iformall.domain.po.WxCouponPresent; + +import java.util.List; + +public interface WxCouponPresentMapper extends CommonMapper { + + List findList(WxCouponPresent wxCouponPresent); + +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponPasswordService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponPasswordService.java index 8cfef2b3b..1db8e8bcc 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponPasswordService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponPasswordService.java @@ -2,6 +2,9 @@ package com.iformall.service; import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxCouponPassword; +import com.iformall.domain.vo.WxCouponPasswordCountInfoVO; + +import java.util.List; public interface WxCouponPasswordService { @@ -44,12 +47,8 @@ public interface WxCouponPasswordService { * @param inventory */ void mkPasswords(String tenantId, Long couponId, Integer inventory); - - - - - - - + + List findCouponList(String tenantId); + } diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponPresentService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponPresentService.java new file mode 100644 index 000000000..dfa7f8ddc --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponPresentService.java @@ -0,0 +1,15 @@ +package com.iformall.service; + +import com.github.pagehelper.PageInfo; +import com.iformall.domain.po.WxCouponPresent; + +/** + * @author gongbiao + */ +public interface WxCouponPresentService { + + + PageInfo listAsPage(WxCouponPresent wxCouponPresent, Integer pageNum, Integer pageSize); + + WxCouponPresent findById(Long id); +} diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java index 427898dbf..4db59340b 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java @@ -2,13 +2,14 @@ package com.iformall.service.impl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.iformall.common.IdWorker; import com.iformall.domain.po.WxCouponPassword; import com.iformall.enums.EnumCouponPasswordStatus; +import com.iformall.domain.vo.WxCouponPasswordCountInfoVO; import com.iformall.mapper.WxCouponPasswordMapper; import com.iformall.service.WxCouponPasswordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.iformall.common.IdWorker; import java.util.ArrayList; import java.util.Date; @@ -49,6 +50,13 @@ public class WxCouponPasswordServiceImpl implements WxCouponPasswordService { wxCouponPasswordMapper.deleteByPrimaryKey(id); } + @Override + public List findCouponList(String tenantId) { + WxCouponPassword wxCouponPassword = new WxCouponPassword(); + wxCouponPassword.setTenantId(tenantId); + return wxCouponPasswordMapper.findCouponCountInfo(wxCouponPassword); + } + @Override public void mkPasswords(String tenantId, Long couponId, Integer inventory) { String strAll = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java new file mode 100644 index 000000000..f8396f59e --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java @@ -0,0 +1,31 @@ +package com.iformall.service.impl; + +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.iformall.domain.po.WxCouponPresent; +import com.iformall.mapper.WxCouponPresentMapper; +import com.iformall.service.WxCouponPresentService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @author gongbiao + */ +@Service +public class WxCouponPresentServiceImpl implements WxCouponPresentService { + + @Autowired + WxCouponPresentMapper wxCouponPresentMapper; + + + @Override + public PageInfo listAsPage(WxCouponPresent record, Integer pageIndex, Integer pageSize) { + return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponPresentMapper.findList(record)); + } + + @Override + public WxCouponPresent findById(Long id) { + return wxCouponPresentMapper.selectByPrimaryKey(id); + } + +} diff --git a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml index d68e8c1bb..40b069abc 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml @@ -59,7 +59,12 @@ #{idItem} - + + + + and status in (${statusStr}) + + order by ${sortColumns} @@ -93,4 +98,23 @@ + + + + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxCouponPresentMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponPresentMapper.xml new file mode 100644 index 000000000..098bee4d5 --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxCouponPresentMapper.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + `id`,`tenant_id`,`coupon_id`,`coupon_name`,`user_id`,`create_time`,`update_time` + + + + where 1 = 1 + + and `id` = #{id} + + + and `tenant_id` = #{tenantId} + + + and `coupon_id` = #{couponId} + + + and `coupon_name` like concat('%', #{couponName},'%') + + + and `phones` like concat('%', #{phones},'%') + + + and `create_date` between #{sendTimeStart} and #{sendTimeEnd} + + + and `update_date` = #{updateTime} + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + From ffeba0918e3da0459ad96c013a30f81bbd721190 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Thu, 19 Sep 2019 16:19:57 +0800 Subject: [PATCH 20/72] =?UTF-8?q?[=E7=B3=BB=E7=BB=9F=E5=8F=91=E5=8D=A1][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][=E5=88=9B=E5=BB=BA=E8=A1=A8SQL]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../db/migration/V201909191610__G_COUPON_PRESENT.sql | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 mallinkAdmin/src/main/resources/db/migration/V201909191610__G_COUPON_PRESENT.sql diff --git a/mallinkAdmin/src/main/resources/db/migration/V201909191610__G_COUPON_PRESENT.sql b/mallinkAdmin/src/main/resources/db/migration/V201909191610__G_COUPON_PRESENT.sql new file mode 100644 index 000000000..8a51d9a65 --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V201909191610__G_COUPON_PRESENT.sql @@ -0,0 +1,12 @@ +create table wx_coupon_present( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(10) NOT NULL COMMENT '租户ID', + `user_id` bigint(20) NOT NULL COMMENT '用户ID', + `coupon_id` bigint(20) DEFAULT NULL COMMENT '券ID', + `coupon_name` varchar(20) DEFAULT NULL COMMENT '券名称', + `phones` text DEFAULT NULL COMMENT '手机号码', + `create_time` datetime DEFAULT CURRENT_TIMESTAMP, + `update_time` datetime DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `id_UNIQUE` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='卡投放'; From d0980ebba786d72526d604faf1164d9aaabb4eac Mon Sep 17 00:00:00 2001 From: gongbiao Date: Thu, 19 Sep 2019 16:20:33 +0800 Subject: [PATCH 21/72] =?UTF-8?q?[=E8=8F=9C=E5=8D=95][=E4=BF=AE=E6=94=B9][?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=B3=BB=E7=BB=9F=E5=8F=91=E5=8D=A1]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../V201909191615__G_MENU_CHANGED.sql | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 mallinkAdmin/src/main/resources/db/migration/V201909191615__G_MENU_CHANGED.sql diff --git a/mallinkAdmin/src/main/resources/db/migration/V201909191615__G_MENU_CHANGED.sql b/mallinkAdmin/src/main/resources/db/migration/V201909191615__G_MENU_CHANGED.sql new file mode 100644 index 000000000..6ab85a204 --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V201909191615__G_MENU_CHANGED.sql @@ -0,0 +1,27 @@ + +insert into `mall_permission` ( `id`, `name`, `parent_id`, `available`, `permission`, `resource_type`, `module_color`, `module_color_num`, `url`, `icon`, `version_type`, `sort`) values ( '703', '系统发卡', '609', 'Y', null, '1', null, null, 'sysSendCardList', null, '0', '703'); + +DROP TABLE IF EXISTS `mall_sale_type` ; +CREATE TABLE `mall_sale_type` ( + `id` bigint(64) NOT NULL, + `name` varchar(32) DEFAULT NULL COMMENT '销售类型', + `type` tinyint(2) DEFAULT NULL COMMENT '资源类型1:尊享全能版 2:尊享营销版 3.速享版', + `period` tinyint(2) DEFAULT NULL COMMENT '有效期(单位月)', + `menus` json DEFAULT NULL COMMENT '菜单列表', + PRIMARY KEY (`id`), + UNIQUE `id_UNIQUE` USING BTREE (`id`) comment '' +) ENGINE=`InnoDB` ROW_FORMAT=DYNAMIC COMMENT='系统销售表' CHECKSUM=0 DELAY_KEY_WRITE=0; + +INSERT INTO `mall_sale_type` + (`id`,`name`, `type`, `period`, `menus`) +VALUES + (1, '尊享全能版', 1, 12, + '[1,2,3,4,5,6,7,8,9,10,50,101,102,103,104,105,106,107,108,201,202,203,204,205,206,211,212,221,222,251,299,300,301,302,303,304,305,306,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,501,502,503,504,505,506,507,508,509,511,512,513,521,522,523,531,532,533,591,595,601,602,603,604,605,606,607,608,609,610,611,612,621,622,623,624,625,626,627,641,642,643,644,645,651,661,662,663,671,672,673,674,681,682,683,684,685,691,692,693,694,695,701,702,703,711,712,713,901,902,903,931,932,951,952,961,962,965,966,967,968]' + ), + (2, '尊享营销版', 2, 12, + '[1,2,4,5,6,7,8,9,10,50,101,102,103,104,105,106,107,201,202,203,204,205,211,212,221,222,251,409,410,411,416,501,502,503,504,505,506,507,508,509,511,512,513,521,522,523,531,532,533,591,592,595,601,602,603,604,605,606,607,608,609,610,611,612,621,622,623,624,625,626,627,641,642,643,644,645,651,661,662,663,671,672,673,674,681,682,683,684,685,691,692,693,694,695,701,702,703,711,712,713,901,902,903,931,932,951,961]' + ), + (3, '速享版', 3, 1, + '[2,4,5,6,7,10,50,201,202,205,211,212,221,222,251,409,410,411,416,501,502,503,504,505,506,507,508,511,512,513,521,522,523,531,532,533,591,592,601,602,603,604,605,606,607,608,609,610,611,612,621,622,623,624,625,626,641,642,643,644,645,651,661,662,663,671,672,673,674,681,682,683,684,685,691,692,693,694,695,701,702,703,711,712,713,901,902,903,931,932]' + ) + ; From 21d49435f18507b3ce0867e2321c23cb75fdfd3e Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Thu, 19 Sep 2019 16:19:06 +0800 Subject: [PATCH 22/72] =?UTF-8?q?[=E5=8D=A1=E5=88=B8][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=8D=A1=E5=AF=86=E9=A2=86=E5=8F=96=E5=85=8D=E8=B4=B9=E5=8D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/market/WxOrderController.java | 2 +- .../WxCouponPasswordController.java | 80 +++++++++++++++++++ .../java/com/iformall/common/ErrorCode.java | 8 +- .../service/WxCouponPasswordService.java | 8 ++ .../com/iformall/service/WxOrderService.java | 2 +- .../impl/WxCouponPasswordServiceImpl.java | 30 +++++++ .../service/impl/WxCouponServiceImpl.java | 2 +- .../service/impl/WxOrderServiceImpl.java | 21 +++-- .../mapper/WxCouponPasswordMapper.xml | 9 ++- 9 files changed, 147 insertions(+), 15 deletions(-) create mode 100644 mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java index 2fa18983d..8e5928e14 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java @@ -164,7 +164,7 @@ public class WxOrderController extends BaseController { if (!wxOrderService.checkCouponIsFree(coupon)) return new ResultData(ErrorCode.COUPON_IS_NOT_FREE); // 免费券 - order = wxOrderService.saveFreeOrderForCoupon(user, coupon, orderSaveDto.getCouponChannelId(), orderSaveDto.getFormId()); + order = wxOrderService.saveFreeOrderForCoupon(user, coupon, orderSaveDto.getCouponChannelId(), orderSaveDto.getFormId(), null); return new ResultData(order); } catch (MallinkException e) { logger.error(e.getMessage()); diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java new file mode 100644 index 000000000..384cf803c --- /dev/null +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java @@ -0,0 +1,80 @@ +package com.iformall.controller; + +import com.iformall.common.ErrorCode; +import com.iformall.common.ResultData; +import com.iformall.domain.po.*; +import com.iformall.enums.*; +import com.iformall.exception.MallinkException; +import com.iformall.service.*; +import com.iformall.utils.Constant; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.Map; + +@RestController +@RequestMapping("/api/couponPassword") +@Api(description = "卡密相关接口") +public class WxCouponPasswordController extends BaseController { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private WxCouponPasswordService couponPasswordService; + + @Autowired + private WxCouponService couponService; + @Autowired + private WxOrderService orderService; + + + @ApiOperation(value = "根据卡密领卡", notes = "{\"password\":\"String\",\"formId\":\"String\"}") + @PostMapping("getCouponOrderByPassword") + public ResultData getCouponOrderByPassword(@RequestBody Map params) { + logger.info("getCouponOrderByPassword: " + getIpAddr() + params.toString()); + String password = params.get("password"); + String formId = params.get("formId"); + if (StringUtils.isBlank(password) || password.equalsIgnoreCase(Constant.UNDEFINED)) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "password不能为空"); + } + // 1. 根据password获取领取的couponId + WxCouponPassword couponPasswordQ = new WxCouponPassword(); + couponPasswordQ.setTenantId(getTenantId()); + couponPasswordQ.setPassword(password); + couponPasswordQ.setExpireDate(new Date()); + WxCouponPassword couponPassword = null; + try { + couponPassword = couponPasswordService.getByObj(couponPasswordQ); + } catch (MallinkException e) { + logger.error(e.getMessage()); + return new ResultData(e.getErrorCode(), e.getMessage()); + } catch (Exception e) { + logger.error(e.getMessage()); + return new ResultData(500, e.getMessage()); + } + + // 2. 设置已使用 + try { + WxCouponPassword updateCouponPwd = new WxCouponPassword(); + updateCouponPwd.setId(couponPassword.getId()); + updateCouponPwd.setStatus(EnumCouponPasswordStatus.USED.getCode()); + couponPassword.setStatus(EnumCouponPasswordStatus.USED.getCode()); + couponPasswordService.saveOrUpdate(updateCouponPwd); + } catch (Exception e) { + logger.error(e.getMessage()); + return new ResultData(ErrorCode.DB_FAIL); + } + + // 3. 领取free coupon + WxCUser cuUser = getUser(); + WxCoupon coupon = couponService.getById(couponPassword.getId()); + // TODO ? check 卡券状态 + orderService.saveFreeOrderForCoupon(cuUser, coupon, null, formId, couponPassword.getId()); + return new ResultData(); + } +} diff --git a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java index 53b2703dc..f4cf4fdd4 100644 --- a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java @@ -219,8 +219,12 @@ public enum ErrorCode{ COUPON_PRESS_IS_OVERTIME(9071, "砍价已超时"), COUPON_PRESS_IS_EXIST(9072, "此人已参与此次砍价"), - - + /** + * 卡密 + */ + CARD_PASSWORD_NOT_FOUND(9501, "卡密未找到"), + CARD_PASSWORD_HAD_USED(9502, "卡密已使用"), + CARD_PASSWORD_IS_CANCELED(9503, "卡密已过期或者已下架"), /** * 微信 diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponPasswordService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponPasswordService.java index 1db8e8bcc..ebacc4abf 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponPasswordService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponPasswordService.java @@ -25,6 +25,14 @@ public interface WxCouponPasswordService { * @return */ WxCouponPassword getById(Long id); + + /** + * 根据密码获取卡密信息 + * + * @param obj + * @return + */ + WxCouponPassword getByObj(WxCouponPassword obj); /** * 保存或更新实体 diff --git a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java index 6158c90eb..0c8b197bf 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java @@ -176,7 +176,7 @@ public interface WxOrderService { boolean checkCouponIsFree(WxCoupon coupon); // 2. 创建免费订单, 领取 couponOrder - WxOrder saveFreeOrderForCoupon(WxCUser user, WxCoupon coupon, Long couponChannelId, String formId); + WxOrder saveFreeOrderForCoupon(WxCUser user, WxCoupon coupon, Long couponChannelId, String formId, Long couponPasswordId); // 3. 创建有价订单 WxOrder saveNoFreeOrderForCoupon(WxCUser user, WxCoupon coupon, Long couponChannelId, boolean isPress, Long orderGroupId, String formId); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java index 4db59340b..96dd691bc 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java @@ -6,6 +6,8 @@ import com.iformall.common.IdWorker; import com.iformall.domain.po.WxCouponPassword; import com.iformall.enums.EnumCouponPasswordStatus; import com.iformall.domain.vo.WxCouponPasswordCountInfoVO; +import com.iformall.common.ErrorCode; +import com.iformall.exception.MallinkException; import com.iformall.mapper.WxCouponPasswordMapper; import com.iformall.service.WxCouponPasswordService; import org.springframework.beans.factory.annotation.Autowired; @@ -33,6 +35,34 @@ public class WxCouponPasswordServiceImpl implements WxCouponPasswordService { return wxCouponPasswordMapper.selectByPrimaryKey(id); } + @Override + public WxCouponPassword getByObj(WxCouponPassword obj) { + List pwdList = wxCouponPasswordMapper.findList(obj); + if (pwdList.size() <= 0) { + throw new MallinkException(ErrorCode.CARD_PASSWORD_NOT_FOUND); + } + WxCouponPassword password = null; + Integer errCode = EnumCouponPasswordStatus.INIT.getCode(); + for( WxCouponPassword pwd: pwdList) { + if (pwd.getStatus().equals(EnumCouponPasswordStatus.USED.getCode())) { + errCode = EnumCouponPasswordStatus.USED.getCode(); + continue; + } + if (!pwd.getStatus().equals(EnumCouponPasswordStatus.USED.getCode()) && + !pwd.getStatus().equals(EnumCouponPasswordStatus.CANCEL.getCode())) { + password = pwd; + } + } + if (password == null) { + if (errCode.equals(EnumCouponPasswordStatus.USED.getCode())) { + throw new MallinkException(ErrorCode.CARD_PASSWORD_HAD_USED); + } else { + throw new MallinkException(ErrorCode.CARD_PASSWORD_IS_CANCELED); + } + } + return password; + } + @Override public void saveOrUpdate(WxCouponPassword record) { if (record.getId() == null) { 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 8456daa45..42076ae92 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java @@ -34,7 +34,7 @@ import java.util.stream.Collectors; @Service - public class WxCouponServiceImpl implements WxCouponService { +public class WxCouponServiceImpl implements WxCouponService { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired 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 fbc54a8ff..6eba37b9d 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -118,6 +118,9 @@ public class WxOrderServiceImpl implements WxOrderService { @Autowired private WxMsgLimitService wxMsgLimitService; + @Autowired + private WxCouponPasswordMapper couponPasswordMapper; + @Override public PageInfo listAsPage(WxOrder record, Integer pageIndex, Integer pageSize) { @@ -636,7 +639,7 @@ public class WxOrderServiceImpl implements WxOrderService { * @param order * @param coupon */ - private WxCouponOrder createCouponOrder(WxOrder order, WxCUser user, WxCoupon coupon) { + private WxCouponOrder createCouponOrder(WxOrder order, WxCUser user, WxCoupon coupon, Long couponPasswordId) { Date curr = new Date(); Date valid_date = null; int limit_days = Constant.WX_LIMIT_DAYS; @@ -720,6 +723,12 @@ public class WxOrderServiceImpl implements WxOrderService { cardInfo.setShareFeeAmount(0); cardInfo.setRemainingShareFeeAmount(0); cardInfo.setRateAmount(0); + if (coupon.getPasswordSupport().equals(EnumCouponPasswordSupport.SUPPORTED.getCode())) { + WxCouponPassword updateCPwd = new WxCouponPassword(); + updateCPwd.setId(couponPasswordId); + updateCPwd.setStatus(EnumCouponPasswordStatus.USED.getCode()); + couponPasswordMapper.updateByPrimaryKeySelective(updateCPwd); + } } cardInfo.setServiceFeeAmount(fee); @@ -812,7 +821,7 @@ public class WxOrderServiceImpl implements WxOrderService { // 创建couponOrder WxCouponOrder couponOrder = null; try { - couponOrder = createCouponOrder(record, user, coupon); + couponOrder = createCouponOrder(record, user, coupon, null); } catch (Exception e) { logger.error("保存订单:" + e.getMessage()); throw new MallinkException(ErrorCode.COUPON_ORDER_SAVE_ERR.getCode(), coupon.getTitle() + ErrorCode.COUPON_ORDER_SAVE_ERR.getMessage()); @@ -859,7 +868,7 @@ public class WxOrderServiceImpl implements WxOrderService { // 创建couponOrder try { - createCouponOrder(updateOrder, user, coupon); + createCouponOrder(updateOrder, user, coupon, null); } catch (Exception e) { logger.error("创建券包:" + e.getMessage()); throw new MallinkException(ErrorCode.COUPON_ORDER_SAVE_ERR); @@ -1360,7 +1369,7 @@ public class WxOrderServiceImpl implements WxOrderService { WxOrder order = null; if (checkCouponIsFree(coupon)) { // 免费券 - order = saveFreeOrderForCoupon(user, coupon, orderSaveDto.getCouponChannelId(), orderSaveDto.getFormId()); + order = saveFreeOrderForCoupon(user, coupon, orderSaveDto.getCouponChannelId(), orderSaveDto.getFormId(), null); if(order != null) { // 6. 下订单完成,发送内部消息 // 下订单完成,发送内部消息 @@ -1394,7 +1403,7 @@ public class WxOrderServiceImpl implements WxOrderService { @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public WxOrder saveFreeOrderForCoupon(WxCUser user, WxCoupon coupon, Long couponChannelId, String formId) { + public WxOrder saveFreeOrderForCoupon(WxCUser user, WxCoupon coupon, Long couponChannelId, String formId, Long couponPasswordId) { // 1. check user info and coupon info userCouponMerchantCheck(user, coupon); if (coupon.checkIsCreditCoupon()) { @@ -1434,7 +1443,7 @@ public class WxOrderServiceImpl implements WxOrderService { // 5. 创建couponOrder try { - createCouponOrder(record, user, coupon); + createCouponOrder(record, user, coupon, couponPasswordId); } catch (Exception e) { logger.error("couponOrder失败:" + e.getMessage()); throw new MallinkException(ErrorCode.COUPON_ORDER_SAVE_ERR); diff --git a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml index 40b069abc..da717c554 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml @@ -34,13 +34,13 @@ and `coupon_short` = #{couponShort} - and `password` like concat('%', #{password},'%') + and `password` = #{password} and `status` = #{status} - and `sended_phone` like concat('%', #{sendedPhone},'%') + and `sended_phone` = #{sendedPhone} and `card_id` = #{cardId} @@ -52,7 +52,7 @@ and `update_date` = #{updateDate} - and `expire_date` = #{expireDate} + and `expire_date` > #{expireDate} and id in @@ -69,7 +69,8 @@ From 4540414c69a1ef33b6fe1d05149c99ce59a6479c Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Thu, 19 Sep 2019 16:30:12 +0800 Subject: [PATCH 23/72] =?UTF-8?q?[=E5=8D=A1=E5=88=B8][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...__G_COUPON_PRESENT.sql => V201909170410__G_COUPON_PRESENT.sql} | 0 ...1615__G_MENU_CHANGED.sql => V201909170415__G_MENU_CHANGED.sql} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename mallinkAdmin/src/main/resources/db/migration/{V201909191610__G_COUPON_PRESENT.sql => V201909170410__G_COUPON_PRESENT.sql} (100%) rename mallinkAdmin/src/main/resources/db/migration/{V201909191615__G_MENU_CHANGED.sql => V201909170415__G_MENU_CHANGED.sql} (100%) diff --git a/mallinkAdmin/src/main/resources/db/migration/V201909191610__G_COUPON_PRESENT.sql b/mallinkAdmin/src/main/resources/db/migration/V201909170410__G_COUPON_PRESENT.sql similarity index 100% rename from mallinkAdmin/src/main/resources/db/migration/V201909191610__G_COUPON_PRESENT.sql rename to mallinkAdmin/src/main/resources/db/migration/V201909170410__G_COUPON_PRESENT.sql diff --git a/mallinkAdmin/src/main/resources/db/migration/V201909191615__G_MENU_CHANGED.sql b/mallinkAdmin/src/main/resources/db/migration/V201909170415__G_MENU_CHANGED.sql similarity index 100% rename from mallinkAdmin/src/main/resources/db/migration/V201909191615__G_MENU_CHANGED.sql rename to mallinkAdmin/src/main/resources/db/migration/V201909170415__G_MENU_CHANGED.sql From 0de666857af81cd486bffad90dabc69b17f4a1f0 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Thu, 19 Sep 2019 16:31:58 +0800 Subject: [PATCH 24/72] =?UTF-8?q?[=E5=8D=A1=E5=88=B8][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/db/migration/V201909170415__G_MENU_CHANGED.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkAdmin/src/main/resources/db/migration/V201909170415__G_MENU_CHANGED.sql b/mallinkAdmin/src/main/resources/db/migration/V201909170415__G_MENU_CHANGED.sql index 6ab85a204..268c61185 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V201909170415__G_MENU_CHANGED.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V201909170415__G_MENU_CHANGED.sql @@ -16,7 +16,7 @@ INSERT INTO `mall_sale_type` (`id`,`name`, `type`, `period`, `menus`) VALUES (1, '尊享全能版', 1, 12, - '[1,2,3,4,5,6,7,8,9,10,50,101,102,103,104,105,106,107,108,201,202,203,204,205,206,211,212,221,222,251,299,300,301,302,303,304,305,306,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,501,502,503,504,505,506,507,508,509,511,512,513,521,522,523,531,532,533,591,595,601,602,603,604,605,606,607,608,609,610,611,612,621,622,623,624,625,626,627,641,642,643,644,645,651,661,662,663,671,672,673,674,681,682,683,684,685,691,692,693,694,695,701,702,703,711,712,713,901,902,903,931,932,951,952,961,962,965,966,967,968]' + '[1,2,3,4,5,6,7,8,9,10,50,101,102,103,104,105,106,107,108,201,202,203,204,205,206,211,212,221,222,251,299,300,301,302,303,304,305,306,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,501,502,503,504,505,506,507,508,509,511,512,513,521,522,523,531,532,533,591,592,595,601,602,603,604,605,606,607,608,609,610,611,612,621,622,623,624,625,626,627,641,642,643,644,645,651,661,662,663,671,672,673,674,681,682,683,684,685,691,692,693,694,695,701,702,703,711,712,713,901,902,903,931,932,951,952,961,962,965,966,967,968]' ), (2, '尊享营销版', 2, 12, '[1,2,4,5,6,7,8,9,10,50,101,102,103,104,105,106,107,201,202,203,204,205,211,212,221,222,251,409,410,411,416,501,502,503,504,505,506,507,508,509,511,512,513,521,522,523,531,532,533,591,592,595,601,602,603,604,605,606,607,608,609,610,611,612,621,622,623,624,625,626,627,641,642,643,644,645,651,661,662,663,671,672,673,674,681,682,683,684,685,691,692,693,694,695,701,702,703,711,712,713,901,902,903,931,932,951,961]' From 83c3f0bda73aad037b2906dcd069fb977780509a Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Thu, 19 Sep 2019 16:57:13 +0800 Subject: [PATCH 25/72] =?UTF-8?q?[=E5=8D=A1=E5=88=B8][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=8D=A1=E5=88=B8=E9=A2=86=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WxCouponPasswordController.java | 23 +++++++++++++++---- .../controller/WxOrderController.java | 3 +++ 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java index 384cf803c..ce0d8aad0 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java @@ -58,6 +58,16 @@ public class WxCouponPasswordController extends BaseController { return new ResultData(500, e.getMessage()); } + WxCUser cuUser = getUser(); + WxCoupon coupon = couponService.getById(couponPassword.getCouponId()); + if (coupon == null) { + return new ResultData(ErrorCode.COUPON_IS_EMPTY); + } + if (coupon.getStatus().equals(EnumCouponStatus.COUPON_STATUS_TAKE_OFFF.getCode())) { + logger.error("此券已作废:" + coupon.getId()); + return new ResultData(ErrorCode.COUPON_IS_TAKE_OFF); + } + // 2. 设置已使用 try { WxCouponPassword updateCouponPwd = new WxCouponPassword(); @@ -71,10 +81,15 @@ public class WxCouponPasswordController extends BaseController { } // 3. 领取free coupon - WxCUser cuUser = getUser(); - WxCoupon coupon = couponService.getById(couponPassword.getId()); - // TODO ? check 卡券状态 - orderService.saveFreeOrderForCoupon(cuUser, coupon, null, formId, couponPassword.getId()); + try { + WxOrder order = orderService.saveFreeOrderForCoupon(cuUser, coupon, null, formId, couponPassword.getId()); + } catch (MallinkException e) { + logger.error(e.getMessage()); + return new ResultData(e.getErrorCode(), e.getMessage()); + } catch (Exception e) { + logger.error(e.getMessage()); + return new ResultData(500, e.getMessage()); + } return new ResultData(); } } diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index 2eef41fd1..cea078e18 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -83,6 +83,9 @@ public class WxOrderController extends BaseController { if (coupon == null) { return new ResultData(ErrorCode.COUPON_IS_EMPTY); } + if (coupon.getStatus().equals(EnumCouponStatus.COUPON_STATUS_TAKE_OFFF.getCode())) { + return new ResultData(ErrorCode.COUPON_IS_TAKE_OFF); + } WxOrder order = wxOrderService.saveOrderForCoupon(user, coupon, orderSaveDto, isPress); return new ResultData(order); } catch (MallinkException e) { From 36989d2d73e002310569f9a3c990f3bc8b0cedb7 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Thu, 19 Sep 2019 17:24:50 +0800 Subject: [PATCH 26/72] =?UTF-8?q?[=E5=8D=A1=E5=88=B8][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=8D=A1=E5=88=B8=E6=8F=90=E7=A4=BA=E4=BF=A1=E6=81=AF=E4=BF=AE?= =?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/iformall/common/ErrorCode.java | 6 +++--- .../iformall/service/impl/WxCouponPasswordServiceImpl.java | 5 +++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java index f4cf4fdd4..0a5e1413e 100644 --- a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java @@ -222,9 +222,9 @@ public enum ErrorCode{ /** * 卡密 */ - CARD_PASSWORD_NOT_FOUND(9501, "卡密未找到"), - CARD_PASSWORD_HAD_USED(9502, "卡密已使用"), - CARD_PASSWORD_IS_CANCELED(9503, "卡密已过期或者已下架"), + CARD_PASSWORD_NOT_FOUND(9501, "兑换码未找到"), + CARD_PASSWORD_HAD_USED(9502, "兑换码已失效"), + CARD_PASSWORD_IS_CANCELED(9503, "兑换码已失效"), /** * 微信 diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java index 96dd691bc..3f1b281f0 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java @@ -10,6 +10,8 @@ import com.iformall.common.ErrorCode; import com.iformall.exception.MallinkException; import com.iformall.mapper.WxCouponPasswordMapper; import com.iformall.service.WxCouponPasswordService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -20,6 +22,7 @@ import java.util.Random; @Service public class WxCouponPasswordServiceImpl implements WxCouponPasswordService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxCouponPasswordMapper wxCouponPasswordMapper; @@ -55,8 +58,10 @@ public class WxCouponPasswordServiceImpl implements WxCouponPasswordService { } if (password == null) { if (errCode.equals(EnumCouponPasswordStatus.USED.getCode())) { + logger.error("卡券已使用"); throw new MallinkException(ErrorCode.CARD_PASSWORD_HAD_USED); } else { + logger.error("卡券已过期或已作废"); throw new MallinkException(ErrorCode.CARD_PASSWORD_IS_CANCELED); } } From 88312852ca10ef9b6ffbcdd141897924fef4ebec Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Thu, 19 Sep 2019 17:41:23 +0800 Subject: [PATCH 27/72] =?UTF-8?q?[=E5=81=9C=E8=BD=A6][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=81=9C=E8=BD=A6code=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/car/WxCarController.java | 4 +- .../iformall/controller/WxCarController.java | 4 +- ....java => WxCarETCPCallBackController.java} | 432 +++++++----------- .../callback/WxCarTJDCallBackController.java | 285 ++++++++++++ .../iformall/utils/{ => car}/ETCPUtil.java | 2 +- .../iformall/utils/{ => car}/TJDCarUtil.java | 59 ++- 6 files changed, 513 insertions(+), 273 deletions(-) rename mallinkCallback/src/main/java/com/iformall/controller/callback/{WxCarCallBackController.java => WxCarETCPCallBackController.java} (83%) create mode 100644 mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarTJDCallBackController.java rename mallinkService/src/main/java/com/iformall/utils/{ => car}/ETCPUtil.java (99%) rename mallinkService/src/main/java/com/iformall/utils/{ => car}/TJDCarUtil.java (86%) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/car/WxCarController.java b/mallinkAdmin/src/main/java/com/iformall/controller/car/WxCarController.java index 34c4d844e..3b16e86e9 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/car/WxCarController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/car/WxCarController.java @@ -15,8 +15,8 @@ import com.iformall.enums.EnumRentContractAppStatus; import com.iformall.exception.MallinkException; import com.iformall.mapper.WxCouponMapper; import com.iformall.service.*; -import com.iformall.utils.ETCPUtil; -import com.iformall.utils.TJDCarUtil; +import com.iformall.utils.car.ETCPUtil; +import com.iformall.utils.car.TJDCarUtil; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java index f8f2ad79b..3fc060a34 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java @@ -12,8 +12,8 @@ import com.iformall.domain.vo.WxMerchantVo; import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.service.*; -import com.iformall.utils.ETCPUtil; -import com.iformall.utils.TJDCarUtil; +import com.iformall.utils.car.ETCPUtil; +import com.iformall.utils.car.TJDCarUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; diff --git a/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarCallBackController.java b/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarETCPCallBackController.java similarity index 83% rename from mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarCallBackController.java rename to mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarETCPCallBackController.java index dce9a0e19..66d305623 100644 --- a/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarCallBackController.java +++ b/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarETCPCallBackController.java @@ -12,7 +12,7 @@ import com.iformall.enums.EnumCouponSendSendType; import com.iformall.enums.EnumETCPCode; import com.iformall.service.*; import com.iformall.utils.DateUtils; -import com.iformall.utils.ETCPUtil; +import com.iformall.utils.car.ETCPUtil; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -32,7 +32,7 @@ import java.util.Map; @RestController @RequestMapping("/carCallback") -public class WxCarCallBackController extends BaseController { +public class WxCarETCPCallBackController extends BaseController { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired @@ -81,119 +81,6 @@ public class WxCarCallBackController extends BaseController { return new Result(EnumETCPCode.SUCCESS.getCode(), EnumETCPCode.SUCCESS.getMessage()); } - // @Async - private boolean doEtcpParkIn(@RequestBody Map paramMap) { - Date currentDate = new Date(); - WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); - - wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); - wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_PARK_IN.getCode()); - wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap)); - wxCarCmdLog.setCreateDate(currentDate); - wxCarCmdLog.setUpdateDate(currentDate); - - String etcpParkId = paramMap.get(ETCPUtil.ETCP_PARK_ID); - String tenantId = null; - WxPark parkQ = new WxPark(); - parkQ.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); - parkQ.setParkingId(etcpParkId); - WxPark park = wxParkService.getByObj(parkQ); - if (park == null) { - logger.error("etcpParkInCallback: ETCP车场未找到" + etcpParkId); - //return new Result(ErrorCode.CAR_PARK_NOT_FOUND.getCode(), "ETCP车场未找到"+ etcpParkId); - } else { - tenantId = park.getTenantId(); - wxCarCmdLog.setTenantId(park.getTenantId()); - } - - String carNumber = paramMap.get(ETCPUtil.ETCP_CAR_NUMBER); - String synId = paramMap.get(ETCPUtil.ETCP_SYN_ID); - String parkId = paramMap.get(ETCPUtil.ETCP_PARK_ID); - String parkName = paramMap.get(ETCPUtil.ETCP_PARK_NAME); - String userType = paramMap.get(ETCPUtil.ETCP_USER_TYPE); - String entranceTime = paramMap.get(ETCPUtil.ETCP_ENTRANCE_TIME); - String fixParkingId = paramMap.get(ETCPUtil.ETCP_FIX_PARKING_ID); - String remainingDays = paramMap.get(ETCPUtil.ETCP_REMAINING_DAYS); - - // 检查是否有重复数据 - HashMap map = new HashMap(); - map.put("synId", synId); - map.put("cmdType", EnumCarCmd.CAR_ETCP_CALLBACK_PARK_IN.getCode()); - if(tenantId != null) { - map.put("tenantId", tenantId); - } - WxCarCmdLog carCmdLog = wxCarCmdLogService.getBySynId(map); - if(carCmdLog != null) { - logger.error("ETCP synId已入库: " + paramMap.toString()); - return true; - } - - try { - wxCarCmdLogService.saveOrUpdate(wxCarCmdLog); - } catch (Exception e) { - logger.error("etcpParkInCallback: 入库错误 " + e.getMessage() + "\n" + paramMap.toString()); - return true; - } - - String phoneStrs = ""; - - // 停车发券 - if (!StringUtils.isBlank(carNumber)) { - // 根据车牌查找用户 - WxCUserCar userCarQ = new WxCUserCar(); - userCarQ.setTenantId(tenantId); - userCarQ.setCarNumber(carNumber); - userCarQ.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); - // TODO 可能多用户关联同一张车牌 - List userCarList = wxCUserCarService.getList(userCarQ); - boolean bFirst = true; - for (WxCUserCar userCar : userCarList) { - wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.CAR_STOP, userCar); - WxCUser cUser = wxCUserService.getById(userCar.getCUserId()); - if(cUser != null){ - if(bFirst) { - phoneStrs = cUser.getPhone(); - bFirst = false; - } else { - phoneStrs += "," + cUser.getPhone(); - } - } - } - } - - try { - // 保存WxCarPayRecord - WxCarPayRecord record = new WxCarPayRecord(); - record.setVendorType(wxCarCmdLog.getVendorType()); - record.setSynId(synId); - record.setParkId(parkId); - record.setParkName(parkName); - record.setUserType(userType); - record.setPlateNumber(carNumber); - if(StringUtils.isNotBlank(entranceTime)) { - record.setEntranceTime(dateFormat.parse(entranceTime)); - } - record.setFixParkingId(fixParkingId); - record.setRemainingDays(remainingDays); - record.setPhone(phoneStrs); - record.setTenantId(tenantId); - - WxCarPayRecord query = new WxCarPayRecord(); - query.setSynId(synId); - PageInfo page = wxCarPayRecordService.findCarPayListByPage(query,1,1); - if(page != null && CollectionUtils.isNotEmpty(page.getList())){ - record.setId(page.getList().get(0).getId()); - } - wxCarPayRecordService.saveOrUpdate(record); - } catch (Exception e) { - e.printStackTrace(); - logger.error("WxCarPayRecord: 入库错误 ",e); - logger.error("WxCarPayRecord: 入库错误 "+e.getMessage()+"," + paramMap.toString()); - return true; - } - return false; - } - /** * ETCP 车辆出场通知 * { @@ -221,86 +108,6 @@ public class WxCarCallBackController extends BaseController { return new Result(EnumETCPCode.SUCCESS.getCode(), EnumETCPCode.SUCCESS.getMessage()); } - private boolean doEtcpParkOut(@RequestBody Map paramMap) { - Date currentDate = new Date(); - - WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); - wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); - wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_PARK_OUT.getCode()); - wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap)); - wxCarCmdLog.setCreateDate(currentDate); - wxCarCmdLog.setUpdateDate(currentDate); - - String etcpParkId = paramMap.get(ETCPUtil.ETCP_PARK_ID); - String tenantId = null; - WxPark parkQ = new WxPark(); - parkQ.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); - parkQ.setParkingId(etcpParkId); - WxPark park = wxParkService.getByObj(parkQ); - if (park == null) { - logger.error("etcpParkOutCallback: ETCP车场未找到 " + etcpParkId); - // return new Result(ErrorCode.CAR_PARK_NOT_FOUND.getCode(), "ETCP车场未找到"+ etcpParkId); - } else { - tenantId = park.getTenantId(); - wxCarCmdLog.setTenantId(tenantId); - } - - try { - wxCarCmdLogService.saveOrUpdate(wxCarCmdLog); - } catch (Exception e) { - logger.error("etcpParkOutCallback: 入库错误 " + e.getMessage() + "\n" + paramMap.toString()); - return true; - } - - String synId = paramMap.get(ETCPUtil.ETCP_SYN_ID); - String exitTime = paramMap.get(ETCPUtil.ETCP_EXIT_TIME); - String stayedTime = paramMap.get(ETCPUtil.ETCP_STAYED_TIME); - String carNumber = paramMap.get(ETCPUtil.ETCP_CAR_NUMBER); - String parkId = paramMap.get(ETCPUtil.ETCP_PARK_ID); - String parkName = paramMap.get(ETCPUtil.ETCP_PARK_NAME); - String userType = paramMap.get(ETCPUtil.ETCP_USER_TYPE); - String entranceTime = paramMap.get(ETCPUtil.ETCP_ENTRANCE_TIME); - String fixParkingId = paramMap.get(ETCPUtil.ETCP_FIX_PARKING_ID); - String remainingDays = paramMap.get(ETCPUtil.ETCP_REMAINING_DAYS); - - try { - // 保存WxCarPayRecord - WxCarPayRecord record = new WxCarPayRecord(); - record.setSynId(synId); - if(StringUtils.isNotBlank(exitTime)) { - record.setExitTime(dateFormat.parse(exitTime)); - } - if(StringUtils.isNotBlank(stayedTime)) { - record.setStayedTime(Long.parseLong(stayedTime)); - } - record.setVendorType(wxCarCmdLog.getVendorType()); - record.setSynId(synId); - record.setParkId(parkId); - record.setParkName(parkName); - record.setUserType(userType); - record.setPlateNumber(carNumber); - if(StringUtils.isNotBlank(entranceTime)) { - record.setEntranceTime(dateFormat.parse(entranceTime)); - } - record.setFixParkingId(fixParkingId); - record.setRemainingDays(remainingDays); - //record.setPhone(phoneStrs); - record.setTenantId(tenantId); - - WxCarPayRecord query = new WxCarPayRecord(); - query.setSynId(synId); - PageInfo page = wxCarPayRecordService.findCarPayListByPage(query,1,1); - if(page != null && CollectionUtils.isNotEmpty(page.getList())){ - record.setId(page.getList().get(0).getId()); - } - wxCarPayRecordService.saveOrUpdate(record); - } catch (Exception e) { - logger.error("WxCarPayRecord: 出场更新错误 " +e.getMessage()+", " +paramMap.toString()); - return true; - } - return false; - } - /** * ETCP 车辆解绑通知 * { @@ -471,105 +278,196 @@ public class WxCarCallBackController extends BaseController { return new Result(EnumETCPCode.SUCCESS.getCode(), EnumETCPCode.SUCCESS.getMessage()); } + // @Async + private boolean doEtcpParkIn(@RequestBody Map paramMap) { + Date currentDate = new Date(); + WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); - /** - * TJD 车辆入场通知 - * { - * "tradeId": "5836b8b52ada463ebc6199579f029565", - * "outCarId": "45454545454", - * "carNum": "京A45413", - * "carNumColor ": "blue", - * "inDt": "20170319202020", - * "parkName": "测试停车场", - * "parkId": "5836b8b52ada463ebc6199579f029561", - * "lon": "74.000272", - * "lat": "159.768703", - * "wLon": "123.523032", - * "wLat": "35.430735", - * "payUrl": "http://prep.tingjiandan.com/tcweixin/letter/prePay/payInPark.html?prePayType=16&channel=10001", - * "canFindCar": "0" - * } - */ - @RequestMapping(value = "/tjdParkInCallback") - public Map tjdParkInCallback(@RequestBody Map paramMap) { - logger.info("["+getIpAddr()+"tjdParkInCallback: " + paramMap.toString()); - Map map = new HashMap(); - - - String tjdParkId = paramMap.get("parkId"); + wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); + wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_PARK_IN.getCode()); + wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap)); + wxCarCmdLog.setCreateDate(currentDate); + wxCarCmdLog.setUpdateDate(currentDate); + String etcpParkId = paramMap.get(ETCPUtil.ETCP_PARK_ID); + String tenantId = null; WxPark parkQ = new WxPark(); - parkQ.setVendorType(EnumCarVendor.CAR_TJD.getCode()); - parkQ.setParkId(tjdParkId); + parkQ.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); + parkQ.setParkingId(etcpParkId); WxPark park = wxParkService.getByObj(parkQ); if (park == null) { - logger.error("tjdParkInCallback: 停简单车场未找到" + tjdParkId); - map.put("isSuccess", "0"); - map.put("errorMsg", "停简单车场未找到" + tjdParkId); - return map; + logger.error("etcpParkInCallback: ETCP车场未找到" + etcpParkId); + //return new Result(ErrorCode.CAR_PARK_NOT_FOUND.getCode(), "ETCP车场未找到"+ etcpParkId); + } else { + tenantId = park.getTenantId(); + wxCarCmdLog.setTenantId(park.getTenantId()); + } + + String carNumber = paramMap.get(ETCPUtil.ETCP_CAR_NUMBER); + String synId = paramMap.get(ETCPUtil.ETCP_SYN_ID); + String parkId = paramMap.get(ETCPUtil.ETCP_PARK_ID); + String parkName = paramMap.get(ETCPUtil.ETCP_PARK_NAME); + String userType = paramMap.get(ETCPUtil.ETCP_USER_TYPE); + String entranceTime = paramMap.get(ETCPUtil.ETCP_ENTRANCE_TIME); + String fixParkingId = paramMap.get(ETCPUtil.ETCP_FIX_PARKING_ID); + String remainingDays = paramMap.get(ETCPUtil.ETCP_REMAINING_DAYS); + + // 检查是否有重复数据 + HashMap map = new HashMap(); + map.put("synId", synId); + map.put("cmdType", EnumCarCmd.CAR_ETCP_CALLBACK_PARK_IN.getCode()); + if(tenantId != null) { + map.put("tenantId", tenantId); + } + WxCarCmdLog carCmdLog = wxCarCmdLogService.getBySynId(map); + if(carCmdLog != null) { + logger.error("ETCP synId已入库: " + paramMap.toString()); + return true; } - Date currentDate = new Date(); - WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); - wxCarCmdLog.setTenantId(park.getTenantId()); - wxCarCmdLog.setVendorType(EnumCarVendor.CAR_TJD.getCode()); - wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_PARK_IN.getCode()); - wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap)); - wxCarCmdLog.setCreateDate(currentDate); - wxCarCmdLog.setUpdateDate(currentDate); try { wxCarCmdLogService.saveOrUpdate(wxCarCmdLog); } catch (Exception e) { - logger.error("tjdParkInCallback: 入库错误" + paramMap.toString()); - map.put("isSuccess", "0"); - map.put("errorMsg", "入库错误" + paramMap.toString()); - return map; + logger.error("etcpParkInCallback: 入库错误 " + e.getMessage() + "\n" + paramMap.toString()); + return true; } - map.put("isSuccess", "0"); - map.put("errorMsg", ""); - return map; - } + String phoneStrs = ""; - /** - * TJD 车辆出场通知 - * { - * "tradeId": "5836b8b52ada463ebc6199579f029565", - * "outDt": "20170319232020", - * "lon": "74.000272", - * "lat": "159.768703", - * "wLon": "123.523032", - * "wLat": "35.430735", - * "parkAmount": "5.20" - * } - */ - @RequestMapping(value = "/tjdParkoutCallback") - public Map tjdParkOutCallback(@RequestBody Map paramMap) { - logger.info("["+getIpAddr()+"tjdParkoutCallback: " + paramMap.toString()); - Map map = new HashMap(); + // 停车发券 + if (!StringUtils.isBlank(carNumber)) { + // 根据车牌查找用户 + WxCUserCar userCarQ = new WxCUserCar(); + userCarQ.setTenantId(tenantId); + userCarQ.setCarNumber(carNumber); + userCarQ.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); + // TODO 可能多用户关联同一张车牌 + List userCarList = wxCUserCarService.getList(userCarQ); + boolean bFirst = true; + for (WxCUserCar userCar : userCarList) { + wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.CAR_STOP, userCar); + WxCUser cUser = wxCUserService.getById(userCar.getCUserId()); + if(cUser != null){ + if(bFirst) { + phoneStrs = cUser.getPhone(); + bFirst = false; + } else { + phoneStrs += "," + cUser.getPhone(); + } + } + } + } + try { + // 保存WxCarPayRecord + WxCarPayRecord record = new WxCarPayRecord(); + record.setVendorType(wxCarCmdLog.getVendorType()); + record.setSynId(synId); + record.setParkId(parkId); + record.setParkName(parkName); + record.setUserType(userType); + record.setPlateNumber(carNumber); + if(StringUtils.isNotBlank(entranceTime)) { + record.setEntranceTime(dateFormat.parse(entranceTime)); + } + record.setFixParkingId(fixParkingId); + record.setRemainingDays(remainingDays); + record.setPhone(phoneStrs); + record.setTenantId(tenantId); - String tradeId = paramMap.get("tradeId"); + WxCarPayRecord query = new WxCarPayRecord(); + query.setSynId(synId); + PageInfo page = wxCarPayRecordService.findCarPayListByPage(query,1,1); + if(page != null && CollectionUtils.isNotEmpty(page.getList())){ + record.setId(page.getList().get(0).getId()); + } + wxCarPayRecordService.saveOrUpdate(record); + } catch (Exception e) { + e.printStackTrace(); + logger.error("WxCarPayRecord: 入库错误 ",e); + logger.error("WxCarPayRecord: 入库错误 "+e.getMessage()+"," + paramMap.toString()); + return true; + } + return false; + } + private boolean doEtcpParkOut(@RequestBody Map paramMap) { Date currentDate = new Date(); + WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_PARK_OUT.getCode()); wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap)); wxCarCmdLog.setCreateDate(currentDate); wxCarCmdLog.setUpdateDate(currentDate); + + String etcpParkId = paramMap.get(ETCPUtil.ETCP_PARK_ID); + String tenantId = null; + WxPark parkQ = new WxPark(); + parkQ.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); + parkQ.setParkingId(etcpParkId); + WxPark park = wxParkService.getByObj(parkQ); + if (park == null) { + logger.error("etcpParkOutCallback: ETCP车场未找到 " + etcpParkId); + // return new Result(ErrorCode.CAR_PARK_NOT_FOUND.getCode(), "ETCP车场未找到"+ etcpParkId); + } else { + tenantId = park.getTenantId(); + wxCarCmdLog.setTenantId(tenantId); + } + try { wxCarCmdLogService.saveOrUpdate(wxCarCmdLog); } catch (Exception e) { - logger.error("tjdParkoutCallback: 入库错误" + paramMap.toString()); - map.put("isSuccess", "0"); - map.put("errorMsg", "入库错误" + paramMap.toString()); - return map; + logger.error("etcpParkOutCallback: 入库错误 " + e.getMessage() + "\n" + paramMap.toString()); + return true; } - map.put("isSuccess", "0"); - map.put("errorMsg", ""); - return map; - } + String synId = paramMap.get(ETCPUtil.ETCP_SYN_ID); + String exitTime = paramMap.get(ETCPUtil.ETCP_EXIT_TIME); + String stayedTime = paramMap.get(ETCPUtil.ETCP_STAYED_TIME); + String carNumber = paramMap.get(ETCPUtil.ETCP_CAR_NUMBER); + String parkId = paramMap.get(ETCPUtil.ETCP_PARK_ID); + String parkName = paramMap.get(ETCPUtil.ETCP_PARK_NAME); + String userType = paramMap.get(ETCPUtil.ETCP_USER_TYPE); + String entranceTime = paramMap.get(ETCPUtil.ETCP_ENTRANCE_TIME); + String fixParkingId = paramMap.get(ETCPUtil.ETCP_FIX_PARKING_ID); + String remainingDays = paramMap.get(ETCPUtil.ETCP_REMAINING_DAYS); + + try { + // 保存WxCarPayRecord + WxCarPayRecord record = new WxCarPayRecord(); + record.setSynId(synId); + if(StringUtils.isNotBlank(exitTime)) { + record.setExitTime(dateFormat.parse(exitTime)); + } + if(StringUtils.isNotBlank(stayedTime)) { + record.setStayedTime(Long.parseLong(stayedTime)); + } + record.setVendorType(wxCarCmdLog.getVendorType()); + record.setSynId(synId); + record.setParkId(parkId); + record.setParkName(parkName); + record.setUserType(userType); + record.setPlateNumber(carNumber); + if(StringUtils.isNotBlank(entranceTime)) { + record.setEntranceTime(dateFormat.parse(entranceTime)); + } + record.setFixParkingId(fixParkingId); + record.setRemainingDays(remainingDays); + //record.setPhone(phoneStrs); + record.setTenantId(tenantId); + WxCarPayRecord query = new WxCarPayRecord(); + query.setSynId(synId); + PageInfo page = wxCarPayRecordService.findCarPayListByPage(query,1,1); + if(page != null && CollectionUtils.isNotEmpty(page.getList())){ + record.setId(page.getList().get(0).getId()); + } + wxCarPayRecordService.saveOrUpdate(record); + } catch (Exception e) { + logger.error("WxCarPayRecord: 出场更新错误 " +e.getMessage()+", " +paramMap.toString()); + return true; + } + return false; + } } diff --git a/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarTJDCallBackController.java b/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarTJDCallBackController.java new file mode 100644 index 000000000..f3dc1e5bb --- /dev/null +++ b/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarTJDCallBackController.java @@ -0,0 +1,285 @@ +package com.iformall.controller.callback; + +import com.alibaba.fastjson.JSON; +import com.iformall.controller.base.BaseController; +import com.iformall.domain.po.*; +import com.iformall.enums.EnumCarCmd; +import com.iformall.enums.EnumCarVendor; +import com.iformall.service.*; +import com.iformall.utils.car.TJDCarUtil; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +@RestController +@RequestMapping("/carCallback") +public class WxCarTJDCallBackController extends BaseController { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + WxParkService wxParkService; + + @Autowired + WxCUserCarService wxCUserCarService; + + @Autowired + WxMerchantService wxMerchantService; + + @Autowired + WxCarCmdLogService wxCarCmdLogService; + + @Autowired + WxCouponSendService wxCouponSendService; + + @Autowired + WxCarPayRecordService wxCarPayRecordService; + + @Autowired + WxCUserService wxCUserService; + + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + /** + * 注册车牌 + * @param paramMap + * @return + * { + * "service": "parkhub.car.register", + * "partner": "5836b8b51ada463ebc6199579f029566", "sign": "3347b109a1e44f3fd5baa78b74184948", "signType": "md5", + * "charset": "utf-8", + * "version": "1.0", + * "timestamp": "2016-05-26 11:30:10", + * "carNum": "京A12345", + * "carNumColor": "blue", + * "phone": "13612341234", + * "outCarId": "432d85d7441316d29504f480e6a734a8" + * } + * { + * "timestamp": "1464235239561", + * "returnCode": "T", + * "returnMsg": "OK", + * "isSuccess": "0", + * "errorMSG": "", + * "carId": "11ce3dca34124e97830ad466e532eda7" + * } + */ + @RequestMapping(value = "/tjdRegisterCallback") + public Map tjdRegisterCallback(@RequestBody Map paramMap) { + Map map = new HashMap(); + return map; + } + + /** + * 进场通知 + * { + * "parkId": "f3f11a46f3a14056953aed97944242d4", "parkName": "测试停车场", + * "carNum": "京A12345", + * "carNumColor ": "blue", + * "tradeId": "5836b8b52ada463ebc6199579f029565", + * "outCarId": "", + * "inDt": "20170319202020", + * "payUrl": + * "http://prep.tingjiandan.com/tcweixin/letter/prePay/pagePayInPark?prePayType=16&channel=10001&isShowDetail=true&orderId=5836b8b52ada463ebc6199579f029565&returnUrl=", + * "miniProgram": "{ + * \"path\": \"pages/pre_pay/index/main\", + * \"extraData\": { + * \"prePayType\": \"16\", + * \"channel\": \"10001\", + * \"isShowDetail\": \"true\", + * \"orderId\": \"5836b8b52ada463ebc6199579f029565\" + * }}", + * "canFindCar": "0", + * "city": "北京市", + * "district": "海淀区", + * "address": "五道口", + * "lon": "74.000272", + * "lat": "159.768703", + * "wLon": "123.523032", + * "wLat": "35.430735" + * } + */ + @RequestMapping(value = "/tjdParkInCallback") + public Map tjdParkInCallback(@RequestBody Map paramMap) { + logger.info("["+getIpAddr()+"tjdParkInCallback: " + paramMap.toString()); + Map map = new HashMap(); + + String tjdParkId = paramMap.get("parkId"); + + WxPark parkQ = new WxPark(); + parkQ.setVendorType(EnumCarVendor.CAR_TJD.getCode()); + parkQ.setParkId(tjdParkId); + WxPark park = wxParkService.getByObj(parkQ); + if (park == null) { + logger.error("tjdParkInCallback: 停简单车场未找到" + tjdParkId); + map.put("isSuccess", "0"); + map.put("errorMsg", "停简单车场未找到" + tjdParkId); + return map; + } + + Date currentDate = new Date(); + WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); + wxCarCmdLog.setTenantId(park.getTenantId()); + wxCarCmdLog.setVendorType(EnumCarVendor.CAR_TJD.getCode()); + wxCarCmdLog.setCmdType(EnumCarCmd.CAR_TJD_CALLBACK_PARK_IN.getCode()); + wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap)); + wxCarCmdLog.setCreateDate(currentDate); + wxCarCmdLog.setUpdateDate(currentDate); + try { + wxCarCmdLogService.saveOrUpdate(wxCarCmdLog); + } catch (Exception e) { + logger.error("tjdParkInCallback: 入库错误" + paramMap.toString()); + map.put("isSuccess", "0"); + map.put("errorMsg", "入库错误" + paramMap.toString()); + return map; + } + + map.put("isSuccess", "0"); + map.put("errorMsg", ""); + return map; + } + + /** + * 离场通知 + * { + * "parkId": "f3f11a46f3a14056953aed97944242d4", + * "parkName": "测试停车场", + * "carNum": "京A12345", + * "carNumColor ": "blue", + * "tradeId": "5836b8b52ada463ebc6199579f029565", + * "inDt": "20170319232020", + * "outDt": "20170319232020", + * "parkAmount": "5.20", + * "lon": "74.000272", + * "lat": "159.768703", + * "wLon": "123.523032", + * "wLat": "35.430735" + * } + */ + @RequestMapping(value = "/tjdParkoutCallback") + public Map tjdParkOutCallback(@RequestBody Map paramMap) { + logger.info("["+getIpAddr()+"tjdParkoutCallback: " + paramMap.toString()); + Map map = new HashMap(); + + + String tradeId = paramMap.get("tradeId"); + + Date currentDate = new Date(); + WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); + wxCarCmdLog.setVendorType(EnumCarVendor.CAR_TJD.getCode()); + wxCarCmdLog.setCmdType(EnumCarCmd.CAR_TJD_CALLBACK_PARK_OUT.getCode()); + wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap)); + wxCarCmdLog.setCreateDate(currentDate); + wxCarCmdLog.setUpdateDate(currentDate); + try { + wxCarCmdLogService.saveOrUpdate(wxCarCmdLog); + } catch (Exception e) { + logger.error("tjdParkoutCallback: 入库错误" + paramMap.toString()); + map.put("isSuccess", "0"); + map.put("errorMsg", "入库错误" + paramMap.toString()); + return map; + } + + map.put("isSuccess", "0"); + map.put("errorMsg", ""); + return map; + } + + /** + * 支付通知 + * { + * "parkId ": "77a3424e06e64248b4cf9e490c8c682d", + * "parkName ": "测试停车场", + * "carNum": "京A12345", + * "carNumColor": "blue", + * "tradeId": "6d697f7579724345881633a00ed3a671", + * "payAmount": "5.00", + * "payDt": "20180516225701", + * "lon": "74.000272", + * "lat": "159.768703", + * "wLon": "123.523032", + * "wLat": "35.430735" + * } + */ + @RequestMapping(value = "/tjdPaidCallback") + public Map tjdPaidCallback(@RequestBody Map paramMap) { + logger.info("["+getIpAddr()+"tjdPaidCallback: " + paramMap.toString()); + Map map = new HashMap(); + + + String tradeId = paramMap.get("tradeId"); + + Date currentDate = new Date(); + WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); + wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); + wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_PARK_OUT.getCode()); + wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap)); + wxCarCmdLog.setCreateDate(currentDate); + wxCarCmdLog.setUpdateDate(currentDate); + try { + wxCarCmdLogService.saveOrUpdate(wxCarCmdLog); + } catch (Exception e) { + logger.error("tjdParkoutCallback: 入库错误" + paramMap.toString()); + map.put("isSuccess", "0"); + map.put("errorMsg", "入库错误" + paramMap.toString()); + return map; + } + + map.put("isSuccess", "0"); + map.put("errorMsg", ""); + return map; + } + + /** + * 退款通知 (仅当接入方作为第一收款方时适用) + * { + * "parkId ": "77a3424e06e64248b4cf9e490c8c682d", + * "parkName ": "测试停车场", + * "carNum": "京A12345", + * "carNumColor": "blue", + * "tradeId": "6d697f7579724345881633a00ed3a671", + * "payAmount": "5.00", + * "payDt": "20180516225701", + * "lon": "74.000272", + * "lat": "159.768703", + * "wLon": "123.523032", + * "wLat": "35.430735" + * } + */ + @RequestMapping(value = "/tjdRefundCallback") + public Map tjdRefundCallback(@RequestBody Map paramMap) { + logger.info("["+getIpAddr()+"tjdRefundCallback: " + paramMap.toString()); + Map map = new HashMap(); + + + String tradeId = paramMap.get("tradeId"); + + Date currentDate = new Date(); + WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); + wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); + wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_PARK_OUT.getCode()); + wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap)); + wxCarCmdLog.setCreateDate(currentDate); + wxCarCmdLog.setUpdateDate(currentDate); + try { + wxCarCmdLogService.saveOrUpdate(wxCarCmdLog); + } catch (Exception e) { + logger.error("tjdRefundCallback: 入库错误" + paramMap.toString()); + map.put("isSuccess", "0"); + map.put("errorMsg", "入库错误" + paramMap.toString()); + return map; + } + + map.put("isSuccess", "0"); + map.put("errorMsg", ""); + return map; + } + +} diff --git a/mallinkService/src/main/java/com/iformall/utils/ETCPUtil.java b/mallinkService/src/main/java/com/iformall/utils/car/ETCPUtil.java similarity index 99% rename from mallinkService/src/main/java/com/iformall/utils/ETCPUtil.java rename to mallinkService/src/main/java/com/iformall/utils/car/ETCPUtil.java index 7ab87801e..7187204c0 100755 --- a/mallinkService/src/main/java/com/iformall/utils/ETCPUtil.java +++ b/mallinkService/src/main/java/com/iformall/utils/car/ETCPUtil.java @@ -1,4 +1,4 @@ -package com.iformall.utils; +package com.iformall.utils.car; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; diff --git a/mallinkService/src/main/java/com/iformall/utils/TJDCarUtil.java b/mallinkService/src/main/java/com/iformall/utils/car/TJDCarUtil.java similarity index 86% rename from mallinkService/src/main/java/com/iformall/utils/TJDCarUtil.java rename to mallinkService/src/main/java/com/iformall/utils/car/TJDCarUtil.java index 1fdbfe6da..e764872e7 100644 --- a/mallinkService/src/main/java/com/iformall/utils/TJDCarUtil.java +++ b/mallinkService/src/main/java/com/iformall/utils/car/TJDCarUtil.java @@ -1,7 +1,8 @@ -package com.iformall.utils; +package com.iformall.utils.car; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.iformall.utils.MapUtil; import org.apache.http.Consts; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; @@ -267,6 +268,62 @@ public class TJDCarUtil { return result; } + //// TODO + /** + * deductionNotSettle 停车费批量抵扣接口 + * @param url + * @param partner + * @param key // 密钥 + * @param version + * { + "service": "parkhub.order.deductionForDetail", + "partner": "120a565de377427184de35ca0f320764", + "sign": "3347b109a1e44f3fd5baa78b74a84948", + "signType": "md5", + "charset": "utf-8", + "version": "1.0", + "timestamp": "2016-05-26 11:30:10", + "tradeId": "c39d3aac49d04e12a187681e6189f841", + "accountId": "a9b2963c98344bb292e0fa3f7dd70946", + "prePayType": "3", + "giveFreeTimeOut": "false", + "detailList":"[{ + },{ + },{ + \"outTradeNo\":\"PLDKY01\", \"identityType\":\"01\", \"identityId\":\"17710111111\", \"membershipGrade\":\"LV1\", \"amount\":\"12.50\", \"type\":\"0\", \"channel\":\"5013\", \"memo\":\"批量抵扣-金额-微信\" + \"outTradeNo\":\"PLDKY02\", \"identityType\":\"01\", \"identityId\":\"17710111111\", \"membershipGrade\":\"LV1\", \"couponType\":\"1\", \"minutes\":\"60\", \"type\":\"1\", \"channel\":\"2204\", \"memo\":\"批量抵扣-时长-会员卡券\" + \"outTradeNo\":\"PLDKY03\", \"identityType\":\"01\", \"identityId\":\"17710111111\", \"membershipGrade\":\"LV1\", \"couponType\":\"3\", \"startDt\":\"20180901110000\", \"endDt\":\"20180901170000\", \"integral\":\"500\", + \"type\":\"1\", + \"channel\":\"2205\", \"memo\":\"批量抵扣-区间-积分-会员补贴\" + }]" + } + * @throws Exception + */ + public static String deductionForDetail(String url, String partner, String key, String version, + String tradeId, String outTradeNo, String accountId, String deductionAmount) { + // 为指定订单抵扣停车费,如果此时车辆已经出场,返回isSuccess错误码为3,停简单系统不再接收此笔抵扣信息,对方系统 需要给用户发起退款。 + String service = "parkhub.order.deductionNotSettle"; + Map paramMap = MapUtil.getOrderMap(); + paramMap.put("tradeId", tradeId); + paramMap.put("deductionAmount", deductionAmount); + paramMap.put("outTradeNo", outTradeNo); + paramMap.put("accountId", accountId); + paramMap.put("charset", "utf-8"); + paramMap.put("partner", partner); + paramMap.put("version", version); + + String result = Proc(url, key, service, paramMap); + /* + "{\"timestamp\":\"1528534986636\", + \"returnCode\":\"T\", + \"prePayId\":\"7a1d52aa77ca487db4e61130394285bd\", + \"errorMSG\":\"\", + \"returnMsg\":\"OK\", + \"isSuccess\":\"0\"}[\\r][\\n]" + */ + return result; + } + /** * deductionNotSettle 停车费无结算抵扣 * @param url From fc2f83c8434b9fda8771964d6d80b00e0da9b8cb Mon Sep 17 00:00:00 2001 From: gongbiao Date: Thu, 19 Sep 2019 16:52:08 +0800 Subject: [PATCH 28/72] =?UTF-8?q?[=E7=B3=BB=E7=BB=9F=E5=8F=91=E5=8D=A1][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][=E5=8F=91=E9=80=81]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../market/WxCouponPresentController.java | 24 ++++++ .../iformall/domain/po/WxCouponPresent.java | 19 ++--- .../service/WxCouponPresentService.java | 4 + .../impl/WxCouponPresentServiceImpl.java | 75 +++++++++++++++++++ 4 files changed, 113 insertions(+), 9 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPresentController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPresentController.java index dc1d3663d..09a0d6cc8 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPresentController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPresentController.java @@ -2,9 +2,11 @@ package com.iformall.controller.market; import com.github.pagehelper.PageInfo; import com.iformall.annotation.SystemControllerLog; +import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; import com.iformall.domain.po.BaseEntity; +import com.iformall.domain.po.MallUserInfo; import com.iformall.domain.po.WxCouponPresent; import com.iformall.service.WxCouponPresentService; import io.swagger.annotations.Api; @@ -51,4 +53,26 @@ public class WxCouponPresentController extends BaseController { return new ResultData(wxCouponPresentService.findById(id)); } + + @ApiOperation("新增接口") + @PostMapping("add") + @SystemControllerLog(description = "新增") + public ResultData add(@RequestBody WxCouponPresent wxCouponPresent) { + logger.debug("[" + getIpAddr() + "] WxCouponInjectController::add"); + + if (wxCouponPresent.getCouponId() == null) { + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "请选择卡"); + } + + if (wxCouponPresent.getPhones().isEmpty()) { + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "请填写手机号"); + } + + MallUserInfo user = getUser(); + wxCouponPresent.setTenantId(user.getTenantId()); + wxCouponPresent.setUserId(user.getId()); + + return wxCouponPresentService.add(wxCouponPresent); + } + } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPresent.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPresent.java index 9ceac242d..670aa1ff0 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPresent.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPresent.java @@ -1,5 +1,6 @@ package com.iformall.domain.po; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; @@ -20,21 +21,22 @@ public class WxCouponPresent extends BaseEntity { @Transient protected List ids; - @io.swagger.annotations.ApiModelProperty(value = "租户ID", name = "tenantId") + @ApiModelProperty(value = "租户ID", name = "tenantId") private String tenantId; - @io.swagger.annotations.ApiModelProperty(value = "用户ID", name = "userId") + @ApiModelProperty(value = "用户ID", name = "userId") private Long userId; - @io.swagger.annotations.ApiModelProperty(value = "卡券ID", name = "couponId") + @ApiModelProperty(value = "卡券ID", name = "couponId") private Long couponId; - @io.swagger.annotations.ApiModelProperty(value = "卡券名称", name = "couponName") + @ApiModelProperty(value = "卡券名称", name = "couponName") private String couponName; - @io.swagger.annotations.ApiModelProperty(value = "手机", name = "phones") + @ApiModelProperty(value = "手机", name = "phones") private String phones; - @io.swagger.annotations.ApiModelProperty(value = "创建时间", name = "createDate") + @ApiModelProperty(value = "创建时间", name = "createDate") private Date createTime; - @io.swagger.annotations.ApiModelProperty(value = "更新时间", name = "updateDate") + @ApiModelProperty(value = "更新时间", name = "updateDate") private Date updateTime; - + @ApiModelProperty(value = "发送数量", name = "sendAmount") + private Integer sendAmount; @Transient protected Date sendTimeStart; @@ -42,5 +44,4 @@ public class WxCouponPresent extends BaseEntity { @Transient protected Date sendTimeEnd; - } diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponPresentService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponPresentService.java index dfa7f8ddc..e54cb7dc7 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponPresentService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponPresentService.java @@ -1,6 +1,7 @@ package com.iformall.service; import com.github.pagehelper.PageInfo; +import com.iformall.common.ResultData; import com.iformall.domain.po.WxCouponPresent; /** @@ -12,4 +13,7 @@ public interface WxCouponPresentService { PageInfo listAsPage(WxCouponPresent wxCouponPresent, Integer pageNum, Integer pageSize); WxCouponPresent findById(Long id); + + ResultData add(WxCouponPresent wxCouponPresent); + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java index f8396f59e..908e6c1c2 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java @@ -2,21 +2,50 @@ package com.iformall.service.impl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.iformall.common.ErrorCode; +import com.iformall.common.IdWorker; +import com.iformall.common.ResultData; +import com.iformall.domain.po.WxCoupon; +import com.iformall.domain.po.WxCouponPassword; import com.iformall.domain.po.WxCouponPresent; +import com.iformall.enums.EnumCouponPasswordStatus; +import com.iformall.enums.EnumCouponStatus; +import com.iformall.enums.EnumCouponValidType; +import com.iformall.exception.MallinkException; +import com.iformall.mapper.WxCouponPasswordMapper; import com.iformall.mapper.WxCouponPresentMapper; +import com.iformall.service.PushLimitService; import com.iformall.service.WxCouponPresentService; +import com.iformall.service.WxCouponService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Arrays; +import java.util.Date; +import java.util.HashSet; +import java.util.Set; +import java.util.stream.Collectors; + /** * @author gongbiao */ @Service public class WxCouponPresentServiceImpl implements WxCouponPresentService { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired WxCouponPresentMapper wxCouponPresentMapper; + @Autowired + PushLimitService pushLimitService; + + @Autowired + WxCouponService wxCouponService; + + @Autowired + WxCouponPasswordMapper wxCouponPasswordMapper; @Override public PageInfo listAsPage(WxCouponPresent record, Integer pageIndex, Integer pageSize) { @@ -28,4 +57,50 @@ public class WxCouponPresentServiceImpl implements WxCouponPresentService { return wxCouponPresentMapper.selectByPrimaryKey(id); } + @Override + public ResultData add(WxCouponPresent record) { + try { + pushLimitService.checkSendTime(record.getTenantId()); + } catch (MallinkException e) { + logger.error(e.getMessage()); + return new ResultData(e.getErrorCode(), e.getMessage()); + } + + WxCoupon wxCoupon = wxCouponService.getById(record.getCouponId()); + if (wxCoupon.getValidType().equals(EnumCouponValidType.BETWEEN_TWO_TIME.getCode())) { //时间范围 + if (new Date().after(wxCoupon.getValidEndDate())) { + return new ResultData(ErrorCode.COUPON_IS_EXPIRED); + } + } + if (!wxCoupon.getStatus().equals(EnumCouponStatus.COUPON_STATUS_THROW_IN.getCode())) { + return new ResultData(ErrorCode.COUPON_IS_TAKE_OFF); + } + + record.setCouponName(wxCoupon.getTitle()); + + String phones = record.getPhones(); + String[] phoneSplit = phones.split(","); + Set phoneSetTemp = new HashSet<>(Arrays.asList(phoneSplit)); + Set phoneSet = phoneSetTemp.stream().filter(p -> !p.isEmpty()).collect(Collectors.toSet()); + + WxCouponPassword wxCouponPassword = new WxCouponPassword(); + wxCouponPassword.setTenantId(record.getTenantId()); + wxCouponPassword.setCouponId(record.getCouponId()); + wxCouponPassword.setStatus(EnumCouponPasswordStatus.INIT.getCode()); + int inventory = wxCouponPasswordMapper.selectCount(wxCouponPassword); + if (phoneSet.size() > inventory) { + return new ResultData(ErrorCode.REMAIN_IS_EMPTY); + } + + final IdWorker idWorker = IdWorker.get(); + record.setId(idWorker.nextId()); + + record.setCouponName(wxCoupon.getTitle()); + record.setSendAmount(phoneSet.size()); + + wxCouponPresentMapper.insertSelective(record); + //发送短信 + return new ResultData(); + } + } From ed9a68f31226aa0ee9e595effb5740d8e29f8ab9 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Thu, 19 Sep 2019 16:58:35 +0800 Subject: [PATCH 29/72] =?UTF-8?q?[=E7=B3=BB=E7=BB=9F=E5=8F=91=E5=8D=A1][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][=E6=B7=BB=E5=8A=A0=E5=AD=97=E6=AE=B5SQL]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../db/migration/V201909170450__G_COUPON_PRESENT_CHANGED.sql | 2 ++ .../src/main/resources/mapper/WxCouponPresentMapper.xml | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 mallinkAdmin/src/main/resources/db/migration/V201909170450__G_COUPON_PRESENT_CHANGED.sql diff --git a/mallinkAdmin/src/main/resources/db/migration/V201909170450__G_COUPON_PRESENT_CHANGED.sql b/mallinkAdmin/src/main/resources/db/migration/V201909170450__G_COUPON_PRESENT_CHANGED.sql new file mode 100644 index 000000000..b04fe25c4 --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V201909170450__G_COUPON_PRESENT_CHANGED.sql @@ -0,0 +1,2 @@ +alter table wx_coupon_present +add column send_amount int(11) default 0 not null comment '发送数量'; \ No newline at end of file diff --git a/mallinkService/src/main/resources/mapper/WxCouponPresentMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponPresentMapper.xml index 098bee4d5..fba10885a 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponPresentMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponPresentMapper.xml @@ -9,10 +9,11 @@ + - `id`,`tenant_id`,`coupon_id`,`coupon_name`,`user_id`,`create_time`,`update_time` + `id`,`tenant_id`,`coupon_id`,`coupon_name`,`user_id`,`create_time`,`update_time`,`send_amount` From dc49834ca6a10bed618f57ccada1789a95b6e5bd Mon Sep 17 00:00:00 2001 From: gongbiao Date: Thu, 19 Sep 2019 18:24:02 +0800 Subject: [PATCH 30/72] =?UTF-8?q?[=E7=B3=BB=E7=BB=9F=E5=8F=91=E5=8D=A1][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][=E5=8F=91=E5=8D=A1]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/iformall/enums/EnumMsgModel.java | 2 + .../mapper/WxCouponPasswordMapper.java | 4 +- .../impl/WxCouponPresentServiceImpl.java | 83 ++++++++++++++----- .../service/msg/impl/SendSmsServiceImpl.java | 2 +- .../mapper/WxCouponPasswordMapper.xml | 6 ++ 5 files changed, 74 insertions(+), 23 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumMsgModel.java b/mallinkService/src/main/java/com/iformall/enums/EnumMsgModel.java index 28d473235..6c6906fc6 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumMsgModel.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumMsgModel.java @@ -34,6 +34,8 @@ public enum EnumMsgModel { //会员生日券 COUPON_BIRTHDAY_OPENED(28, "会员生日券倍率开启"), COUPON_BIRTHDAY_OPENED_NO(29, "会员生日券倍率未开启"), + + COUPON_CARD_SEND(30, "系统发卡"), ; public static EnumMsgModel getEnum(Integer code) { diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java index 72649d2a1..37bfb51c1 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java @@ -15,5 +15,7 @@ public interface WxCouponPasswordMapper extends CommonMapper findCouponGroupList(WxCouponPassword wxCouponPassword); List findCouponCountInfo(WxCouponPassword wxCouponPassword); - + + void updateStatus(List tempList); + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java index 908e6c1c2..26fb80edd 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java @@ -5,16 +5,18 @@ import com.github.pagehelper.PageInfo; import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; import com.iformall.common.ResultData; +import com.iformall.domain.po.WxAppinfo; import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxCouponPassword; import com.iformall.domain.po.WxCouponPresent; -import com.iformall.enums.EnumCouponPasswordStatus; -import com.iformall.enums.EnumCouponStatus; -import com.iformall.enums.EnumCouponValidType; +import com.iformall.domain.po.msg.WxMsgRecord; +import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.mapper.WxCouponPasswordMapper; import com.iformall.mapper.WxCouponPresentMapper; +import com.iformall.mq.MqBaseProducer; import com.iformall.service.PushLimitService; +import com.iformall.service.WxAppinfoService; import com.iformall.service.WxCouponPresentService; import com.iformall.service.WxCouponService; import org.slf4j.Logger; @@ -22,11 +24,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.Arrays; -import java.util.Date; -import java.util.HashSet; -import java.util.Set; -import java.util.stream.Collectors; +import java.util.*; /** * @author gongbiao @@ -47,6 +45,12 @@ public class WxCouponPresentServiceImpl implements WxCouponPresentService { @Autowired WxCouponPasswordMapper wxCouponPasswordMapper; + @Autowired + WxAppinfoService wxAppinfoService; + + @Autowired + private MqBaseProducer mqBaseProducer; + @Override public PageInfo listAsPage(WxCouponPresent record, Integer pageIndex, Integer pageSize) { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponPresentMapper.findList(record)); @@ -59,13 +63,13 @@ public class WxCouponPresentServiceImpl implements WxCouponPresentService { @Override public ResultData add(WxCouponPresent record) { + String tenantId = record.getTenantId(); try { - pushLimitService.checkSendTime(record.getTenantId()); + pushLimitService.checkSendTime(tenantId); } catch (MallinkException e) { logger.error(e.getMessage()); return new ResultData(e.getErrorCode(), e.getMessage()); } - WxCoupon wxCoupon = wxCouponService.getById(record.getCouponId()); if (wxCoupon.getValidType().equals(EnumCouponValidType.BETWEEN_TWO_TIME.getCode())) { //时间范围 if (new Date().after(wxCoupon.getValidEndDate())) { @@ -75,32 +79,69 @@ public class WxCouponPresentServiceImpl implements WxCouponPresentService { if (!wxCoupon.getStatus().equals(EnumCouponStatus.COUPON_STATUS_THROW_IN.getCode())) { return new ResultData(ErrorCode.COUPON_IS_TAKE_OFF); } - + //获取手机号 record.setCouponName(wxCoupon.getTitle()); - String phones = record.getPhones(); String[] phoneSplit = phones.split(","); - Set phoneSetTemp = new HashSet<>(Arrays.asList(phoneSplit)); - Set phoneSet = phoneSetTemp.stream().filter(p -> !p.isEmpty()).collect(Collectors.toSet()); + Set phoneSet = new HashSet<>(phoneSplit.length); + for (String phone : phoneSplit) { + if (!phone.isEmpty()) { + phoneSet.add(phone); + } + } + //查询有效券数量 WxCouponPassword wxCouponPassword = new WxCouponPassword(); - wxCouponPassword.setTenantId(record.getTenantId()); + wxCouponPassword.setTenantId(tenantId); wxCouponPassword.setCouponId(record.getCouponId()); wxCouponPassword.setStatus(EnumCouponPasswordStatus.INIT.getCode()); - int inventory = wxCouponPasswordMapper.selectCount(wxCouponPassword); - if (phoneSet.size() > inventory) { + List list = wxCouponPasswordMapper.findList(wxCouponPassword); + if (phoneSet.size() > list.size()) { return new ResultData(ErrorCode.REMAIN_IS_EMPTY); } - + //添加记录 final IdWorker idWorker = IdWorker.get(); record.setId(idWorker.nextId()); - record.setCouponName(wxCoupon.getTitle()); record.setSendAmount(phoneSet.size()); - wxCouponPresentMapper.insertSelective(record); - //发送短信 + //小程序 + WxAppinfo appInfo = wxAppinfoService.getCAppInfo(tenantId); + String priceStr = wxCoupon.getPriceStr(); + String name = appInfo.getName(); + List tempList = wxCouponPasswordMapper.findList(wxCouponPassword); + //循环发送 + int i = 0; + for (String phone : phoneSet) { + WxCouponPassword couponPassword = list.get(i); + //发送 + sendMsg(tenantId, phone, priceStr, name, couponPassword.getPassword()); + //记录发送数据便于更新状态 + tempList.add(couponPassword); + i++; + } + //修改状态 + wxCouponPasswordMapper.updateStatus(tempList); return new ResultData(); } + private void sendMsg(String tenantId, String phone, String money, String appName, String password) { + logger.info("》》》》》》》》》》》"); + logger.info("系统发卡发送短信开始"); + logger.info("》》》》》》》》》》》"); + Map msgReplaceMap = new HashMap(); + msgReplaceMap.put("app", appName); + msgReplaceMap.put("money", money); + msgReplaceMap.put("password", password); + WxMsgRecord wxMsgRecord = new WxMsgRecord(); + wxMsgRecord.setMsgType(EnumMsgRecordType.SMS.getCode()); + wxMsgRecord.setModelType(EnumMsgModel.COUPON_CARD_SEND.getCode()); + wxMsgRecord.setReceiver(phone); + wxMsgRecord.setTenantId(tenantId); + wxMsgRecord.setDynamicContentMap(msgReplaceMap); + mqBaseProducer.sendMessage(wxMsgRecord, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); + logger.info("》》》》》》》》》》》"); + logger.info("系统发卡发送短信结束"); + logger.info("》》》》》》》》》》》"); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/msg/impl/SendSmsServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/msg/impl/SendSmsServiceImpl.java index 8142e8e56..dc6a1e457 100644 --- a/mallinkService/src/main/java/com/iformall/service/msg/impl/SendSmsServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/msg/impl/SendSmsServiceImpl.java @@ -87,7 +87,7 @@ public class SendSmsServiceImpl implements MsgSendService { wxMsgValidationcode.setCode(record.getDynamicContentMap().get("s6")); } - String notifyUrl = wxMsgConfig.getVerifynotifyurl(); + String notifyUrl = wxMsgConfig.getNotifyurl(); Integer modelId = wxMsgValidationcodeModel.getModelId(); String result = WiwideUtil.sendMsg(secret, bid, publickey, phone, signature, msg, notifyUrl, EnumVerifyCode.YES.getCode().toString(), modelId); JSONObject jsonObjectResult = JSONObject.parseObject(result); diff --git a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml index da717c554..2caed05ca 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml @@ -117,5 +117,11 @@ group by cp.coupon_id + + + + update wx_coupon_password set status=1 where id = ${item.id} + + From 3e9f2231cbe6cd498a01afa4c7862e5317cbed48 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Thu, 19 Sep 2019 19:09:43 +0800 Subject: [PATCH 31/72] =?UTF-8?q?[=E7=B3=BB=E7=BB=9F=E5=8F=91=E5=8D=A1][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][url]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iformall/controller/market/WxCouponPresentController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPresentController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPresentController.java index 09a0d6cc8..c07cc5c23 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPresentController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPresentController.java @@ -22,7 +22,7 @@ import org.springframework.web.bind.annotation.*; * @author gongbiao */ @RestController -@RequestMapping("couponPrsent") +@RequestMapping("couponPresent") @Api(description = "卡投放接口") public class WxCouponPresentController extends BaseController { private final Logger logger = LoggerFactory.getLogger(this.getClass()); From 5687d3420d33696dabec77856272a4bfc91d2029 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Thu, 19 Sep 2019 19:26:45 +0800 Subject: [PATCH 32/72] =?UTF-8?q?[=E7=B3=BB=E7=BB=9F=E5=8F=91=E5=8D=A1][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][=E5=8F=91=E5=8D=A1]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/iformall/service/impl/WxCouponPresentServiceImpl.java | 1 + .../src/main/resources/mapper/WxCouponPasswordMapper.xml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java index 26fb80edd..929ce246d 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java @@ -117,6 +117,7 @@ public class WxCouponPresentServiceImpl implements WxCouponPresentService { //发送 sendMsg(tenantId, phone, priceStr, name, couponPassword.getPassword()); //记录发送数据便于更新状态 + couponPassword.setSendedPhone(phone); tempList.add(couponPassword); i++; } diff --git a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml index 2caed05ca..2af5ba7f6 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml @@ -120,7 +120,7 @@ - update wx_coupon_password set status=1 where id = ${item.id} + update wx_coupon_password set status=1,send_phone=#{sendPhone},update_date=now() where id = ${item.id} From 68eacff0caefbd8d36dc41e77bbe23ece1734178 Mon Sep 17 00:00:00 2001 From: Burce Date: Thu, 19 Sep 2019 20:29:42 +0800 Subject: [PATCH 33/72] =?UTF-8?q?[=E4=BF=AE=E5=A4=8D]c=5Fuser=5Fbasic?= =?UTF-8?q?=E7=A7=AF=E5=88=86=E6=95=B0=E6=8D=AE=E4=B8=BA=E7=A9=BA=E7=9A=84?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/WxCUserBasicInfoMapper.java | 6 ++ .../mapper/WxCreditHistoryMapper.java | 3 + .../mapper/WxCUserBasicInfoMapper.xml | 3 + .../mapper/WxCreditHistoryMapper.xml | 9 +++ .../controller/sys/DataInitController.java | 71 ++++++++++++++++++- 5 files changed, 90 insertions(+), 2 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCUserBasicInfoMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCUserBasicInfoMapper.java index e0a840590..7d4910979 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCUserBasicInfoMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCUserBasicInfoMapper.java @@ -44,5 +44,11 @@ public interface WxCUserBasicInfoMapper extends CommonMapper selectNotCUserList(); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCreditHistoryMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCreditHistoryMapper.java index ab5146988..c1ce58961 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCreditHistoryMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCreditHistoryMapper.java @@ -4,6 +4,7 @@ import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxCreditHistory; import com.iformall.domain.vo.WxCreditHistoryNewIdVo; import com.iformall.domain.vo.WxCreditHistoryVo; +import org.apache.ibatis.annotations.Param; import java.util.Date; import java.util.List; @@ -31,4 +32,6 @@ public interface WxCreditHistoryMapper extends CommonMapper findListAfter(Integer creditType, String dateTime); + + List findListByIds(@Param("userIds") List userIds); } diff --git a/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml b/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml index 8a0a4530e..744248dc7 100644 --- a/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml @@ -526,5 +526,8 @@ UPDATE wx_c_user_basic_info set act_record = act_record +1 where id = #{id} + diff --git a/mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml b/mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml index cf24ed7be..c89e7fd7a 100644 --- a/mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml @@ -253,4 +253,13 @@ select from wx_credit_history where create_date > #{dateTime} and credit_type = #{creditType} + + diff --git a/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java b/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java index aa02b91e5..19a70dfa9 100644 --- a/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java +++ b/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java @@ -1,5 +1,8 @@ package com.iformall.controller.sys; +import com.alibaba.fastjson.JSON; +import com.google.common.base.Function; +import com.google.common.collect.*; import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; import com.iformall.common.ResultData; @@ -8,12 +11,12 @@ import com.iformall.domain.po.*; import com.iformall.enums.EnumMsgModel; import com.iformall.enums.EnumScoreType; import com.iformall.enums.EnumUserType; -import com.iformall.exception.MallinkException; import com.iformall.mapper.*; import com.iformall.service.WxCreditHistoryService; import com.iformall.utils.DateUtils; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; +import org.apache.commons.collections.CollectionUtils; +import org.checkerframework.checker.nullness.qual.Nullable; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -22,6 +25,7 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; /** @@ -100,6 +104,28 @@ public class DataInitController extends BaseController { return new ResultData(); } + + /** + * 修复wx_c_user_basic_info积分数据 + * + * @return + */ + @GetMapping("/fixCredit4CUserBasic") + public ResultData fixCredit4CUserBasic() { + try { + MallUserInfo userInfo = getUser(); + if (userInfo.isFmSuperAdmin()) { + doFixCredit4CUserBasic(); + return new ResultData(); + } + } catch (Exception e) { + log.error("DataInitController::fixCredit4CUserBasic error ", e); + return new ResultData(ErrorCode.MSG_METHOD_REQUEST_ERROR, e.getMessage()); + } + + return new ResultData(); + } + /** * 核销积分数据修复 * @@ -121,6 +147,47 @@ public class DataInitController extends BaseController { return new ResultData(); } + @Transactional(rollbackFor = Exception.class) + public void doFixCredit4CUserBasic() { + log.debug("cUserBasic积分更新, begin --------------》"); + // 1 查找c_user_basic中c_user不存在且积分为null的用户用户 + List userBasicInfoList = cUserBasicInfoMapper.selectNotCUserList(); + List ids = userBasicInfoList.stream().map(WxCUserBasicInfo::getId).collect(Collectors.toList()); + //log.debug("ids {}", JSON.toJSONString(ids)); + + // 2 获取对应用户的积分记录 + List creditList = creditHistoryMapper.findListByIds(ids); + ImmutableListMultimap userCreditHistory = Multimaps.index(creditList, new Function() { + @Nullable + @Override + public Long apply(@Nullable WxCreditHistory input) { + return input.getCUserId(); + } + }); + + //3 将历史记录最好积分重设积分 + AtomicInteger count = new AtomicInteger(0); + userBasicInfoList.forEach(wxCUserBasicInfo -> { + ImmutableList historyList = userCreditHistory.get(wxCUserBasicInfo.getId()); + WxCUserBasicInfo toUpdateUser = new WxCUserBasicInfo(); + toUpdateUser.setId(wxCUserBasicInfo.getId()); + //用户积分不存在,跳过 + if (CollectionUtils.isEmpty(historyList)) { + //log.debug("cUserBasic积分更新,id: {} 积分记录不存在", wxCUserBasicInfo.getId()); + return; + } + //积分记录存在,使用最新的总积分重新赋值 + WxCreditHistory wxCreditHistory = historyList.get(0); + toUpdateUser.setCredit(wxCreditHistory.getCreditAmount()); + cUserBasicInfoMapper.updateByPrimaryKeySelective(toUpdateUser); + log.debug("cUserBasic积分更新,id: {},原积分: {},新积分: {}, 积分时间: {}", wxCUserBasicInfo.getId(), wxCUserBasicInfo.getCredit(), toUpdateUser.getCredit(), DateUtils.format(wxCreditHistory.getCreateDate())); + count.getAndIncrement(); + }); + + log.debug("cUserBasic积分更新,更新用户 {}", count.intValue()); + log.debug("cUserBasic积分更新, end --------------》"); + } + @Transactional(rollbackFor = Exception.class) public void doFixCredit() { // 1 获取积分记录 From 238115a756933519046c67bd5f9edaeba71b7e26 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Thu, 19 Sep 2019 21:09:30 +0800 Subject: [PATCH 34/72] =?UTF-8?q?[=E5=8D=A1=E5=AF=86][=E6=96=B0=E5=A2=9E]:?= =?UTF-8?q?=E5=8D=A1=E5=AF=86=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/market/WxCouponController.java | 146 ++++++++++-------- .../java/com/iformall/common/ErrorCode.java | 6 +- .../iformall/domain/po/WxCouponPassword.java | 2 + .../mapper/WxCouponPasswordMapper.java | 2 + .../service/WxCouponPasswordService.java | 10 ++ .../impl/WxCouponPasswordServiceImpl.java | 22 ++- .../mapper/WxCouponPasswordMapper.xml | 16 ++ 7 files changed, 135 insertions(+), 69 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java index b5fad77ba..ac95a2f94 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java @@ -8,9 +8,11 @@ import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxCouponChannel; +import com.iformall.domain.po.WxCouponPassword; import com.iformall.domain.vo.WxCouponStatisVo; import com.iformall.enums.*; import com.iformall.mapper.WxCouponChannelMapper; +import com.iformall.service.WxCouponPasswordService; import com.iformall.service.WxCouponService; import com.iformall.service.WxFlowService; import com.iformall.utils.DateUtils; @@ -24,6 +26,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.util.*; @RestController @@ -35,6 +40,8 @@ public class WxCouponController extends BaseController { @Autowired private WxCouponService wxCouponService; @Autowired + private WxCouponPasswordService couponPasswordService; + @Autowired private WxCouponChannelMapper wxCouponChannelMapper; @Autowired private WxFlowService wxFlowService; @@ -51,6 +58,7 @@ public class WxCouponController extends BaseController { wxCoupon.setTenantId(getTenantId()); return wxCouponService.list(wxCoupon, pageNum, pageSize); //全列表 } + @ApiOperation("分页列表接口") @GetMapping("listWithTypePress") @ApiImplicitParams({ @@ -82,13 +90,13 @@ public class WxCouponController extends BaseController { wxCoupon.setTenantId(getTenantId()); ResultData resultData = wxCouponService.saveOrUpdate(wxCoupon); - if(resultData.code != 200){ + if (resultData.code != 200) { return resultData; } //启动投放审批 - if(wxCoupon.getFlowParams() !=null && wxCoupon.getFlowParams().size()>0) { - wxCoupon.getFlowParams().put("businessId",wxCoupon.getId()); + if (wxCoupon.getFlowParams() != null && wxCoupon.getFlowParams().size() > 0) { + wxCoupon.getFlowParams().put("businessId", wxCoupon.getId()); wxFlowService.start(wxCoupon.getFlowParams(), getUserId(), getUser().getName(), getTenantId()); //修改coupon applyStatus状态为审核中 wxCoupon.setPutApplyStatus(EnumRentContractAppStatus.APPLYING.getCode()); @@ -104,12 +112,12 @@ public class WxCouponController extends BaseController { if (wxCoupon.getId() == null) { return new ResultData(ResultData.ERROR, "缺少id"); } - if(EnumDelFlag.YES.getCode().equals(wxCoupon.getIsDel())){ + if (EnumDelFlag.YES.getCode().equals(wxCoupon.getIsDel())) { WxCouponChannel query = new WxCouponChannel(); query.setTenantId(wxCoupon.getTenantId()); query.setCouponId(wxCoupon.getId()); query.setStatus(EnumCouponChannelStatus.STATUS_THROW_IN.getCode()); - if(CollectionUtils.isNotEmpty(wxCouponChannelMapper.findList(query))){ + if (CollectionUtils.isNotEmpty(wxCouponChannelMapper.findList(query))) { return new ResultData(ResultData.ERROR, "有活动正在上架,请先下架。"); } } @@ -117,14 +125,14 @@ public class WxCouponController extends BaseController { //启动审批流 if (wxCoupon.getFlowParams() != null && wxCoupon.getFlowParams().size() > 0) { - logger.info("------coupon.update().businessType:"+wxCoupon.getFlowParams().get("businessType")); - wxCoupon.getFlowParams().put("businessId",wxCoupon.getId()); + logger.info("------coupon.update().businessType:" + wxCoupon.getFlowParams().get("businessType")); + wxCoupon.getFlowParams().put("businessId", wxCoupon.getId()); wxFlowService.start(wxCoupon.getFlowParams(), getUserId(), getUser().getName(), getTenantId()); //作废审批 if (EnumCouponStatus.COUPON_STATUS_TAKE_OFFF.getCode().equals(wxCoupon.getStatus())) { wxCoupon.setCancleApplyStatus(EnumRentContractAppStatus.APPLYING.getCode()); return new ResultData(wxCoupon); - }else{ + } else { //投放审批 wxCoupon.setPutApplyStatus(EnumRentContractAppStatus.APPLYING.getCode()); } @@ -133,7 +141,7 @@ public class WxCouponController extends BaseController { } @ApiOperation("根据id更新库存及有效期接口") - @PostMapping("updateStokeAndValidDate") + @PostMapping("updateStokeAndValidDate") @SystemControllerLog(description = "券投放-库存/有效期更新") public ResultData updateStokeAndValidDate(@RequestBody WxCoupon wxCoupon) { logger.debug("[" + getIpAddr() + "] WxCouponController::updateStokeAndValidDate"); @@ -141,93 +149,93 @@ public class WxCouponController extends BaseController { logger.error("缺少id"); return new ResultData(ResultData.ERROR, "缺少id"); } - if(wxCoupon.getType() == null) { + if (wxCoupon.getType() == null) { logger.error("缺少type"); return new ResultData(ResultData.ERROR, "缺少type"); } - if(wxCoupon.getRemainInventory() == null || wxCoupon.getInventory() == null) { + if (wxCoupon.getRemainInventory() == null || wxCoupon.getInventory() == null) { logger.error("库存错误1"); return new ResultData(ErrorCode.COUPON_STOCK_ERR); } - if(wxCoupon.getRemainInventory() > wxCoupon.getInventory()) { + if (wxCoupon.getRemainInventory() > wxCoupon.getInventory()) { logger.error("库存错误2"); return new ResultData(ErrorCode.COUPON_STOCK_ERR); } - if(wxCoupon.getValidType() == null) { + if (wxCoupon.getValidType() == null) { logger.error("库存错误3"); return new ResultData(ErrorCode.COUPON_VALID_DATE_ERR); } - if(wxCoupon.getValidType().equals(EnumCouponValidType.BETWEEN_TWO_TIME.getCode())) { - if(wxCoupon.getValidEndDate() == null) { + if (wxCoupon.getValidType().equals(EnumCouponValidType.BETWEEN_TWO_TIME.getCode())) { + if (wxCoupon.getValidEndDate() == null) { logger.error("有效期错误1"); return new ResultData(ErrorCode.COUPON_VALID_DATE_ERR); } } else { - if(wxCoupon.getValidDays() == null) { + if (wxCoupon.getValidDays() == null) { logger.error("有效期错误2"); return new ResultData(ErrorCode.COUPON_VALID_DATE_ERR); } } - if(wxCoupon.getType().equals(EnumCouponType.COUPON_TINGCHE.getCode()) || - wxCoupon.getType().equals(EnumCouponType.COUPON_CREDIT_PARK.getCode())) { + if (wxCoupon.getType().equals(EnumCouponType.COUPON_TINGCHE.getCode()) || + wxCoupon.getType().equals(EnumCouponType.COUPON_CREDIT_PARK.getCode())) { logger.error("券库存有效期不支持停车券"); return new ResultData(ErrorCode.COUPON_STOCK_DATE_NO_CAR); } wxCoupon.setTenantId(getTenantId()); WxCoupon coupon = wxCouponService.findById(wxCoupon); - if(coupon!=null){ - if((wxCoupon.getValidEndDate()!=null&&coupon.getValidEndDate()!=null && DateUtils.format(wxCoupon.getValidEndDate()).equals(DateUtils.format(coupon.getValidEndDate())) + if (coupon != null) { + if ((wxCoupon.getValidEndDate() != null && coupon.getValidEndDate() != null && DateUtils.format(wxCoupon.getValidEndDate()).equals(DateUtils.format(coupon.getValidEndDate())) && wxCoupon.getInventory().equals(coupon.getInventory())) || - (wxCoupon.getValidDays()!=null && coupon.getValidDays()!=null && wxCoupon.getInventory().equals(coupon.getInventory()) && + (wxCoupon.getValidDays() != null && coupon.getValidDays() != null && wxCoupon.getInventory().equals(coupon.getInventory()) && wxCoupon.getValidDays().equals(coupon.getValidDays())) - ){ + ) { return new ResultData(ErrorCode.COUPON_STOCK_VALID_DATE_SETTING_ERR); } - if(wxCoupon.getValidEndDate()!=null && wxCoupon.getValidEndDate().before(coupon.getValidEndDate())){ + if (wxCoupon.getValidEndDate() != null && wxCoupon.getValidEndDate().before(coupon.getValidEndDate())) { return new ResultData(ErrorCode.COUPON_STOCK_ENDTIME_ERR); } - if(wxCoupon.getInventory()!=null && wxCoupon.getInventory().intValue() < coupon.getInventory().intValue() ){ + if (wxCoupon.getInventory() != null && wxCoupon.getInventory().intValue() < coupon.getInventory().intValue()) { return new ResultData(ErrorCode.COUPON_STOCK_INV_ERR); } - if(wxCoupon.getValidDays()!=null && coupon.getValidDays()!=null && wxCoupon.getValidDays().intValue() < coupon.getValidDays().intValue()){ + if (wxCoupon.getValidDays() != null && coupon.getValidDays() != null && wxCoupon.getValidDays().intValue() < coupon.getValidDays().intValue()) { return new ResultData(ErrorCode.COUPON_STOCK_ENDTIME_ERR); } } //启动审批流 - if(wxCoupon.getFlowParams() != null && wxCoupon.getFlowParams().size() >0){ - List> variables = (List)wxCoupon.getFlowParams().get("variables"); - Map map = new HashedMap(); - map.put("key","inventory"); - map.put("value",wxCoupon.getInventory()); + if (wxCoupon.getFlowParams() != null && wxCoupon.getFlowParams().size() > 0) { + List> variables = (List) wxCoupon.getFlowParams().get("variables"); + Map map = new HashedMap(); + map.put("key", "inventory"); + map.put("value", wxCoupon.getInventory()); variables.add(map); map = new HashedMap(); - map.put("key","remainInventory"); - map.put("value",wxCoupon.getRemainInventory()); + map.put("key", "remainInventory"); + map.put("value", wxCoupon.getRemainInventory()); variables.add(map); map = new HashedMap(); - map.put("key","type"); - map.put("value",wxCoupon.getType()); + map.put("key", "type"); + map.put("value", wxCoupon.getType()); variables.add(map); map = new HashedMap(); - map.put("key","validEndDate"); - map.put("value",wxCoupon.getValidEndDate()); + map.put("key", "validEndDate"); + map.put("value", wxCoupon.getValidEndDate()); map = new HashedMap(); - map.put("key","validStartDate"); - map.put("value",wxCoupon.getValidStartDate()); + map.put("key", "validStartDate"); + map.put("value", wxCoupon.getValidStartDate()); map = new HashedMap(); - map.put("key","validType"); - map.put("value",wxCoupon.getValidType()); + map.put("key", "validType"); + map.put("value", wxCoupon.getValidType()); variables.add(map); map = new HashedMap(); - map.put("key","validDays"); - map.put("value",wxCoupon.getValidDays()); + map.put("key", "validDays"); + map.put("value", wxCoupon.getValidDays()); variables.add(map); - wxCoupon.getFlowParams().put("businessId",wxCoupon.getId()); + wxCoupon.getFlowParams().put("businessId", wxCoupon.getId()); wxFlowService.start(wxCoupon.getFlowParams(), getUserId(), getUser().getName(), getTenantId()); //更新状态 WxCoupon updateCoupon = new WxCoupon(); @@ -236,7 +244,7 @@ public class WxCouponController extends BaseController { updateCoupon.setStockApplyStatus(EnumRentContractAppStatus.APPLYING.getCode()); updateCoupon.setUpdateDate(new Date()); wxCouponService.update(updateCoupon); - }else{ + } else { return wxCouponService.updateCouponStockAndEndTime(wxCoupon); } @@ -258,7 +266,8 @@ public class WxCouponController extends BaseController { @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) @SystemControllerLog(description = "券投放-查询") public ResultData findById(@RequestParam Long id) { - logger.debug("[" + getIpAddr() + "] WxCouponController::findById");; + logger.debug("[" + getIpAddr() + "] WxCouponController::findById"); + ; return new ResultData(wxCouponService.getVoById(id)); } @@ -271,26 +280,26 @@ public class WxCouponController extends BaseController { @SystemControllerLog(description = "券投放-卡营销列表") public ResultData findCardCountList(@ModelAttribute WxCoupon wxCoupon, Integer pageNum, Integer pageSize) { //默认时间本月第一天,截止到当天 - Map result = new HashedMap(); - if(wxCoupon.getStartdate() == null){ + Map result = new HashedMap(); + if (wxCoupon.getStartdate() == null) { wxCoupon.setStartdate(DateUtils.getFirstDayForCurrMonth()); } - if(wxCoupon.getEnddate() == null){ + if (wxCoupon.getEnddate() == null) { wxCoupon.setEnddate(DateUtils.stringToDate(DateUtils.getSystemTime("yyyy-MM-dd") + " 23:59:59")); } - PageInfo pageInfo = wxCouponService.findCountData(wxCoupon,pageNum,pageSize); - for (WxCouponStatisVo coupon:pageInfo.getList()) { - if(coupon.getSaleAmount() == null){ + PageInfo pageInfo = wxCouponService.findCountData(wxCoupon, pageNum, pageSize); + for (WxCouponStatisVo coupon : pageInfo.getList()) { + if (coupon.getSaleAmount() == null) { coupon.setSaleAmount(0); } - if(coupon.getSumPayment() == null){ + if (coupon.getSumPayment() == null) { coupon.setSumPayment(0); } - if(coupon.getSumSubsidy() == null){ + if (coupon.getSumSubsidy() == null) { coupon.setSumSubsidy(0); } } - result.put("list",pageInfo); + result.put("list", pageInfo); return new ResultData(result); } @@ -302,20 +311,20 @@ public class WxCouponController extends BaseController { @SystemControllerLog(description = "券投放-券营销列表") public ResultData findCouponCountList(@ModelAttribute WxCoupon wxCoupon, Integer pageNum, Integer pageSize) { //默认时间本月第一天,截止到当天 - Map result = new HashedMap(); - if(wxCoupon.getStartdate() == null){ + Map result = new HashedMap(); + if (wxCoupon.getStartdate() == null) { wxCoupon.setStartdate(DateUtils.getFirstDayForCurrMonth()); } - if(wxCoupon.getEnddate() == null){ + if (wxCoupon.getEnddate() == null) { wxCoupon.setEnddate(DateUtils.stringToDate(DateUtils.getSystemTime("yyyy-MM-dd") + " 23:59:59")); } - PageInfo pageInfo = wxCouponService.findCouponData(wxCoupon,pageNum,pageSize); - for (WxCouponStatisVo coupon:pageInfo.getList()) { - if(coupon.getSumSubsidy() == null){ + PageInfo pageInfo = wxCouponService.findCouponData(wxCoupon, pageNum, pageSize); + for (WxCouponStatisVo coupon : pageInfo.getList()) { + if (coupon.getSumSubsidy() == null) { coupon.setSumSubsidy(0); } - if(coupon.getSumSubsidy() == null){ + if (coupon.getSumSubsidy() == null) { coupon.setSumSubsidy(0); } } @@ -329,10 +338,21 @@ public class WxCouponController extends BaseController { @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) @SystemControllerLog(description = "券投放-砍价营销列表") public ResultData findPressCountList(@ModelAttribute WxCoupon wxCoupon, Integer pageNum, Integer pageSize) { - Map result = new HashedMap(); + Map result = new HashedMap(); wxCoupon.setTenantId(getTenantId()); - PageInfo pages = wxCouponService.findPressData(wxCoupon,pageNum,pageSize); + PageInfo pages = wxCouponService.findPressData(wxCoupon, pageNum, pageSize); return new ResultData(pages); } + @GetMapping("exportCouponPassword") + @SystemControllerLog(description = "卡券兑换码-导出数据") + public void exportCouponPassword(@ModelAttribute WxCouponPassword wxCouponPassword, HttpServletRequest request, HttpServletResponse response) { + wxCouponPassword.setTenantId(getTenantId()); + wxCouponPassword.setExpireDate(new Date()); + if (wxCouponPassword.getCouponId() == null) { + wxCouponPassword.setCouponId(0L); + } + couponPasswordService.exportData(request, response, wxCouponPassword); + } + } diff --git a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java index 0a5e1413e..1e478befe 100644 --- a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java @@ -222,9 +222,9 @@ public enum ErrorCode{ /** * 卡密 */ - CARD_PASSWORD_NOT_FOUND(9501, "兑换码未找到"), - CARD_PASSWORD_HAD_USED(9502, "兑换码已失效"), - CARD_PASSWORD_IS_CANCELED(9503, "兑换码已失效"), + COUPON_PASSWORD_NOT_FOUND(9501, "兑换码未找到"), + COUPON_PASSWORD_HAD_USED(9502, "兑换码已失效"), + COUPON_PASSWORD_IS_CANCELED(9503, "兑换码已失效"), /** * 微信 diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java index 46266be8c..cffc19320 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java @@ -1,5 +1,6 @@ package com.iformall.domain.po; +import cn.afterturn.easypoi.excel.annotation.Excel; import lombok.Data; import lombok.EqualsAndHashCode; @@ -26,6 +27,7 @@ public class WxCouponPassword extends BaseEntity { private Long couponId; @io.swagger.annotations.ApiModelProperty(value="卡券短ID",name="couponShort") private String couponShort; + @Excel(name = "兑换码", width = 20, orderNum = "1") @io.swagger.annotations.ApiModelProperty(value="商户名称",name="password") private String password; @io.swagger.annotations.ApiModelProperty(value="卡密状态: 0初始1信息发出中2信息已发出3已使用",name="status") diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java index 37bfb51c1..82a910167 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java @@ -10,6 +10,8 @@ public interface WxCouponPasswordMapper extends CommonMapper findList(WxCouponPassword wxCouponPassword); + List findAvaPasswordListByCouponId(WxCouponPassword wxCouponPassword); + void insertCouponPasswds(List pwdlist); int updateStatusByCouponId(Long couponId); List findCouponGroupList(WxCouponPassword wxCouponPassword); diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponPasswordService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponPasswordService.java index ebacc4abf..5cd6a7559 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponPasswordService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponPasswordService.java @@ -4,6 +4,8 @@ import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxCouponPassword; import com.iformall.domain.vo.WxCouponPasswordCountInfoVO; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.util.List; public interface WxCouponPasswordService { @@ -59,4 +61,12 @@ public interface WxCouponPasswordService { List findCouponList(String tenantId); + /** + * 导出兑换码 + * @param request + * @param response + * @param couponPassword + */ + void exportData(HttpServletRequest request, HttpServletResponse response, WxCouponPassword couponPassword); + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java index 3f1b281f0..b8c47dd64 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java @@ -9,12 +9,15 @@ import com.iformall.domain.vo.WxCouponPasswordCountInfoVO; import com.iformall.common.ErrorCode; import com.iformall.exception.MallinkException; import com.iformall.mapper.WxCouponPasswordMapper; +import com.iformall.service.ExcelService; import com.iformall.service.WxCouponPasswordService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -27,6 +30,9 @@ public class WxCouponPasswordServiceImpl implements WxCouponPasswordService { @Autowired WxCouponPasswordMapper wxCouponPasswordMapper; + @Autowired + ExcelService excelService; + @Override public PageInfo listAsPage(WxCouponPassword record, Integer pageIndex, Integer pageSize) { @@ -42,7 +48,7 @@ public class WxCouponPasswordServiceImpl implements WxCouponPasswordService { public WxCouponPassword getByObj(WxCouponPassword obj) { List pwdList = wxCouponPasswordMapper.findList(obj); if (pwdList.size() <= 0) { - throw new MallinkException(ErrorCode.CARD_PASSWORD_NOT_FOUND); + throw new MallinkException(ErrorCode.COUPON_PASSWORD_NOT_FOUND); } WxCouponPassword password = null; Integer errCode = EnumCouponPasswordStatus.INIT.getCode(); @@ -59,10 +65,10 @@ public class WxCouponPasswordServiceImpl implements WxCouponPasswordService { if (password == null) { if (errCode.equals(EnumCouponPasswordStatus.USED.getCode())) { logger.error("卡券已使用"); - throw new MallinkException(ErrorCode.CARD_PASSWORD_HAD_USED); + throw new MallinkException(ErrorCode.COUPON_PASSWORD_HAD_USED); } else { logger.error("卡券已过期或已作废"); - throw new MallinkException(ErrorCode.CARD_PASSWORD_IS_CANCELED); + throw new MallinkException(ErrorCode.COUPON_PASSWORD_IS_CANCELED); } } return password; @@ -145,6 +151,16 @@ public class WxCouponPasswordServiceImpl implements WxCouponPasswordService { wxCouponPasswordMapper.insertCouponPasswds(couponPasswords); } + @Override + public void exportData(HttpServletRequest request, HttpServletResponse response, WxCouponPassword couponPassword) { + List pwdList = wxCouponPasswordMapper.findAvaPasswordListByCouponId(couponPassword); + if (pwdList.isEmpty()) { + throw new MallinkException(ErrorCode.COUPON_PASSWORD_NOT_FOUND); + } + excelService.exportExcel(pwdList, null, "兑换码", WxCouponPassword.class, "卡兑换码.xlsx", response, false); + + } + /* public static void main(String[] args) { WxCouponPasswordServiceImpl ll = new WxCouponPasswordServiceImpl(); diff --git a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml index 2af5ba7f6..58389a5cc 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml @@ -74,6 +74,22 @@ + + INSERT INTO wx_coupon_password (`id`,`coupon_id`,`coupon_short`,`password`,`status`,`create_date`,`update_date`) VALUES From 774a94ef93b24736666d2d30183f4b65fadb04d9 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Thu, 19 Sep 2019 19:58:26 +0800 Subject: [PATCH 35/72] =?UTF-8?q?[=E7=B3=BB=E7=BB=9F=E5=8F=91=E5=8D=A1][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][=E5=8F=91=E5=8D=A1]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/WxCouponPasswordMapper.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml index 58389a5cc..679907372 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml @@ -136,7 +136,9 @@ - update wx_coupon_password set status=1,send_phone=#{sendPhone},update_date=now() where id = ${item.id} + update wx_coupon_password set + status=1,send_phone=#{item.sendPhone},update_date=now(),expire_date=date_add(now(),interval 30 DAY) where id + = ${item.id} From 145c569f252f17c42984414f00f95cc9ff5ed3bd Mon Sep 17 00:00:00 2001 From: gongbiao Date: Thu, 19 Sep 2019 21:18:01 +0800 Subject: [PATCH 36/72] =?UTF-8?q?[=E7=B3=BB=E7=BB=9F=E5=8F=91=E5=8D=A1][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][=E5=8F=91=E9=80=81=E7=9F=AD=E4=BF=A1?= =?UTF-8?q?=E4=B8=9A=E5=8A=A1]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../V201909170451__G_MSG_CALLBACK.sql | 2 ++ .../com/iformall/domain/po/WxMsgCallback.java | 3 +++ .../service/WxMsgValidationcodeService.java | 4 +--- .../impl/WxCouponPresentServiceImpl.java | 5 +++-- .../impl/WxMsgCallbackServiceImpl.java | 21 +++++++++++++------ .../impl/WxMsgValidationcodeServiceImpl.java | 6 +++++- .../service/msg/impl/SendSmsServiceImpl.java | 7 ++++--- .../resources/mapper/WxMsgCallbackMapper.xml | 5 +++-- 8 files changed, 36 insertions(+), 17 deletions(-) create mode 100644 mallinkAdmin/src/main/resources/db/migration/V201909170451__G_MSG_CALLBACK.sql diff --git a/mallinkAdmin/src/main/resources/db/migration/V201909170451__G_MSG_CALLBACK.sql b/mallinkAdmin/src/main/resources/db/migration/V201909170451__G_MSG_CALLBACK.sql new file mode 100644 index 000000000..20e5d9d1c --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V201909170451__G_MSG_CALLBACK.sql @@ -0,0 +1,2 @@ +alter table wx_msg_callback +add column business_id bigint(20) default 0 not null comment '业务ID'; diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxMsgCallback.java b/mallinkService/src/main/java/com/iformall/domain/po/WxMsgCallback.java index 2b1e8a6b9..bf43bd06d 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxMsgCallback.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxMsgCallback.java @@ -49,4 +49,7 @@ public class WxMsgCallback extends BaseEntity { @io.swagger.annotations.ApiModelProperty(value="msgId",name="msgId") private Long msgId; + @io.swagger.annotations.ApiModelProperty(value = "业务ID", name = "businessId") + private Long businessId; + } diff --git a/mallinkService/src/main/java/com/iformall/service/WxMsgValidationcodeService.java b/mallinkService/src/main/java/com/iformall/service/WxMsgValidationcodeService.java index 3deb81378..6347f6177 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxMsgValidationcodeService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxMsgValidationcodeService.java @@ -4,8 +4,6 @@ import com.github.pagehelper.PageInfo; import com.iformall.common.ResultData; import com.iformall.domain.po.WxMsgValidationcode; -import java.util.Map; - public interface WxMsgValidationcodeService { /** * 根据实体查询分页列表 @@ -44,6 +42,6 @@ public interface WxMsgValidationcodeService { ResultData hasvalidationcode(WxMsgValidationcode record); - void addMsgCallback(WxMsgValidationcode wxmsg, String batchNo); + void addMsgCallback(WxMsgValidationcode wxmsg, String batchNo, String id); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java index 929ce246d..400b1776f 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java @@ -115,7 +115,7 @@ public class WxCouponPresentServiceImpl implements WxCouponPresentService { for (String phone : phoneSet) { WxCouponPassword couponPassword = list.get(i); //发送 - sendMsg(tenantId, phone, priceStr, name, couponPassword.getPassword()); + sendMsg(tenantId, phone, priceStr, name, couponPassword.getPassword(), couponPassword.getId().toString()); //记录发送数据便于更新状态 couponPassword.setSendedPhone(phone); tempList.add(couponPassword); @@ -126,11 +126,12 @@ public class WxCouponPresentServiceImpl implements WxCouponPresentService { return new ResultData(); } - private void sendMsg(String tenantId, String phone, String money, String appName, String password) { + private void sendMsg(String tenantId, String phone, String money, String appName, String password, String id) { logger.info("》》》》》》》》》》》"); logger.info("系统发卡发送短信开始"); logger.info("》》》》》》》》》》》"); Map msgReplaceMap = new HashMap(); + msgReplaceMap.put("id", id); msgReplaceMap.put("app", appName); msgReplaceMap.put("money", money); msgReplaceMap.put("password", password); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMsgCallbackServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMsgCallbackServiceImpl.java index 746d4e2e2..e76c329e0 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMsgCallbackServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMsgCallbackServiceImpl.java @@ -4,10 +4,8 @@ import com.alibaba.fastjson.JSONArray; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.iformall.common.IdWorker; -import com.iformall.domain.po.WxMsgCallback; -import com.iformall.domain.po.WxMsgConfig; -import com.iformall.domain.po.WxMsgModel; -import com.iformall.domain.po.WxMsgValidationcodeModel; +import com.iformall.domain.po.*; +import com.iformall.enums.EnumCouponPasswordStatus; import com.iformall.enums.EnumMsgSendStatus; import com.iformall.mapper.*; import com.iformall.service.WxMsgCallbackService; @@ -38,6 +36,9 @@ public class WxMsgCallbackServiceImpl implements WxMsgCallbackService { @Autowired WxMsgMapper wxMsgMapper; + @Autowired + WxCouponPasswordMapper wxCouponPasswordMapper; + @Override public PageInfo listAsPage(WxMsgCallback record, Integer pageIndex, Integer pageSize) { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxMsgCallbackMapper.findList(record)); @@ -75,11 +76,11 @@ public class WxMsgCallbackServiceImpl implements WxMsgCallbackService { List wxMsgCallbacks = JSONArray.parseArray(param.get("item"), WxMsgCallback.class); wxMsgConfig = list.get(0); wxMsgConfig.setRemains(wxMsgConfig.getRemains() - wxMsgCallbacks.size()); - //wxMsgConfigMapper.updateByPrimaryKeySelective(wxMsgConfig); final IdWorker idWorker = IdWorker.get(); for (WxMsgCallback wxMsgCallback : wxMsgCallbacks) { WxMsgCallback callback=wxMsgCallbackMapper.queryCallbackByBatchNoAndPhone(wxMsgCallback); - if(callback!=null){//有更新,无插入 + if (callback != null) { + //有更新,无插入 callback.setSign(param.get("sign")); callback.setTenantId(tenantId); if (!wxMsgCallback.getStatus().equals(EnumMsgSendStatus.MSG_SEND_SUCCESS.getCode())) { @@ -93,6 +94,14 @@ public class WxMsgCallbackServiceImpl implements WxMsgCallbackService { callback.setCallbackId(wxMsgCallback.getId()); callback.setUpdatetime(new Date()); wxMsgCallbackMapper.updateByPrimaryKeySelective(callback); + //更新业务 + if (!callback.getBusinessId().equals(0L)) { + WxCouponPassword couponPassword = new WxCouponPassword(); + couponPassword.setId(callback.getBusinessId()); + couponPassword.setStatus(EnumCouponPasswordStatus.MSG_SENDED.getCode()); + couponPassword.setUpdateDate(new Date()); + wxCouponPasswordMapper.updateByPrimaryKeySelective(couponPassword); + } }else{ Long callbackId = wxMsgCallback.getId(); wxMsgCallback.setId(idWorker.nextId()); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMsgValidationcodeServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMsgValidationcodeServiceImpl.java index 06ec46fb4..108c70be5 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMsgValidationcodeServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMsgValidationcodeServiceImpl.java @@ -14,6 +14,7 @@ import com.iformall.mq.MqBaseProducer; import com.iformall.service.WxMsgValidationcodeService; import com.iformall.utils.DateUtils; import org.apache.commons.collections.map.HashedMap; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -113,7 +114,7 @@ public class WxMsgValidationcodeServiceImpl implements WxMsgValidationcodeServic } @Override - public void addMsgCallback(WxMsgValidationcode wxmsg, String batchNo){ + public void addMsgCallback(WxMsgValidationcode wxmsg, String batchNo, String id) { logger.info("验证码发送时主动添加回调记录开始..."); String phone = wxmsg.getPhone(); final IdWorker idWorker = IdWorker.get(); @@ -125,6 +126,9 @@ public class WxMsgValidationcodeServiceImpl implements WxMsgValidationcodeServic wxMsgCallback.setMsgId(wxmsg.getId()); wxMsgCallback.setStatus(EnumMsgSendStatus.MSG_SEND_FAIL.getCode()); wxMsgCallback.setCreatetime(new Date()); + if (StringUtils.isNotEmpty(id)) { + wxMsgCallback.setBusinessId(Long.parseLong(id)); + } wxMsgCallbackMapper.insertSelective(wxMsgCallback); logger.info("验证码发送时主动添加回调记录结束..."); } diff --git a/mallinkService/src/main/java/com/iformall/service/msg/impl/SendSmsServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/msg/impl/SendSmsServiceImpl.java index dc6a1e457..7465294b2 100644 --- a/mallinkService/src/main/java/com/iformall/service/msg/impl/SendSmsServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/msg/impl/SendSmsServiceImpl.java @@ -56,7 +56,7 @@ public class SendSmsServiceImpl implements MsgSendService { throw new MallinkException(ErrorCode.MSG_CONFIG_NOT_FOUND); } wxMsgConfig = wxMsgConfigs.get(0); - if(wxMsgConfig.getRemains() <=0l){ + if (wxMsgConfig.getRemains() <= 0L) { throw new MallinkException(ErrorCode.MSG_CONFIG_ACCOUNT); } @@ -96,7 +96,7 @@ public class SendSmsServiceImpl implements MsgSendService { if (ret.equals("1")) { final IdWorker idWorker = IdWorker.get(); wxMsgValidationcode.setId(idWorker.nextId()); - long currentTime = System.currentTimeMillis() ; + long currentTime = System.currentTimeMillis(); Date createtime=new Date(currentTime); wxMsgValidationcode.setCreatetime(createtime); Integer minutes = wxMsgValidationcodeModel.getMinutes(); @@ -106,7 +106,8 @@ public class SendSmsServiceImpl implements MsgSendService { wxMsgValidationcode.setExpiretime(expiredate); } wxMsgValidationcodeMapper.insertSelective(wxMsgValidationcode); - wxMsgValidationcodeService.addMsgCallback(wxMsgValidationcode,batchNo); + String id = record.getDynamicContentMap().get("id"); + wxMsgValidationcodeService.addMsgCallback(wxMsgValidationcode, batchNo, id); //扣减剩余条数 wxMsgConfig.setRemains(1L); wxMsgConfigMapper.updateRemains(wxMsgConfig); diff --git a/mallinkService/src/main/resources/mapper/WxMsgCallbackMapper.xml b/mallinkService/src/main/resources/mapper/WxMsgCallbackMapper.xml index c817cccea..16eb52f33 100644 --- a/mallinkService/src/main/resources/mapper/WxMsgCallbackMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxMsgCallbackMapper.xml @@ -15,11 +15,12 @@ - + + - `id`,`tenant_id`,`batch_no`,`phone`,`begintime`,`endtime`,`status`,`status_msg`,`sign`,`createtime`,`updatetime`,`msg_id`,`callback_id` + `id`,`tenant_id`,`batch_no`,`phone`,`begintime`,`endtime`,`status`,`status_msg`,`sign`,`createtime`,`updatetime`,`msg_id`,`callback_id`,`business_id` From 29a4534862675cc73e660f566aff3a19b76eb477 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Fri, 20 Sep 2019 11:03:34 +0800 Subject: [PATCH 37/72] =?UTF-8?q?[=E7=B3=BB=E7=BB=9F=E5=8F=91=E5=8D=A1][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][=E6=9F=A5=E8=AF=A2=E5=8D=A1=E6=95=B0?= =?UTF-8?q?=E6=8D=AE]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/WxCouponPasswordMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml index 679907372..b3fcd6a97 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml @@ -125,7 +125,7 @@ resultMap="CouponCountInfoMap"> select cp.coupon_id,c.title,cp.coupon_count from (select count(*) as coupon_count,coupon_id from wx_coupon_password - where tenant_id#{tenantId} and status=0) cp + where tenant_id=#{tenantId} and status=0) cp inner join wx_coupon c on cp.coupon_id = c.id where c.tenant_id=#{tenantId} and c.status=1 From 78dd55033bd50bdf9f271d06e032ef610ce2ead7 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Fri, 20 Sep 2019 11:14:23 +0800 Subject: [PATCH 38/72] =?UTF-8?q?[=E7=B3=BB=E7=BB=9F=E5=8F=91=E5=8D=A1][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][=E6=9F=A5=E8=AF=A2=E5=8D=A1=E6=95=B0?= =?UTF-8?q?=E6=8D=AE]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/WxCouponPasswordMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml index b3fcd6a97..93ab5afa7 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml @@ -127,7 +127,7 @@ (select count(*) as coupon_count,coupon_id from wx_coupon_password where tenant_id=#{tenantId} and status=0) cp inner join wx_coupon c on cp.coupon_id = c.id - where c.tenant_id=#{tenantId} and c.status=1 + where c.tenant_id=#{tenantId} and c.status=0 and cp.`coupon_id` = #{couponId} From 9f5d4dafef291ef366a6a6d2363353a497a5f878 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Fri, 20 Sep 2019 11:22:55 +0800 Subject: [PATCH 39/72] =?UTF-8?q?[=E7=B3=BB=E7=BB=9F=E5=8F=91=E5=8D=A1][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][=E6=9F=A5=E8=AF=A2=E5=8D=A1=E6=95=B0?= =?UTF-8?q?=E6=8D=AE]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/WxCouponPasswordMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml index 93ab5afa7..0f970e210 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml @@ -125,7 +125,7 @@ resultMap="CouponCountInfoMap"> select cp.coupon_id,c.title,cp.coupon_count from (select count(*) as coupon_count,coupon_id from wx_coupon_password - where tenant_id=#{tenantId} and status=0) cp + where tenant_id=#{tenantId} and status=0 group by coupon_id) cp inner join wx_coupon c on cp.coupon_id = c.id where c.tenant_id=#{tenantId} and c.status=0 From d116360d47220fe8abdf850512f0c23abf1fa4e8 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Thu, 19 Sep 2019 21:43:03 +0800 Subject: [PATCH 40/72] =?UTF-8?q?[=E5=8D=A1=E5=88=B8][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=90=8C=E6=AD=A5develop=E7=9A=84=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/iformall/controller/market/WxCouponController.java | 1 - .../src/main/java/com/iformall/domain/po/WxCoupon.java | 1 + .../src/main/java/com/iformall/enums/EnumCarCmd.java | 7 +++++-- .../com/iformall/service/impl/WxCouponServiceImpl.java | 1 - .../src/main/java/com/iformall/utils/DateUtils.java | 2 -- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java index ac95a2f94..819465327 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java @@ -267,7 +267,6 @@ public class WxCouponController extends BaseController { @SystemControllerLog(description = "券投放-查询") public ResultData findById(@RequestParam Long id) { logger.debug("[" + getIpAddr() + "] WxCouponController::findById"); - ; return new ResultData(wxCouponService.getVoById(id)); } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java index de96f12b7..babcb345e 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java @@ -138,6 +138,7 @@ public class WxCoupon extends BaseEntity { @io.swagger.annotations.ApiModelProperty(value="领取条件",name="condition") private String conditions; + @io.swagger.annotations.ApiModelProperty(value="最后一次审批操作类型,取值同EnumFlowKey",name="approvalType") private Integer approvalType; @io.swagger.annotations.ApiModelProperty(value="卡密是否支持(0:不支持,1支持)",name="passwordSupport") diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumCarCmd.java b/mallinkService/src/main/java/com/iformall/enums/EnumCarCmd.java index 562b3772c..39e72840f 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumCarCmd.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumCarCmd.java @@ -11,8 +11,11 @@ public enum EnumCarCmd { CAR_ETCP_CALLBACK_UNBIND(603, "ETCP车辆解绑通知"), CAR_ETCP_CALLBACK_PAY_MANUAL(604, "ETCP支付结果通知"), CAR_ETCP_CALLBACK_UNPAY(605, "ETCP停车费获取"), - CAR_TJD_CALLBACK_PARK_IN(610, "停简单入场通知"), - CAR_TJD_CALLBACK_PARK_OUT(611, "停简单出场通知"), + CAR_TJD_CALLBACK_REGISTER(610, "停简单注册车牌"), + CAR_TJD_CALLBACK_PARK_IN(611, "停简单进场通知"), + CAR_TJD_CALLBACK_PARK_OUT(612, "停简单离场通知"), + CAR_TJD_CALLBACK_PAID(613, "停简单支付通知"), + CAR_TJD_CALLBACK_REFUND(614, "停简单退款通知"), ; public static EnumCarCmd getEnum(Integer code) { 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 42076ae92..9bb1c8860 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java @@ -14,7 +14,6 @@ import com.iformall.domain.vo.WxCouponCVo; import com.iformall.domain.vo.WxCouponStatisVo; import com.iformall.domain.vo.WxMerchantVo; import com.iformall.enums.*; -import com.iformall.exception.BizMessageException; import com.iformall.exception.MallinkException; import com.iformall.mapper.*; import com.iformall.service.*; diff --git a/mallinkService/src/main/java/com/iformall/utils/DateUtils.java b/mallinkService/src/main/java/com/iformall/utils/DateUtils.java index 114f02929..e3810038f 100755 --- a/mallinkService/src/main/java/com/iformall/utils/DateUtils.java +++ b/mallinkService/src/main/java/com/iformall/utils/DateUtils.java @@ -1099,8 +1099,6 @@ public class DateUtils { * @return <0:已过n天;=0:当天 ;>0 n天前 */ public static int birthdaysBetween(Date date) { - Date today = new Date() ; - date.setYear(today.getYear()); Calendar todayCal = Calendar.getInstance(); Calendar birthdayCal = Calendar.getInstance(); birthdayCal.setTime(date); From a8a96a138255a09ee30a5d558ae0f403b6dd94b5 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Fri, 20 Sep 2019 10:41:31 +0800 Subject: [PATCH 41/72] =?UTF-8?q?[=E7=A7=AF=E5=88=86][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E6=95=B4=E7=90=86=E7=A7=AF=E5=88=86=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/WxCreditHistoryMapper.java | 2 + .../mapper/WxCreditHistoryMapper.xml | 20 +++++++- .../controller/sys/DataInitController.java | 49 ++++++++++++++++++- 3 files changed, 69 insertions(+), 2 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCreditHistoryMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCreditHistoryMapper.java index c1ce58961..207ee5596 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCreditHistoryMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCreditHistoryMapper.java @@ -33,5 +33,7 @@ public interface WxCreditHistoryMapper extends CommonMapper findListAfter(Integer creditType, String dateTime); + int findMaxBefore(Long cUserId, String dateTime); + List findListByIds(@Param("userIds") List userIds); } diff --git a/mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml b/mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml index c89e7fd7a..5122e980e 100644 --- a/mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml @@ -121,6 +121,7 @@ + + - select cp.coupon_id,c.title,cp.coupon_count from + select cp.coupon_id,c.title,c.price,cp.coupon_count from (select count(*) as coupon_count,coupon_id from wx_coupon_password where tenant_id=#{tenantId} and status=0 group by coupon_id) cp inner join wx_coupon c on cp.coupon_id = c.id @@ -132,6 +133,7 @@ and cp.`coupon_id` = #{couponId} group by cp.coupon_id + order by c.create_date desc From 5cb7a8453163d0fbe4d6de862049b9933f78e55b Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Fri, 20 Sep 2019 12:49:33 +0800 Subject: [PATCH 45/72] =?UTF-8?q?[=E5=81=9C=E8=BD=A6][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=81=9C=E7=AE=80=E5=8D=95=E8=BD=A6=E6=B5=81=E5=9B=9E=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../callback/WxCarTJDCallBackController.java | 213 ++++++++++++------ .../java/com/iformall/utils/car/TJDUtil.java | 9 + 2 files changed, 157 insertions(+), 65 deletions(-) diff --git a/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarTJDCallBackController.java b/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarTJDCallBackController.java index 5d33daa98..331ff3631 100644 --- a/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarTJDCallBackController.java +++ b/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarTJDCallBackController.java @@ -5,7 +5,10 @@ import com.iformall.controller.base.BaseController; import com.iformall.domain.po.*; import com.iformall.enums.EnumCarCmd; import com.iformall.enums.EnumCarVendor; +import com.iformall.enums.EnumCouponSendSendType; import com.iformall.service.*; +import com.iformall.utils.car.TJDUtil; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -16,6 +19,7 @@ import org.springframework.web.bind.annotation.RestController; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; +import java.util.List; import java.util.Map; @RestController @@ -79,69 +83,99 @@ public class WxCarTJDCallBackController extends BaseController { /** * 进场通知 * { - * "parkId": "f3f11a46f3a14056953aed97944242d4", "parkName": "测试停车场", - * "carNum": "京A12345", - * "carNumColor ": "blue", - * "tradeId": "5836b8b52ada463ebc6199579f029565", - * "outCarId": "", - * "inDt": "20170319202020", - * "payUrl": - * "http://prep.tingjiandan.com/tcweixin/letter/prePay/pagePayInPark?prePayType=16&channel=10001&isShowDetail=true&orderId=5836b8b52ada463ebc6199579f029565&returnUrl=", - * "miniProgram": "{ - * \"path\": \"pages/pre_pay/index/main\", - * \"extraData\": { - * \"prePayType\": \"16\", - * \"channel\": \"10001\", - * \"isShowDetail\": \"true\", - * \"orderId\": \"5836b8b52ada463ebc6199579f029565\" - * }}", - * "canFindCar": "0", - * "city": "北京市", - * "district": "海淀区", - * "address": "五道口", - * "lon": "74.000272", - * "lat": "159.768703", - * "wLon": "123.523032", - * "wLat": "35.430735" + * wLon=116.310335, + * lon=116.316813, + * outCarId=, + * parkId=7715622dff834b34a44448b801c27607, + * tradeId=e9e0d5db057f412fa323995fc292f6f7, + * carNumColor=blue, + * canFindCar=0, + * miniProgram={ + * "path": "pages/pre_pay/index/main", + * "extraData": { + * "prePayType": "16", + * "channel": "30166", + * "isShowDetail": "true", + * "partnerId": "", + * "orderId": "e9e0d5db057f412fa323995fc292f6f7"} + * }, + * city=北京市, + * parkName=开发停车场25, + * address=财智大厦23楼, + * carNum=京YTJD01, + * wLat=39.93609, + * payUrl=https://prep.tingjiandan.com/tcweixin/letter/prePay/pagePayInPark?prePayType=16&channel=30166&isShowDetail=true&partnerId=&orderId=e9e0d5db057f412fa323995fc292f6f7&returnUrl=, + * district=海淀区, + * lat=39.942078, + * inDt=20190920070500 * } */ @RequestMapping(value = "/tjdParkInCallback") public Map tjdParkInCallback(@RequestBody Map paramMap) { logger.info("["+getIpAddr()+"tjdParkInCallback: " + paramMap.toString()); Map map = new HashMap(); + Date currentDate = new Date(); - String tjdParkId = paramMap.get("parkId"); + String tjdParkId = paramMap.get(TJDUtil.TJD_PARK_ID); + String carNumber = paramMap.get(TJDUtil.TJD_CAR_NUMBER); + WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); + wxCarCmdLog.setVendorType(EnumCarVendor.CAR_TJD.getCode()); + wxCarCmdLog.setCmdType(EnumCarCmd.CAR_TJD_CALLBACK_PARK_IN.getCode()); + wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap)); + wxCarCmdLog.setCreateDate(currentDate); + wxCarCmdLog.setUpdateDate(currentDate); + + String tenantId = null; WxPark parkQ = new WxPark(); parkQ.setVendorType(EnumCarVendor.CAR_TJD.getCode()); parkQ.setParkId(tjdParkId); WxPark park = wxParkService.getByObj(parkQ); if (park == null) { - logger.error("tjdParkInCallback: 停简单车场未找到" + tjdParkId); - map.put("isSuccess", "0"); - map.put("errorMsg", "停简单车场未找到" + tjdParkId); + logger.error("tjdParkInCallback: 车场未找到" + tjdParkId); + map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_ERR_1); + map.put(TJDUtil.TJD_ERR_MSG, "车场未找到" + tjdParkId); return map; + } else { + tenantId = park.getTenantId(); + wxCarCmdLog.setTenantId(park.getTenantId()); } - Date currentDate = new Date(); - WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); - wxCarCmdLog.setTenantId(park.getTenantId()); - wxCarCmdLog.setVendorType(EnumCarVendor.CAR_TJD.getCode()); - wxCarCmdLog.setCmdType(EnumCarCmd.CAR_TJD_CALLBACK_PARK_IN.getCode()); - wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap)); - wxCarCmdLog.setCreateDate(currentDate); - wxCarCmdLog.setUpdateDate(currentDate); try { wxCarCmdLogService.saveOrUpdate(wxCarCmdLog); } catch (Exception e) { logger.error("tjdParkInCallback: 入库错误" + paramMap.toString()); - map.put("isSuccess", "0"); - map.put("errorMsg", "入库错误" + paramMap.toString()); + map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_ERR_2); + map.put(TJDUtil.TJD_ERR_MSG, "入库错误" + paramMap.toString()); return map; } - map.put("isSuccess", "0"); - map.put("errorMsg", ""); + // 停车发券 + String phoneStrs = ""; + if (StringUtils.isNotBlank(carNumber)) { + // 根据车牌查找用户 + WxCUserCar userCarQ = new WxCUserCar(); + userCarQ.setTenantId(tenantId); + userCarQ.setCarNumber(carNumber); + userCarQ.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); + // TODO 可能多用户关联同一张车牌 + List userCarList = wxCUserCarService.getList(userCarQ); + boolean bFirst = true; + for (WxCUserCar userCar : userCarList) { + wxCouponSendService.sendCouponToUser(EnumCouponSendSendType.CAR_STOP, userCar); + WxCUser cUser = wxCUserService.getById(userCar.getCUserId()); + if(cUser != null){ + if(bFirst) { + phoneStrs = cUser.getPhone(); + bFirst = false; + } else { + phoneStrs += "," + cUser.getPhone(); + } + } + } + } + + map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_SUC); return map; } @@ -162,13 +196,15 @@ public class WxCarTJDCallBackController extends BaseController { * "wLat": "35.430735" * } */ - @RequestMapping(value = "/tjdParkoutCallback") + @RequestMapping(value = "/tjdParkOutCallback") public Map tjdParkOutCallback(@RequestBody Map paramMap) { - logger.info("["+getIpAddr()+"tjdParkoutCallback: " + paramMap.toString()); + logger.info("["+getIpAddr()+"tjdParkOutCallback: " + paramMap.toString()); Map map = new HashMap(); + String tjdParkId = paramMap.get(TJDUtil.TJD_PARK_ID); + String carNumber = paramMap.get(TJDUtil.TJD_CAR_NUMBER); - String tradeId = paramMap.get("tradeId"); + String tradeId = paramMap.get(TJDUtil.TJD_TRADE_ID); Date currentDate = new Date(); WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); @@ -177,17 +213,32 @@ public class WxCarTJDCallBackController extends BaseController { wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap)); wxCarCmdLog.setCreateDate(currentDate); wxCarCmdLog.setUpdateDate(currentDate); + + String tenantId = null; + WxPark parkQ = new WxPark(); + parkQ.setVendorType(EnumCarVendor.CAR_TJD.getCode()); + parkQ.setParkId(tjdParkId); + WxPark park = wxParkService.getByObj(parkQ); + if (park == null) { + logger.error("tjdParkOutCallback: 车场未找到" + tjdParkId); + map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_ERR_1); + map.put(TJDUtil.TJD_ERR_MSG, "车场未找到" + tjdParkId); + return map; + } else { + tenantId = park.getTenantId(); + wxCarCmdLog.setTenantId(tenantId); + } + try { wxCarCmdLogService.saveOrUpdate(wxCarCmdLog); } catch (Exception e) { - logger.error("tjdParkoutCallback: 入库错误" + paramMap.toString()); - map.put("isSuccess", "0"); - map.put("errorMsg", "入库错误" + paramMap.toString()); + logger.error("tjdParkOutCallback: 入库错误" + paramMap.toString()); + map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_ERR_2); + map.put(TJDUtil.TJD_ERR_MSG, "入库错误" + paramMap.toString()); return map; } - map.put("isSuccess", "0"); - map.put("errorMsg", ""); + map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_SUC); return map; } @@ -210,29 +261,45 @@ public class WxCarTJDCallBackController extends BaseController { @RequestMapping(value = "/tjdPaidCallback") public Map tjdPaidCallback(@RequestBody Map paramMap) { logger.info("["+getIpAddr()+"tjdPaidCallback: " + paramMap.toString()); + Date currentDate = new Date(); Map map = new HashMap(); + String tjdParkId = paramMap.get(TJDUtil.TJD_PARK_ID); + String carNumber = paramMap.get(TJDUtil.TJD_CAR_NUMBER); + String tradeId = paramMap.get(TJDUtil.TJD_TRADE_ID); - String tradeId = paramMap.get("tradeId"); - - Date currentDate = new Date(); WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); - wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_PARK_OUT.getCode()); + wxCarCmdLog.setCmdType(EnumCarCmd.CAR_TJD_CALLBACK_PAID.getCode()); wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap)); wxCarCmdLog.setCreateDate(currentDate); wxCarCmdLog.setUpdateDate(currentDate); + + String tenantId = null; + WxPark parkQ = new WxPark(); + parkQ.setVendorType(EnumCarVendor.CAR_TJD.getCode()); + parkQ.setParkId(tjdParkId); + WxPark park = wxParkService.getByObj(parkQ); + if (park == null) { + logger.error("tjdPaidCallback: 车场未找到" + tjdParkId); + map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_ERR_1); + map.put(TJDUtil.TJD_ERR_MSG, "车场未找到" + tjdParkId); + return map; + } else { + tenantId = park.getTenantId(); + wxCarCmdLog.setTenantId(tenantId); + } + try { wxCarCmdLogService.saveOrUpdate(wxCarCmdLog); } catch (Exception e) { - logger.error("tjdParkoutCallback: 入库错误" + paramMap.toString()); - map.put("isSuccess", "0"); - map.put("errorMsg", "入库错误" + paramMap.toString()); + logger.error("tjdPaidCallback: 入库错误" + paramMap.toString()); + map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_ERR_2); + map.put(TJDUtil.TJD_ERR_MSG, "入库错误" + paramMap.toString()); return map; } - map.put("isSuccess", "0"); - map.put("errorMsg", ""); + map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_SUC); return map; } @@ -255,29 +322,45 @@ public class WxCarTJDCallBackController extends BaseController { @RequestMapping(value = "/tjdRefundCallback") public Map tjdRefundCallback(@RequestBody Map paramMap) { logger.info("["+getIpAddr()+"tjdRefundCallback: " + paramMap.toString()); + Date currentDate = new Date(); Map map = new HashMap(); + String tjdParkId = paramMap.get(TJDUtil.TJD_PARK_ID); + String carNumber = paramMap.get(TJDUtil.TJD_CAR_NUMBER); + String tradeId = paramMap.get(TJDUtil.TJD_TRADE_ID); - String tradeId = paramMap.get("tradeId"); - - Date currentDate = new Date(); WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); - wxCarCmdLog.setCmdType(EnumCarCmd.CAR_ETCP_CALLBACK_PARK_OUT.getCode()); + wxCarCmdLog.setCmdType(EnumCarCmd.CAR_TJD_CALLBACK_REFUND.getCode()); wxCarCmdLog.setCmdJson(JSON.toJSONString(paramMap)); wxCarCmdLog.setCreateDate(currentDate); wxCarCmdLog.setUpdateDate(currentDate); + + String tenantId = null; + WxPark parkQ = new WxPark(); + parkQ.setVendorType(EnumCarVendor.CAR_TJD.getCode()); + parkQ.setParkId(tjdParkId); + WxPark park = wxParkService.getByObj(parkQ); + if (park == null) { + logger.error("tjdRefundCallback: 停简单车场未找到" + tjdParkId); + map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_ERR_1); + map.put(TJDUtil.TJD_ERR_MSG, "车场未找到" + tjdParkId); + return map; + } else { + tenantId = park.getTenantId(); + wxCarCmdLog.setTenantId(tenantId); + } + try { wxCarCmdLogService.saveOrUpdate(wxCarCmdLog); } catch (Exception e) { logger.error("tjdRefundCallback: 入库错误" + paramMap.toString()); - map.put("isSuccess", "0"); - map.put("errorMsg", "入库错误" + paramMap.toString()); + map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_ERR_2); + map.put(TJDUtil.TJD_ERR_MSG, "入库错误" + paramMap.toString()); return map; } - map.put("isSuccess", "0"); - map.put("errorMsg", ""); + map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_SUC); return map; } diff --git a/mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java b/mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java index 81f6e44fe..3f1c57cda 100644 --- a/mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java +++ b/mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java @@ -30,6 +30,15 @@ import java.util.Map; @Component public class TJDUtil { + public static final String TJD_IS_SUC = "isSuccess"; + public static final String TJD_ERR_MSG = "errorMSG"; + public static final String TJD_SUC = "0"; + public static final String TJD_ERR_1 = "1"; // 业务级失败(不进行重发) + public static final String TJD_ERR_2 = "2"; // 系统级失败(有重发机制) + public static final String TJD_PARK_ID = "parkId"; + public static final String TJD_CAR_NUMBER = "carNum"; + public static final String TJD_TRADE_ID = "tradeId"; + private final static Logger logger = LoggerFactory.getLogger(TJDUtil.class); private static String baseurl = "http://prep.tingjiandan.com/openapi/gateway"; From 75db300124577f85024ff1a0b5bcc1751dc4fc30 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Fri, 20 Sep 2019 13:21:54 +0800 Subject: [PATCH 46/72] =?UTF-8?q?[=E7=B3=BB=E7=BB=9F=E5=8F=91=E5=8D=A1][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][=E6=9B=B4=E6=96=B0=E5=8D=A1=E5=AF=86?= =?UTF-8?q?=E6=95=B0=E6=8D=AE]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/iformall/tenant/TenantInfoImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/tenant/TenantInfoImpl.java b/mallinkAdmin/src/main/java/com/iformall/tenant/TenantInfoImpl.java index a15f3115c..4ce39a2d0 100644 --- a/mallinkAdmin/src/main/java/com/iformall/tenant/TenantInfoImpl.java +++ b/mallinkAdmin/src/main/java/com/iformall/tenant/TenantInfoImpl.java @@ -129,7 +129,8 @@ public class TenantInfoImpl implements TenantInfo { return true; if ("com.iformall.mapper.WxBillPropertyMapper.insertBillAction".equals(ms.getId())) return true; - + if ("com.iformall.mapper.WxCouponPasswordMapper.updateStatus".equals(ms.getId())) + return true; return false; } } From e66dc5c51d235e6bf95ffb7d1fde12ea97580e7f Mon Sep 17 00:00:00 2001 From: gongbiao Date: Fri, 20 Sep 2019 13:30:48 +0800 Subject: [PATCH 47/72] =?UTF-8?q?[=E7=B3=BB=E7=BB=9F=E5=8F=91=E5=8D=A1][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][=E7=9F=AD=E4=BF=A1=E6=95=B0=E6=8D=AE]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/iformall/service/impl/WxCouponPresentServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java index 400b1776f..06b648c8f 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java @@ -134,7 +134,7 @@ public class WxCouponPresentServiceImpl implements WxCouponPresentService { msgReplaceMap.put("id", id); msgReplaceMap.put("app", appName); msgReplaceMap.put("money", money); - msgReplaceMap.put("password", password); + msgReplaceMap.put("pw", password); WxMsgRecord wxMsgRecord = new WxMsgRecord(); wxMsgRecord.setMsgType(EnumMsgRecordType.SMS.getCode()); wxMsgRecord.setModelType(EnumMsgModel.COUPON_CARD_SEND.getCode()); From 91bbd3a5f4bd735cc911566dba3dbbd1c13f48ff Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Fri, 20 Sep 2019 13:42:56 +0800 Subject: [PATCH 48/72] =?UTF-8?q?[=E5=81=9C=E8=BD=A6][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=81=9C=E7=AE=80=E5=8D=95=E8=BD=A6=E6=B5=81=E5=9B=9E=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../callback/WxCarTJDCallBackController.java | 147 ++++++++++++++++-- .../java/com/iformall/utils/car/TJDUtil.java | 7 + 2 files changed, 140 insertions(+), 14 deletions(-) diff --git a/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarTJDCallBackController.java b/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarTJDCallBackController.java index 331ff3631..80cbf3e41 100644 --- a/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarTJDCallBackController.java +++ b/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarTJDCallBackController.java @@ -1,13 +1,16 @@ package com.iformall.controller.callback; import com.alibaba.fastjson.JSON; +import com.github.pagehelper.PageInfo; import com.iformall.controller.base.BaseController; import com.iformall.domain.po.*; import com.iformall.enums.EnumCarCmd; import com.iformall.enums.EnumCarVendor; import com.iformall.enums.EnumCouponSendSendType; import com.iformall.service.*; +import com.iformall.utils.DateUtils; import com.iformall.utils.car.TJDUtil; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -48,7 +51,9 @@ public class WxCarTJDCallBackController extends BaseController { @Autowired WxCUserService wxCUserService; - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + SimpleDateFormat dateFormat0 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyyMMddHHmmss"); + /** * 注册车牌 @@ -116,8 +121,11 @@ public class WxCarTJDCallBackController extends BaseController { Map map = new HashMap(); Date currentDate = new Date(); - String tjdParkId = paramMap.get(TJDUtil.TJD_PARK_ID); + String parkId = paramMap.get(TJDUtil.TJD_PARK_ID); + String parkName = paramMap.get(TJDUtil.TJD_PARK_NAME); String carNumber = paramMap.get(TJDUtil.TJD_CAR_NUMBER); + String tradeId = paramMap.get(TJDUtil.TJD_TRADE_ID); + String inDt = paramMap.get(TJDUtil.TJD_IN_DT); WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); wxCarCmdLog.setVendorType(EnumCarVendor.CAR_TJD.getCode()); @@ -129,12 +137,12 @@ public class WxCarTJDCallBackController extends BaseController { String tenantId = null; WxPark parkQ = new WxPark(); parkQ.setVendorType(EnumCarVendor.CAR_TJD.getCode()); - parkQ.setParkId(tjdParkId); + parkQ.setParkId(parkId); WxPark park = wxParkService.getByObj(parkQ); if (park == null) { - logger.error("tjdParkInCallback: 车场未找到" + tjdParkId); + logger.error("tjdParkInCallback: 车场未找到" + parkId); map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_ERR_1); - map.put(TJDUtil.TJD_ERR_MSG, "车场未找到" + tjdParkId); + map.put(TJDUtil.TJD_ERR_MSG, "车场未找到" + parkId); return map; } else { tenantId = park.getTenantId(); @@ -175,6 +183,32 @@ public class WxCarTJDCallBackController extends BaseController { } } + try { + // 保存WxCarPayRecord + WxCarPayRecord record = new WxCarPayRecord(); + record.setTenantId(tenantId); + record.setVendorType(wxCarCmdLog.getVendorType()); + record.setSynId(tradeId); + record.setParkId(parkId); + record.setParkName(parkName); + record.setPlateNumber(carNumber); + if(StringUtils.isNotBlank(inDt)) { + record.setEntranceTime(dateFormat1.parse(inDt)); + } + record.setPhone(phoneStrs); + WxCarPayRecord query = new WxCarPayRecord(); + query.setTenantId(tenantId); + query.setParkId(parkId); + query.setSynId(tradeId); + PageInfo page = wxCarPayRecordService.findCarPayListByPage(query,1,1); + if(page != null && CollectionUtils.isNotEmpty(page.getList())){ + record.setId(page.getList().get(0).getId()); + } + wxCarPayRecordService.saveOrUpdate(record); + } catch (Exception e) { + logger.error("WxCarPayRecord: 入库错误 "+e.getMessage()+"," + paramMap.toString()); + } + map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_SUC); return map; } @@ -201,10 +235,13 @@ public class WxCarTJDCallBackController extends BaseController { logger.info("["+getIpAddr()+"tjdParkOutCallback: " + paramMap.toString()); Map map = new HashMap(); - String tjdParkId = paramMap.get(TJDUtil.TJD_PARK_ID); + String parkId = paramMap.get(TJDUtil.TJD_PARK_ID); + String parkName = paramMap.get(TJDUtil.TJD_PARK_NAME); String carNumber = paramMap.get(TJDUtil.TJD_CAR_NUMBER); - String tradeId = paramMap.get(TJDUtil.TJD_TRADE_ID); + String inDt = paramMap.get(TJDUtil.TJD_IN_DT); + String outDt = paramMap.get(TJDUtil.TJD_OUT_DT); + String stopFee = paramMap.get(TJDUtil.TJD_PARK_AMT); Date currentDate = new Date(); WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); @@ -217,12 +254,12 @@ public class WxCarTJDCallBackController extends BaseController { String tenantId = null; WxPark parkQ = new WxPark(); parkQ.setVendorType(EnumCarVendor.CAR_TJD.getCode()); - parkQ.setParkId(tjdParkId); + parkQ.setParkId(parkId); WxPark park = wxParkService.getByObj(parkQ); if (park == null) { - logger.error("tjdParkOutCallback: 车场未找到" + tjdParkId); + logger.error("tjdParkOutCallback: 车场未找到" + parkId); map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_ERR_1); - map.put(TJDUtil.TJD_ERR_MSG, "车场未找到" + tjdParkId); + map.put(TJDUtil.TJD_ERR_MSG, "车场未找到" + parkId); return map; } else { tenantId = park.getTenantId(); @@ -238,6 +275,39 @@ public class WxCarTJDCallBackController extends BaseController { return map; } + try { + // 保存WxCarPayRecord + WxCarPayRecord record = new WxCarPayRecord(); + record.setTenantId(tenantId); + record.setVendorType(wxCarCmdLog.getVendorType()); + record.setParkId(parkId); + record.setParkName(parkName); + record.setPlateNumber(carNumber); + record.setSynId(tradeId); + if(StringUtils.isNotBlank(inDt)) { + record.setEntranceTime(dateFormat1.parse(inDt)); + } + if(StringUtils.isNotBlank(outDt)) { + record.setExitTime(dateFormat1.parse(outDt)); + Long stayedTime = (record.getExitTime().getTime() - record.getEntranceTime().getTime())/ 1000; + record.setStayedTime(stayedTime); + } + if (StringUtils.isNotBlank(stopFee)) { + record.setFee(stopFee); + } + WxCarPayRecord query = new WxCarPayRecord(); + query.setTenantId(tenantId); + query.setParkId(parkId); + query.setSynId(tradeId); + PageInfo page = wxCarPayRecordService.findCarPayListByPage(query,1,1); + if(page != null && CollectionUtils.isNotEmpty(page.getList())){ + record.setId(page.getList().get(0).getId()); + } + wxCarPayRecordService.saveOrUpdate(record); + } catch (Exception e) { + logger.error("WxCarPayRecord: 出场更新错误 " +e.getMessage()+", " +paramMap.toString()); + } + map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_SUC); return map; } @@ -264,9 +334,12 @@ public class WxCarTJDCallBackController extends BaseController { Date currentDate = new Date(); Map map = new HashMap(); - String tjdParkId = paramMap.get(TJDUtil.TJD_PARK_ID); + String parkId = paramMap.get(TJDUtil.TJD_PARK_ID); + String parkName = paramMap.get(TJDUtil.TJD_PARK_NAME); String carNumber = paramMap.get(TJDUtil.TJD_CAR_NUMBER); String tradeId = paramMap.get(TJDUtil.TJD_TRADE_ID); + String stopFee = paramMap.get(TJDUtil.TJD_PAY_AMT); + String stopFeeTime = paramMap.get(TJDUtil.TJD_PAY_DT); WxCarCmdLog wxCarCmdLog = new WxCarCmdLog(); wxCarCmdLog.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); @@ -278,12 +351,12 @@ public class WxCarTJDCallBackController extends BaseController { String tenantId = null; WxPark parkQ = new WxPark(); parkQ.setVendorType(EnumCarVendor.CAR_TJD.getCode()); - parkQ.setParkId(tjdParkId); + parkQ.setParkId(parkId); WxPark park = wxParkService.getByObj(parkQ); if (park == null) { - logger.error("tjdPaidCallback: 车场未找到" + tjdParkId); + logger.error("tjdPaidCallback: 车场未找到" + parkId); map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_ERR_1); - map.put(TJDUtil.TJD_ERR_MSG, "车场未找到" + tjdParkId); + map.put(TJDUtil.TJD_ERR_MSG, "车场未找到" + parkId); return map; } else { tenantId = park.getTenantId(); @@ -299,6 +372,52 @@ public class WxCarTJDCallBackController extends BaseController { return map; } + try { + // 保存WxCarPayRecord + WxCarPayRecord record = new WxCarPayRecord(); + record.setTenantId(tenantId); + record.setVendorType(wxCarCmdLog.getVendorType()); + record.setParkId(parkId); + record.setParkName(parkName); + record.setPlateNumber(carNumber); + record.setSynId(tradeId); + record.setFee(stopFee); + if (StringUtils.isNotBlank(stopFeeTime)) { + record.setFeeTime(dateFormat1.parse(stopFeeTime)); + } + + WxCarPayRecord query = new WxCarPayRecord(); + record.setTenantId(tenantId); + record.setParkId(parkId); + record.setPlateNumber(carNumber); + query.setSynId(tradeId); + PageInfo page = wxCarPayRecordService.findCarPayListByPage(query,1,2); + if(page != null && page.getList().size() > 0){ + + if(page.getList().size() >= 2){ + wxCarPayRecordService.saveOrUpdate(record); + } else { + WxCarPayRecord r = page.getList().get(0); + if(r.getFeeTime() == null) { + // 无缴费信息, 更新 + record.setId(r.getId()); + wxCarPayRecordService.saveOrUpdate(record); + } else { + // 缴费时间在15分钟以内,更新之前的数据, ETCP会把之前的缴费自动退款 + if(DateUtils.isInDate15Mins(record.getFeeTime(), r.getFeeTime())) { + record.setId(r.getId()); + } + wxCarPayRecordService.saveOrUpdate(record); + } + } + } else { + wxCarPayRecordService.saveOrUpdate(record); + } + } catch (Exception e) { + logger.error("WxCarPayRecord: 缴费更新错误 " +e.getMessage()+", "+ paramMap.toString()); + //return new Result(ErrorCode.DB_FAIL.getCode(), "入库错误" + paramMap.toString()); + } + map.put(TJDUtil.TJD_IS_SUC, TJDUtil.TJD_SUC); return map; } diff --git a/mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java b/mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java index 3f1c57cda..cca87fd1d 100644 --- a/mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java +++ b/mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java @@ -36,8 +36,15 @@ public class TJDUtil { public static final String TJD_ERR_1 = "1"; // 业务级失败(不进行重发) public static final String TJD_ERR_2 = "2"; // 系统级失败(有重发机制) public static final String TJD_PARK_ID = "parkId"; + public static final String TJD_PARK_NAME = "parkName"; public static final String TJD_CAR_NUMBER = "carNum"; public static final String TJD_TRADE_ID = "tradeId"; + public static final String TJD_IN_DT = "inDt"; + public static final String TJD_OUT_DT = "outDt"; + public static final String TJD_PARK_AMT = "parkAmount"; + public static final String TJD_PAY_AMT = "payAmount"; + public static final String TJD_PAY_DT = "payDt"; + private final static Logger logger = LoggerFactory.getLogger(TJDUtil.class); From 82bf98d1ff776a9262a46d6b40123e25579ec3bd Mon Sep 17 00:00:00 2001 From: gongbiao Date: Fri, 20 Sep 2019 14:00:39 +0800 Subject: [PATCH 49/72] =?UTF-8?q?[=E7=B3=BB=E7=BB=9F=E5=8F=91=E5=8D=A1][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][=E5=88=9B=E5=BB=BA=E7=9F=AD=E4=BF=A1?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/sys/DataInitController.java | 30 +++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java b/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java index 1e54b9923..6cf21ce02 100644 --- a/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java +++ b/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java @@ -1,8 +1,9 @@ package com.iformall.controller.sys; -import com.alibaba.fastjson.JSON; import com.google.common.base.Function; -import com.google.common.collect.*; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableListMultimap; +import com.google.common.collect.Multimaps; import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; import com.iformall.common.ResultData; @@ -14,11 +15,13 @@ import com.iformall.enums.EnumUserType; import com.iformall.mapper.*; import com.iformall.service.WxCreditHistoryService; import com.iformall.utils.DateUtils; +import io.swagger.annotations.ApiImplicitParam; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.checkerframework.checker.nullness.qual.Nullable; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -67,6 +70,23 @@ public class DataInitController extends BaseController { private WxMerchantMapper wxMerchantMapper; + @PostMapping("/createMsgModel") + @ApiImplicitParam(name = "content", value = "content", dataType = "Long", paramType = "query", required = true) + public ResultData createMsgModel(String content) { + try { + MallUserInfo userInfo = getUser(); + if (userInfo.isFmSuperAdmin()) { + addMsgModel(content); + return new ResultData(); + } + } catch (Exception e) { + log.error("DataInitController::createMsgModel error ", e); + return new ResultData(ErrorCode.MSG_METHOD_REQUEST_ERROR, e.getMessage()); + } + + return new ResultData(); + } + @GetMapping("/init") public ResultData init() { try { @@ -344,6 +364,12 @@ public class DataInitController extends BaseController { }); } + @Transactional(rollbackFor = Exception.class) + public void addMsgModel(String context) { + IdWorker idWorker = IdWorker.get(); + addBirthDayMsgModelToMall(EnumMsgModel.COUPON_BIRTHDAY_OPENED, idWorker, context); + } + /** * 增加会员生日短信模板 */ From 5415514c5f67fe20aecbaa7de23fcdfffc087766 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Fri, 20 Sep 2019 14:04:55 +0800 Subject: [PATCH 50/72] =?UTF-8?q?[=E7=B3=BB=E7=BB=9F=E5=8F=91=E5=8D=A1][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][=E6=9B=B4=E6=96=B0=E5=8D=A1=E5=AF=86]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/WxCouponPasswordMapper.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml index a3eda0048..d1e3b7601 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml @@ -139,8 +139,9 @@ update wx_coupon_password set - status=1,send_phone=#{item.sendPhone},update_date=now(),expire_date=date_add(now(),interval 30 DAY) where id - = ${item.id} + status=1,send_phone=#{item.sendedPhone},update_date=now(),expire_date=date_add(now(),interval 30 DAY) where + id + = #{item.id} From 1fe6ff9a3bae6075f997b522d18b0a3b2cecf38c Mon Sep 17 00:00:00 2001 From: gongbiao Date: Fri, 20 Sep 2019 14:12:58 +0800 Subject: [PATCH 51/72] =?UTF-8?q?[=E7=B3=BB=E7=BB=9F=E5=8F=91=E5=8D=A1][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][=E7=9F=AD=E4=BF=A1]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iformall/service/impl/WxCouponPresentServiceImpl.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java index 06b648c8f..b0cc66757 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java @@ -107,7 +107,7 @@ public class WxCouponPresentServiceImpl implements WxCouponPresentService { wxCouponPresentMapper.insertSelective(record); //小程序 WxAppinfo appInfo = wxAppinfoService.getCAppInfo(tenantId); - String priceStr = wxCoupon.getPriceStr(); + String title = wxCoupon.getTitle(); String name = appInfo.getName(); List tempList = wxCouponPasswordMapper.findList(wxCouponPassword); //循环发送 @@ -115,7 +115,7 @@ public class WxCouponPresentServiceImpl implements WxCouponPresentService { for (String phone : phoneSet) { WxCouponPassword couponPassword = list.get(i); //发送 - sendMsg(tenantId, phone, priceStr, name, couponPassword.getPassword(), couponPassword.getId().toString()); + sendMsg(tenantId, phone, title, name, couponPassword.getPassword(), couponPassword.getId().toString()); //记录发送数据便于更新状态 couponPassword.setSendedPhone(phone); tempList.add(couponPassword); @@ -126,14 +126,14 @@ public class WxCouponPresentServiceImpl implements WxCouponPresentService { return new ResultData(); } - private void sendMsg(String tenantId, String phone, String money, String appName, String password, String id) { + private void sendMsg(String tenantId, String phone, String title, String appName, String password, String id) { logger.info("》》》》》》》》》》》"); logger.info("系统发卡发送短信开始"); logger.info("》》》》》》》》》》》"); Map msgReplaceMap = new HashMap(); msgReplaceMap.put("id", id); msgReplaceMap.put("app", appName); - msgReplaceMap.put("money", money); + msgReplaceMap.put("title", title); msgReplaceMap.put("pw", password); WxMsgRecord wxMsgRecord = new WxMsgRecord(); wxMsgRecord.setMsgType(EnumMsgRecordType.SMS.getCode()); From 30ff180f7792fa2460afaccb0951d5e1ab2e3aa3 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Fri, 20 Sep 2019 14:14:24 +0800 Subject: [PATCH 52/72] =?UTF-8?q?[=E7=B3=BB=E7=BB=9F=E5=8F=91=E5=8D=A1][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][=E5=BE=AA=E7=8E=AF=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=85=91=E6=8D=A2=E4=BF=A1=E6=81=AF]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/WxCouponPasswordMapper.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml index d1e3b7601..270deaded 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml @@ -139,7 +139,8 @@ update wx_coupon_password set - status=1,send_phone=#{item.sendedPhone},update_date=now(),expire_date=date_add(now(),interval 30 DAY) where + status=1,sended_phone=#{item.sendedPhone},update_date=now(),expire_date=date_add(now(),interval 30 DAY) + where id = #{item.id} From 67fe92d8015dfa06b3518f7900ffdf3a34773805 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Fri, 20 Sep 2019 15:03:17 +0800 Subject: [PATCH 53/72] =?UTF-8?q?[=E5=81=9C=E8=BD=A6][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=81=9C=E7=AE=80=E5=8D=95=E7=BB=91=E8=BD=A6=E7=89=8C=EF=BC=8C?= =?UTF-8?q?=E5=81=9C=E8=BD=A6=E8=B4=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iformall/controller/WxCarController.java | 90 +++++++++++-------- .../java/com/iformall/utils/car/TJDUtil.java | 74 +++++++++------ 2 files changed, 98 insertions(+), 66 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java index 1d7362e63..1ccfb1843 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java @@ -241,16 +241,7 @@ public class WxCarController extends BaseController { * @param paramMap * @return */ - @ApiOperation(value = "绑车牌", notes = "ETCP:={\"etcpToken\":\"string\",\"carNumber\":\"string\"}\n" + - "TJD:={\"carNumber\":\"string\",\"carNumColor\":\"string\",\"outCarId\":\"string\"}\n返回\n" + - "{\n" + - " \"timestamp\": \"1464235239561\",\n" + - " \"returnCode\": \"T\",\n" + - " \"errorMsg\": \"\",\n" + - " \"returnMsg\": \"OK\",\n" + - " \"isSuccess\": \"0\",\n" + - " \"carId\": \"5836b8b52ada463ebc6199579f029561\"\n" + - "}\n") + @ApiOperation(value = "绑车牌", notes = "ETCP:={\"etcpToken\":\"string\",\"carNumber\":\"string\"}, TJD:={\"carNumber\":\"string\"}") @PostMapping("/bindCar") public ResultData bindCar(@RequestBody Map paramMap) { // 1, get mall's park @@ -258,11 +249,10 @@ public class WxCarController extends BaseController { // 2. get vendor params if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) { return etcpBindCar(paramMap, park); + } else { + // 内部操作 + return bindCar(paramMap, park); } - else if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()) { - return tjdBindCar(paramMap, park); - } - return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "绑车牌失败"); } private ResultData etcpBindCar(Map paramMap, WxPark park) { @@ -292,7 +282,7 @@ public class WxCarController extends BaseController { } JSONObject retObj = JSON.parseObject(ret); if (retObj.getIntValue("code") == 0) { - addCarInfoToDB(carNumber); + addCarInfoToDB(carNumber, EnumCarVendor.CAR_ETCP); JSONObject dataObj = retObj.getJSONObject("data"); return new ResultData(dataObj); } else { @@ -302,14 +292,30 @@ public class WxCarController extends BaseController { } } - private void addCarInfoToDB(String carNumber) { + private ResultData bindCar(Map paramMap, WxPark park) { + String carNumber = paramMap.get("carNumber"); + if (StringUtils.isBlank(carNumber)) { + logger.error("carNumber为空"); + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "carNumber为空"); + } + try { + addCarInfoToDB(carNumber, EnumCarVendor.getEnum(park.getVendorType())); + } catch (MallinkException e) { + return new ResultData(e.getErrorCode(), e.getMessage()); + } catch (Exception e) { + return new ResultData(500, e.getMessage()); + } + return new ResultData(); + } + + private void addCarInfoToDB(String carNumber, EnumCarVendor carVendor) { // 插入车牌 Date curr = new Date(); WxCUserCar userCar = new WxCUserCar(); userCar.setCUserId(getUserId()); userCar.setTenantId(getTenantId()); userCar.setCarNumber(carNumber); - userCar.setVendorType(EnumCarVendor.CAR_ETCP.getCode()); + userCar.setVendorType(carVendor.getCode()); userCar.setCreateDate(curr); userCar.setUpdateDate(curr); wxCUserCarService.saveOrUpdate(userCar); @@ -409,26 +415,16 @@ public class WxCarController extends BaseController { " \"code\": 0,\n" + " \"message\": \"ok\"" + "}" + - "TJD:={\"carNumber\":\"string\",\"carNumColor\":\"string\",\"outCarId\":\"string\"}\n返回:\n" + - "{\n" + - " \"timestamp\": \"1464235239561\",\n" + - " \"returnCode\": \"T\",\n" + - " \"errorMsg\": \"\",\n" + - " \"returnMsg\": \"OK\",\n" + - " \"isSuccess\": \"0\",\n" + - "}\n") + "TJD:={\"carNumber\":\"string\"}") @PostMapping("/unbindCar") public ResultData unbindCar(@RequestBody Map paramMap) { // 1, get mall's park WxPark park = getCurrentPark(getTenantId()); - if (park.getVendorType() == EnumCarVendor.CAR_ETCP.getCode()) { + if (park.getVendorType().equals(EnumCarVendor.CAR_ETCP.getCode())) { return etcpUnbindCar(paramMap, park); + } else { + return unbindCar(paramMap, park); } - else if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()) { - ResultData e = tjdUnbindCar(paramMap, park); - if (e != null) return e; - } - return new ResultData(ErrorCode.CAR_VENDOR_NOT_SUPPORT.getCode(), "解绑车牌失败"); } private ResultData etcpUnbindCar(Map paramMap, WxPark park) { @@ -478,6 +474,26 @@ public class WxCarController extends BaseController { } } + private ResultData unbindCar(Map paramMap, WxPark park) { + String carNumber = paramMap.get("carNumber"); + if (StringUtils.isBlank(carNumber)) { + logger.error("carNumber为空"); + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "carNumber为空"); + } + try { + WxCUserCar userCar = new WxCUserCar(); + userCar.setTenantId(getTenantId()); + userCar.setCUserId(getUserId()); + userCar.setCarNumber(carNumber); + wxCUserCarService.deleteByObj(userCar); + } catch (Exception e) { + logger.error(e.getMessage()); + return new ResultData(ErrorCode.DB_FAIL.getCode(), "解绑车牌数据库错误, e:" + e.getMessage()); + } + + return new ResultData(); + } + private ResultData tjdUnbindCar(@RequestBody Map paramMap, WxPark park) { String carNumber = paramMap.get("carNumber"); if (StringUtils.isBlank(carNumber)) { @@ -536,7 +552,7 @@ public class WxCarController extends BaseController { " \"paidFee\": 0,\n" + " \"verificationInfo\": \"FSED9JvxgAU6XJUd8YRF5YH/LpfQYzCAfcPbAOKPV3BjKSatbgIsh7EBH2JBiRoGBe3btr gzKRMTfIoFuCn1XX7HUsJYlb7JSCBArnNmEVU4JuDLLjzoqB7qhQ8KnP16\"\n" + " }" + - "TJD:={\"carNumber\":\"string\",\"carNumColor\":\"string\",\"outCarId\":\"string\"}\n输出\n{\n" + + "TJD:={\"carNumber\":\"string\"}\n输出\n{\n" + " \"inDt\": \"20160526112000\",\n" + " \"timestamp\": \"1464235239561\",\n" + " \"returnCode\": \"T\",\n" + @@ -628,13 +644,13 @@ public class WxCarController extends BaseController { } String params = park.getVendorParams(); JSONObject objParams = JSON.parseObject(params); - String url = objParams.getString("url"); - String partner = objParams.getString("partner"); - String key = objParams.getString("key"); - String version = objParams.getString("version"); + String url = objParams.getString(TJDUtil.TJD_URL); + String partner = objParams.getString(TJDUtil.TJD_ACCOUNT); + String key = objParams.getString(TJDUtil.TJD_ACCOUNT_KEY); + String version = objParams.getString(TJDUtil.TJD_VERSION); String ret = tjd.infoForFreeMins(url, partner, key, version, carNumber); JSONObject retObj = JSON.parseObject(ret); - if (retObj.getString("returnCode").equalsIgnoreCase(EnumTJDCode.SUCCESS.getMessage())) { + if (retObj.getString(TJDUtil.TJD_RETURN_CODE).equalsIgnoreCase(EnumTJDCode.SUCCESS.getMessage())) { return new ResultData(retObj); } else { return new ResultData(ErrorCode.TJD_STOP_FEE_FAIL.getCode(), "停车费获取失败"); diff --git a/mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java b/mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java index cca87fd1d..e188c6a83 100644 --- a/mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java +++ b/mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java @@ -30,6 +30,17 @@ import java.util.Map; @Component public class TJDUtil { + public static final String TJD_URL = "url"; + public static final String TJD_ACCOUNT = "partner"; + public static final String TJD_ACCOUNT_KEY = "key"; + public static final String TJD_VERSION = "version"; + + public static final String TJD_CHARSET = "charset"; + + public static final String TJD_RETURN_CODE = "returnCode"; + public static final String TJD_RETURN_SUCC = "T"; + public static final String TJD_RETURN_FAIL = "F"; + public static final String TJD_IS_SUC = "isSuccess"; public static final String TJD_ERR_MSG = "errorMSG"; public static final String TJD_SUC = "0"; @@ -44,6 +55,7 @@ public class TJDUtil { public static final String TJD_PARK_AMT = "parkAmount"; public static final String TJD_PAY_AMT = "payAmount"; public static final String TJD_PAY_DT = "payDt"; + public static final String TJD_FREE_MINS = "freeMins"; private final static Logger logger = LoggerFactory.getLogger(TJDUtil.class); @@ -54,6 +66,10 @@ public class TJDUtil { private static String key = "bc2f09be8f5b4227898346cf6fe451c2"; private static String version = "1.0"; + // + // {"url":"http://prep.tingjiandan.com/openapi/gateway","partnerId":"fb21a5b2f7064ff5afb8288d5bb48ca8","key":"bc2f09be8f5b4227898346cf6fe451c2","parkId":"7715622dff834b34a44448b801c27607", "version":"1.0.0"} + // + public static void main(String[] args) throws Exception { String carNumber = "京XAZMF1"; @@ -67,9 +83,9 @@ public class TJDUtil { paramMap1.put("deductionAmount", obj.getString("totalAmount")); paramMap1.put("outTradeNo", "utf-8"); paramMap1.put("accountId", obj.getString("accountId")); - paramMap1.put("charset", "utf-8"); - paramMap1.put("partner", partner); - paramMap1.put("version", version); + paramMap1.put(TJD_CHARSET, "utf-8"); + paramMap1.put(TJD_ACCOUNT, partner); + paramMap1.put(TJD_VERSION, version); deductionNotSettle(baseurl, key, paramMap1); */ @@ -159,9 +175,9 @@ public class TJDUtil { if (outCarId != null) { paramMap.put("outCardId", outCarId); } - paramMap.put("charset", "utf-8"); - paramMap.put("partner", partner); - paramMap.put("version", version); + paramMap.put(TJD_CHARSET, "utf-8"); + paramMap.put(TJD_ACCOUNT, partner); + paramMap.put(TJD_VERSION, version); String result = Proc(url, key, service, paramMap); @@ -202,9 +218,9 @@ public class TJDUtil { Map paramMap = MapUtil.getOrderMap(); paramMap.put("carId", carId); - paramMap.put("charset", "utf-8"); - paramMap.put("partner", partner); - paramMap.put("version", version); + paramMap.put(TJD_CHARSET, "utf-8"); + paramMap.put(TJD_ACCOUNT, partner); + paramMap.put(TJD_VERSION, version); String result = Proc(url, key, service, paramMap); @@ -244,14 +260,14 @@ public class TJDUtil { String freeMins = "0"; Map paramMap = MapUtil.getOrderMap(); - paramMap.put("carNum", carNum); + paramMap.put(TJD_CAR_NUMBER, carNum); //paramMap.put("carNumColor", ""); //paramMap.put("pmParkId", ""); - paramMap.put("freeMins", freeMins); + paramMap.put(TJD_FREE_MINS, freeMins); //paramMap.put("tradeId", ""); - paramMap.put("charset", "utf-8"); - paramMap.put("partner", partner); - paramMap.put("version", version); + paramMap.put(TJD_CHARSET, "utf-8"); + paramMap.put(TJD_ACCOUNT, partner); + paramMap.put(TJD_VERSION, version); String result = Proc(url, key, service, paramMap); @@ -314,9 +330,9 @@ public class TJDUtil { paramMap.put("deductionAmount", deductionAmount); paramMap.put("outTradeNo", outTradeNo); paramMap.put("accountId", accountId); - paramMap.put("charset", "utf-8"); - paramMap.put("partner", partner); - paramMap.put("version", version); + paramMap.put(TJD_CHARSET, "utf-8"); + paramMap.put(TJD_ACCOUNT, partner); + paramMap.put(TJD_VERSION, version); String result = Proc(url, key, service, paramMap); /* @@ -362,9 +378,9 @@ public class TJDUtil { paramMap.put("deductionAmount", deductionAmount); paramMap.put("outTradeNo", outTradeNo); paramMap.put("accountId", accountId); - paramMap.put("charset", "utf-8"); - paramMap.put("partner", partner); - paramMap.put("version", version); + paramMap.put(TJD_CHARSET, "utf-8"); + paramMap.put(TJD_ACCOUNT, partner); + paramMap.put(TJD_VERSION, version); String result = Proc(url, key, service, paramMap); /* @@ -413,9 +429,9 @@ public class TJDUtil { paramMap.put("prePayType", prePayType); paramMap.put("minutes", minutes); paramMap.put("memo", memo); - paramMap.put("charset", "utf-8"); - paramMap.put("partner", partner); - paramMap.put("version", version); + paramMap.put(TJD_CHARSET, "utf-8"); + paramMap.put(TJD_ACCOUNT, partner); + paramMap.put(TJD_VERSION, version); String result = Proc(url, key, service, paramMap); /*{ @@ -469,9 +485,9 @@ public class TJDUtil { paramMap.put("EndDt", EndDt); paramMap.put("expireDt", expireDt); paramMap.put("memo", memo); - paramMap.put("charset", "utf-8"); - paramMap.put("partner", partner); - paramMap.put("version", version); + paramMap.put(TJD_CHARSET, "utf-8"); + paramMap.put(TJD_ACCOUNT, partner); + paramMap.put(TJD_VERSION, version); String result = Proc(url, key, service, paramMap); /*{ @@ -512,9 +528,9 @@ public class TJDUtil { Map paramMap = MapUtil.getOrderMap(); paramMap.put("tradeId", tradeId); paramMap.put("ticketid", ticketid); - paramMap.put("charset", "utf-8"); - paramMap.put("partner", partner); - paramMap.put("version", version); + paramMap.put(TJD_CHARSET, "utf-8"); + paramMap.put(TJD_ACCOUNT, partner); + paramMap.put(TJD_VERSION, version); String result = Proc(url, key, service, paramMap); /*{ From e00520ae4077cb553cd13f706a422277781642ff Mon Sep 17 00:00:00 2001 From: gongbiao Date: Fri, 20 Sep 2019 15:04:46 +0800 Subject: [PATCH 54/72] =?UTF-8?q?[=E7=B3=BB=E7=BB=9F=E5=8F=91=E5=8D=A1][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][=E5=8F=91=E9=80=81=E8=AF=A6=E6=83=85]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../db/migration/V201909170500__G_COUPON_PASSWORD.sql | 2 ++ .../java/com/iformall/domain/po/WxCouponPassword.java | 3 +++ .../src/main/resources/mapper/WxCouponPasswordMapper.xml | 9 ++++++++- 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 mallinkAdmin/src/main/resources/db/migration/V201909170500__G_COUPON_PASSWORD.sql diff --git a/mallinkAdmin/src/main/resources/db/migration/V201909170500__G_COUPON_PASSWORD.sql b/mallinkAdmin/src/main/resources/db/migration/V201909170500__G_COUPON_PASSWORD.sql new file mode 100644 index 000000000..d21cd7a56 --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V201909170500__G_COUPON_PASSWORD.sql @@ -0,0 +1,2 @@ +alter table wx_coupon_password +add column present_id bigint(20) default 0 not null comment '发放ID'; diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java index d5f84a35d..f7f52952d 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java @@ -46,6 +46,9 @@ public class WxCouponPassword extends BaseEntity { @io.swagger.annotations.ApiModelProperty(value="过期时间",name="expireDate") private Date expireDate; + @io.swagger.annotations.ApiModelProperty(value = "发放ID", name = "presentId") + private Long presentId; + @Transient private String statusStr; diff --git a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml index 270deaded..b512f3a55 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml @@ -13,10 +13,12 @@ + + - `id`,`tenant_id`,`coupon_id`,`coupon_short`,`password`,`status`,`sended_phone`,`card_id`,`create_date`,`update_date`,`expire_date` + `id`,`tenant_id`,`coupon_id`,`coupon_short`,`password`,`status`,`sended_phone`,`card_id`,`create_date`,`update_date`,`expire_date`,`present_id` @@ -54,6 +56,11 @@ and `expire_date` > #{expireDate} + + + and `present_id` > #{presentId} + + and id in From f8f7a4aaa353faee97c178bf78f111f34e99634d Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Fri, 20 Sep 2019 15:17:10 +0800 Subject: [PATCH 55/72] =?UTF-8?q?[=E5=81=9C=E8=BD=A6][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=81=9C=E7=AE=80=E5=8D=95code=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../callback/WxCarTJDCallBackController.java | 12 ++++-------- .../main/java/com/iformall/utils/car/TJDUtil.java | 10 ++++++---- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarTJDCallBackController.java b/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarTJDCallBackController.java index 80cbf3e41..a87d8c78d 100644 --- a/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarTJDCallBackController.java +++ b/mallinkCallback/src/main/java/com/iformall/controller/callback/WxCarTJDCallBackController.java @@ -51,10 +51,6 @@ public class WxCarTJDCallBackController extends BaseController { @Autowired WxCUserService wxCUserService; - SimpleDateFormat dateFormat0 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyyMMddHHmmss"); - - /** * 注册车牌 * @param paramMap @@ -193,7 +189,7 @@ public class WxCarTJDCallBackController extends BaseController { record.setParkName(parkName); record.setPlateNumber(carNumber); if(StringUtils.isNotBlank(inDt)) { - record.setEntranceTime(dateFormat1.parse(inDt)); + record.setEntranceTime(TJDUtil.dateOutFormat.parse(inDt)); } record.setPhone(phoneStrs); WxCarPayRecord query = new WxCarPayRecord(); @@ -285,10 +281,10 @@ public class WxCarTJDCallBackController extends BaseController { record.setPlateNumber(carNumber); record.setSynId(tradeId); if(StringUtils.isNotBlank(inDt)) { - record.setEntranceTime(dateFormat1.parse(inDt)); + record.setEntranceTime(TJDUtil.dateOutFormat.parse(inDt)); } if(StringUtils.isNotBlank(outDt)) { - record.setExitTime(dateFormat1.parse(outDt)); + record.setExitTime(TJDUtil.dateOutFormat.parse(outDt)); Long stayedTime = (record.getExitTime().getTime() - record.getEntranceTime().getTime())/ 1000; record.setStayedTime(stayedTime); } @@ -383,7 +379,7 @@ public class WxCarTJDCallBackController extends BaseController { record.setSynId(tradeId); record.setFee(stopFee); if (StringUtils.isNotBlank(stopFeeTime)) { - record.setFeeTime(dateFormat1.parse(stopFeeTime)); + record.setFeeTime(TJDUtil.dateOutFormat.parse(stopFeeTime)); } WxCarPayRecord query = new WxCarPayRecord(); diff --git a/mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java b/mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java index e188c6a83..987096064 100644 --- a/mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java +++ b/mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java @@ -57,6 +57,9 @@ public class TJDUtil { public static final String TJD_PAY_DT = "payDt"; public static final String TJD_FREE_MINS = "freeMins"; + public static final SimpleDateFormat dateInFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + public static final SimpleDateFormat dateOutFormat = new SimpleDateFormat("yyyyMMddHHmmss"); + private final static Logger logger = LoggerFactory.getLogger(TJDUtil.class); @@ -117,8 +120,7 @@ public class TJDUtil { */ public static String getCurrentDate() { Date currentDate = new Date(); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - String timestamp = sdf.format(currentDate); + String timestamp = dateInFormat.format(currentDate); return timestamp; } @@ -167,7 +169,7 @@ public class TJDUtil { String service = "parkhub.car.register"; Map paramMap = MapUtil.getOrderMap(); - paramMap.put("carNum", carNum); + paramMap.put(TJD_CAR_NUMBER, carNum); paramMap.put("carNumColor", carNumColor); if (phone != null) { paramMap.put("phone", phone); @@ -326,7 +328,7 @@ public class TJDUtil { // 为指定订单抵扣停车费,如果此时车辆已经出场,返回isSuccess错误码为3,停简单系统不再接收此笔抵扣信息,对方系统 需要给用户发起退款。 String service = "parkhub.order.deductionNotSettle"; Map paramMap = MapUtil.getOrderMap(); - paramMap.put("tradeId", tradeId); + paramMap.put(TJD_TRADE_ID, tradeId); paramMap.put("deductionAmount", deductionAmount); paramMap.put("outTradeNo", outTradeNo); paramMap.put("accountId", accountId); From 434ed4ce255e62c98c31ed37a67d70ce0dab9c8a Mon Sep 17 00:00:00 2001 From: gongbiao Date: Fri, 20 Sep 2019 15:17:15 +0800 Subject: [PATCH 56/72] =?UTF-8?q?[=E7=B3=BB=E7=BB=9F=E5=8F=91=E5=8D=A1][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][=E6=9B=B4=E6=96=B0=E5=8D=A1=E5=AF=86?= =?UTF-8?q?=E4=BF=A1=E6=81=AF]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iformall/service/impl/WxCouponPresentServiceImpl.java | 4 +++- .../src/main/resources/mapper/WxCouponPasswordMapper.xml | 7 +++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java index b0cc66757..ced576818 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java @@ -101,7 +101,8 @@ public class WxCouponPresentServiceImpl implements WxCouponPresentService { } //添加记录 final IdWorker idWorker = IdWorker.get(); - record.setId(idWorker.nextId()); + long id = idWorker.nextId(); + record.setId(id); record.setCouponName(wxCoupon.getTitle()); record.setSendAmount(phoneSet.size()); wxCouponPresentMapper.insertSelective(record); @@ -117,6 +118,7 @@ public class WxCouponPresentServiceImpl implements WxCouponPresentService { //发送 sendMsg(tenantId, phone, title, name, couponPassword.getPassword(), couponPassword.getId().toString()); //记录发送数据便于更新状态 + couponPassword.setPresentId(id); couponPassword.setSendedPhone(phone); tempList.add(couponPassword); i++; diff --git a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml index b512f3a55..c1362d458 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml @@ -146,10 +146,9 @@ update wx_coupon_password set - status=1,sended_phone=#{item.sendedPhone},update_date=now(),expire_date=date_add(now(),interval 30 DAY) - where - id - = #{item.id} + status=1,sended_phone=#{item.sendedPhone},update_date=now(),expire_date=date_add(now(),interval 30 DAY), + present_id=#{item.presentId} + where id = #{item.id} From 9c232fe5f8c64a9b37f46efb850e9bb54fcd6794 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Fri, 20 Sep 2019 15:31:27 +0800 Subject: [PATCH 57/72] =?UTF-8?q?[=E7=B3=BB=E7=BB=9F=E5=8F=91=E5=8D=A1][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][=E6=9F=A5=E8=AF=A2=E5=8D=A1=E5=AF=86?= =?UTF-8?q?=E4=BF=A1=E6=81=AF]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/WxCouponPasswordMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml index c1362d458..8229b3b25 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml @@ -58,7 +58,7 @@ - and `present_id` > #{presentId} + and `present_id` = #{presentId} From 906277b14704daf227adc9bea890168c1ba5401a Mon Sep 17 00:00:00 2001 From: gongbiao Date: Fri, 20 Sep 2019 15:56:06 +0800 Subject: [PATCH 58/72] =?UTF-8?q?[=E7=A7=AF=E5=88=86=E5=8F=98=E6=9B=B4?= =?UTF-8?q?=E5=8E=86=E5=8F=B2][=E4=BF=AE=E6=94=B9][=E6=80=BB=E7=A7=AF?= =?UTF-8?q?=E5=88=86]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/WxCreditHistoryMapper.xml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml b/mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml index 5122e980e..d411c9c42 100644 --- a/mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml @@ -211,10 +211,7 @@ select from wx_coupon_password - `status` not in (3,4) + and `tenant_id` = #{tenantId} From 0ebc701e332ea440f9a951b6e82b34c009ccbed8 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Fri, 20 Sep 2019 16:06:59 +0800 Subject: [PATCH 60/72] =?UTF-8?q?[=E7=A7=AF=E5=88=86][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E7=A7=AF=E5=88=86=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/WxCreditHistoryMapper.java | 6 - .../mapper/WxCreditHistoryMapper.xml | 31 --- .../controller/sys/DataInitController.java | 188 ------------------ 3 files changed, 225 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCreditHistoryMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCreditHistoryMapper.java index 207ee5596..72c22aa7c 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCreditHistoryMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCreditHistoryMapper.java @@ -30,10 +30,4 @@ public interface WxCreditHistoryMapper extends CommonMapper findListAfter(Integer creditType, String dateTime); - - int findMaxBefore(Long cUserId, String dateTime); - - List findListByIds(@Param("userIds") List userIds); } diff --git a/mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml b/mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml index d411c9c42..f40fa0aec 100644 --- a/mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCreditHistoryMapper.xml @@ -121,7 +121,6 @@ - - - - - - diff --git a/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java b/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java index 6cf21ce02..e7b8ec43d 100644 --- a/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java +++ b/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java @@ -104,49 +104,6 @@ public class DataInitController extends BaseController { return new ResultData(); } - /** - * 积分数据修复 - * - * @return - */ - @GetMapping("/fixCredit") - public ResultData fixCredit() { - try { - MallUserInfo userInfo = getUser(); - if(userInfo.isFmSuperAdmin()) { - doFixCredit(); - return new ResultData(); - } - } catch (Exception e) { - log.error("DataInitController::fixCredit error ", e); - return new ResultData(ErrorCode.MSG_METHOD_REQUEST_ERROR, e.getMessage()); - } - - return new ResultData(); - } - - - /** - * 修复wx_c_user_basic_info积分数据 - * - * @return - */ - @GetMapping("/fixCredit4CUserBasic") - public ResultData fixCredit4CUserBasic() { - try { - MallUserInfo userInfo = getUser(); - if (userInfo.isFmSuperAdmin()) { - doFixCreditHistory(); - return new ResultData(); - } - } catch (Exception e) { - log.error("DataInitController::fixCredit4CUserBasic error ", e); - return new ResultData(ErrorCode.MSG_METHOD_REQUEST_ERROR, e.getMessage()); - } - - return new ResultData(); - } - /** * 核销积分数据修复 * @@ -168,151 +125,6 @@ public class DataInitController extends BaseController { return new ResultData(); } - @Transactional(rollbackFor = Exception.class) - public void doFixCredit4CUserBasic() { - log.debug("cUserBasic积分更新, begin --------------》"); - // 1 查找c_user_basic中c_user不存在且积分为null的用户用户 - List userBasicInfoList = cUserBasicInfoMapper.selectNotCUserList(); - List ids = userBasicInfoList.stream().map(WxCUserBasicInfo::getId).collect(Collectors.toList()); - //log.debug("ids {}", JSON.toJSONString(ids)); - - // 2 获取对应用户的积分记录 - List creditList = creditHistoryMapper.findListByIds(ids); - ImmutableListMultimap userCreditHistory = Multimaps.index(creditList, new Function() { - @Nullable - @Override - public Long apply(@Nullable WxCreditHistory input) { - return input.getCUserId(); - } - }); - - //3 将历史记录最好积分重设积分 - AtomicInteger count = new AtomicInteger(0); - userBasicInfoList.forEach(wxCUserBasicInfo -> { - ImmutableList historyList = userCreditHistory.get(wxCUserBasicInfo.getId()); - WxCUserBasicInfo toUpdateUser = new WxCUserBasicInfo(); - toUpdateUser.setId(wxCUserBasicInfo.getId()); - //用户积分不存在,跳过 - if (CollectionUtils.isEmpty(historyList)) { - //log.debug("cUserBasic积分更新,id: {} 积分记录不存在", wxCUserBasicInfo.getId()); - return; - } - //积分记录存在,使用最新的总积分重新赋值 - WxCreditHistory wxCreditHistory = historyList.get(0); - toUpdateUser.setCredit(wxCreditHistory.getCreditAmount()); - cUserBasicInfoMapper.updateByPrimaryKeySelective(toUpdateUser); - log.debug("cUserBasic积分更新,id: {},原积分: {},新积分: {}, 积分时间: {}", wxCUserBasicInfo.getId(), wxCUserBasicInfo.getCredit(), toUpdateUser.getCredit(), DateUtils.format(wxCreditHistory.getCreateDate())); - count.getAndIncrement(); - }); - - log.debug("cUserBasic积分更新,更新用户 {}", count.intValue()); - log.debug("cUserBasic积分更新, end --------------》"); - } - - @Transactional(rollbackFor = Exception.class) - public void doFixCredit() { - // 1 获取积分记录 - List creditList = creditHistoryMapper.findListAfter(10, "2019-09-16 22:00:00"); - // 2 重新计算积分,比较是否需要修复 - creditList.forEach(wxCreditHistory -> { - WxCUser cUser = cUserMapper.selectByPrimaryKey(wxCreditHistory.getCUserId()); - WxCUserBasicInfo userBasicInfo = cUserBasicInfoMapper.selectByPrimaryKey(wxCreditHistory.getCUserId()); - //排查不存在的用户 - if (Objects.isNull(cUser) && Objects.isNull(userBasicInfo)) { - log.debug("用户不存在 id: {}", wxCreditHistory.getId()); - return; - } - - WxMerchant wxMerchant = new WxMerchant(); - wxMerchant.setStatus(1); - wxMerchant.setId(wxCreditHistory.getMerchantId()); - List wxMerchantList = wxMerchantMapper.findList(wxMerchant); - if (wxMerchantList == null || wxMerchantList.size() == 0) { - log.debug(ErrorCode.MERCHANT_INFO_NOT_FOUND.getMessage()); - return; - } - //根据商户id和花费金额计算需要新增的积分 - Map result = creditHistoryService.findByMerchantIdAndSpend(wxCreditHistory.getMerchantId(), String.valueOf(new BigDecimal(wxCreditHistory.getSpend()/100)), wxCreditHistory.getCUserId(),wxCreditHistory.getTenantId()); - - //Map result = creditHistoryService.findByMerchantIdAndSpend(wxCreditHistory.getMerchantId(), String.valueOf(wxCreditHistory.getSpend()), wxCreditHistory.getCUserId(), wxCreditHistory.getTenantId()); - Integer creditDB = wxCreditHistory.getCreditNum(); - Integer credit = result.get("credit"); - if (Objects.equals(credit, creditDB)) { - log.debug("本次积分计算:正确, id: {},原积分: {},重新计算积分: {}, 积分时间: {}", wxCreditHistory.getId(), creditDB, credit, DateUtils.format(wxCreditHistory.getCreateDate())); - } else { - log.debug("本次积分计算:错误, id: {},原积分: {},重新计算积分: {}, 积分时间: {}", wxCreditHistory.getId(), creditDB, credit, DateUtils.format(wxCreditHistory.getCreateDate())); - // 3 重新计算积分 - //用户新积分 - Integer newCredit = wxCreditHistory.getCreditAmount() - creditDB + credit; - - // 4 更新积分 - WxCUser toUpdateCUser = new WxCUser(); - toUpdateCUser.setId(wxCreditHistory.getCUserId()); - toUpdateCUser.setCredit(newCredit); - toUpdateCUser.setUpdateDate(new Date()); - cUserMapper.updateByPrimaryKeySelective(toUpdateCUser); - - WxCUserBasicInfo toUpdateBasicInfo = new WxCUserBasicInfo(); - toUpdateBasicInfo.setId(wxCreditHistory.getCUserId()); - toUpdateBasicInfo.setCredit(newCredit); - toUpdateBasicInfo.setUpdateDate(new Date()); - cUserBasicInfoMapper.updateByPrimaryKeySelective(toUpdateBasicInfo); - - WxCreditHistory toUpdateCreditHistory = new WxCreditHistory(); - toUpdateCreditHistory.setId(wxCreditHistory.getId()); - toUpdateCreditHistory.setCreditNum(credit); - toUpdateCreditHistory.setCreditAmount(newCredit); - creditHistoryMapper.updateByPrimaryKeySelective(toUpdateCreditHistory); - } - }); - } - - public void doFixCreditHistory() { - SimpleDateFormat dataFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - String dateTime = "2019-09-16 22:00:00"; - List cuUserList = creditHistoryMapper.findListAfter(null, null); // new ArrayList<>(); // - //cuUserList.add(new WxCreditHistory(){{ - // setCUserId(262738733739016192L); - //}}); - for (WxCreditHistory cuUser: cuUserList) { - //cuUserList.stream().forEach(cuUser->{ - WxCreditHistory q = new WxCreditHistory(); - q.setCUserId(cuUser.getCUserId()); - List creditHistories = creditHistoryMapper.findList(q); - int amount = 0; - boolean isError = false; - for (WxCreditHistory creditHistory : creditHistories) { - int oldamount = amount; - if (creditHistory.getCreditType().equals(EnumScoreType.MEM_IMPORT.getCode())) { - amount = creditHistory.getCreditNum(); - } else { - amount = amount + creditHistory.getCreditNum(); - } - if (!creditHistory.getCreditAmount().equals(amount)) { - //log.error("credit hist err: {},{},{},{},{}", creditHistory.getId(), creditHistory.getCUserId(), creditHistory.getCreditAmount(), creditHistory.getCreditNum(), oldamount); - WxCreditHistory updateRecord = new WxCreditHistory(); - updateRecord.setId(creditHistory.getId()); - updateRecord.setCreditAmount(amount); - creditHistoryMapper.updateByPrimaryKeySelective(updateRecord); - isError = true; - } - } - if (isError) { - WxCUser cUser = new WxCUser(); - cUser.setId(cuUser.getCUserId()); - cUser.setCredit(amount); - cUserMapper.updateByPrimaryKeySelective(cUser); - WxCUserBasicInfo cUserBasicInfo = new WxCUserBasicInfo(); - cUserBasicInfo.setId(cuUser.getCUserId()); - cUserBasicInfo.setCredit(amount); - cUserBasicInfoMapper.updateByPrimaryKeySelective(cUserBasicInfo); - log.error("credit hist err: {}", cuUser.getCUserId()); - } - //}); - - } - } - @Transactional(rollbackFor = Exception.class) public void doFixVerifyCredit() { // 1 获取券码 From 4a1e3f210407397db3b7580c5d748f77d93629c0 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Fri, 20 Sep 2019 16:15:44 +0800 Subject: [PATCH 61/72] =?UTF-8?q?[=E7=B3=BB=E7=BB=9F=E5=8F=91=E5=8D=A1][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][=E6=8C=89=E6=97=B6=E9=97=B4=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E5=88=97=E8=A1=A8]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/WxCouponPresentMapper.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mallinkService/src/main/resources/mapper/WxCouponPresentMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponPresentMapper.xml index fba10885a..2a4f76678 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponPresentMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponPresentMapper.xml @@ -34,10 +34,10 @@ and `phones` like concat('%', #{phones},'%') - and `create_date` between #{sendTimeStart} and #{sendTimeEnd} + and `create_time` between #{sendTimeStart} and #{sendTimeEnd} - and `update_date` = #{updateTime} + and `update_time` = #{updateTime} and id in From 24be7d2f479505af6deb5c19fdcf9d215908f062 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Fri, 20 Sep 2019 16:41:26 +0800 Subject: [PATCH 62/72] =?UTF-8?q?[=E7=B3=BB=E7=BB=9F=E5=8F=91=E5=8D=A1][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][=E5=88=9D=E5=A7=8B=E5=8C=96=E7=9F=AD?= =?UTF-8?q?=E4=BF=A1=E6=A8=A1=E6=9D=BF]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iformall/controller/sys/DataInitController.java | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java b/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java index e7b8ec43d..38ad1d8a9 100644 --- a/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java +++ b/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java @@ -1,9 +1,5 @@ package com.iformall.controller.sys; -import com.google.common.base.Function; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableListMultimap; -import com.google.common.collect.Multimaps; import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; import com.iformall.common.ResultData; @@ -14,11 +10,8 @@ import com.iformall.enums.EnumScoreType; import com.iformall.enums.EnumUserType; import com.iformall.mapper.*; import com.iformall.service.WxCreditHistoryService; -import com.iformall.utils.DateUtils; import io.swagger.annotations.ApiImplicitParam; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections.CollectionUtils; -import org.checkerframework.checker.nullness.qual.Nullable; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -26,10 +19,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; -import java.math.BigDecimal; -import java.text.SimpleDateFormat; import java.util.*; -import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; /** @@ -179,7 +169,7 @@ public class DataInitController extends BaseController { @Transactional(rollbackFor = Exception.class) public void addMsgModel(String context) { IdWorker idWorker = IdWorker.get(); - addBirthDayMsgModelToMall(EnumMsgModel.COUPON_BIRTHDAY_OPENED, idWorker, context); + addBirthDayMsgModelToMall(EnumMsgModel.COUPON_CARD_SEND, idWorker, context); } /** From 9647e47e64842bdb5be35ffb96f935b465d519c8 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Fri, 20 Sep 2019 16:49:09 +0800 Subject: [PATCH 63/72] =?UTF-8?q?[=E5=8D=A1=E5=AF=86][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=8D=A1=E5=AF=86=E9=94=99=E8=AF=AF=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/market/WxCouponController.java | 1 - .../main/java/com/iformall/common/ErrorCode.java | 4 ++-- .../impl/WxCouponPasswordServiceImpl.java | 16 ++++++++-------- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java index 819465327..0c2f3d9d3 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponController.java @@ -347,7 +347,6 @@ public class WxCouponController extends BaseController { @SystemControllerLog(description = "卡券兑换码-导出数据") public void exportCouponPassword(@ModelAttribute WxCouponPassword wxCouponPassword, HttpServletRequest request, HttpServletResponse response) { wxCouponPassword.setTenantId(getTenantId()); - wxCouponPassword.setExpireDate(new Date()); if (wxCouponPassword.getCouponId() == null) { wxCouponPassword.setCouponId(0L); } diff --git a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java index 1e478befe..6beab9dc7 100644 --- a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java @@ -223,8 +223,8 @@ public enum ErrorCode{ * 卡密 */ COUPON_PASSWORD_NOT_FOUND(9501, "兑换码未找到"), - COUPON_PASSWORD_HAD_USED(9502, "兑换码已失效"), - COUPON_PASSWORD_IS_CANCELED(9503, "兑换码已失效"), + COUPON_PASSWORD_HAD_USED(9502, "兑换码已使用"), + COUPON_PASSWORD_IS_CANCELED(9503, "兑换码已作废"), /** * 微信 diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java index c557fc3ca..fb0aa99b4 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java @@ -47,10 +47,13 @@ public class WxCouponPasswordServiceImpl implements WxCouponPasswordService { @Override public WxCouponPassword getByObj(WxCouponPassword obj) { + String errMsg = "兑换码已失效"; List pwdList = wxCouponPasswordMapper.findList(obj); if (pwdList.size() <= 0) { - throw new MallinkException(ErrorCode.COUPON_PASSWORD_NOT_FOUND); + logger.error(ErrorCode.COUPON_PASSWORD_NOT_FOUND.getMessage()); + throw new MallinkException(ErrorCode.COUPON_PASSWORD_NOT_FOUND.getCode(), errMsg); } + WxCouponPassword password = null; Integer errCode = EnumCouponPasswordStatus.INIT.getCode(); for( WxCouponPassword pwd: pwdList) { @@ -65,11 +68,11 @@ public class WxCouponPasswordServiceImpl implements WxCouponPasswordService { } if (password == null) { if (errCode.equals(EnumCouponPasswordStatus.USED.getCode())) { - logger.error("卡券已使用"); - throw new MallinkException(ErrorCode.COUPON_PASSWORD_HAD_USED); + logger.error(ErrorCode.COUPON_PASSWORD_HAD_USED.getMessage()); + throw new MallinkException(ErrorCode.COUPON_PASSWORD_HAD_USED.getCode(), errMsg); } else { - logger.error("卡券已过期或已作废"); - throw new MallinkException(ErrorCode.COUPON_PASSWORD_IS_CANCELED); + logger.error(ErrorCode.COUPON_PASSWORD_IS_CANCELED.getMessage()); + throw new MallinkException(ErrorCode.COUPON_PASSWORD_IS_CANCELED.getCode(), errMsg); } } return password; @@ -149,9 +152,6 @@ public class WxCouponPasswordServiceImpl implements WxCouponPasswordService { @Override public void exportData(HttpServletRequest request, HttpServletResponse response, WxCouponPassword couponPassword) { List pwdList = wxCouponPasswordMapper.findAvaPasswordListByCouponId(couponPassword); - if (pwdList.isEmpty()) { - throw new MallinkException(ErrorCode.COUPON_PASSWORD_NOT_FOUND); - } excelService.exportExcel(pwdList, null, "兑换码", WxCouponPassword.class, "卡兑换码.xlsx", response, false); } From e20a0caa2155235cbac25a6a0f54ffb1a2366b1e Mon Sep 17 00:00:00 2001 From: gongbiao Date: Fri, 20 Sep 2019 17:08:24 +0800 Subject: [PATCH 64/72] =?UTF-8?q?[=E7=B3=BB=E7=BB=9F=E5=8F=91=E5=8D=A1][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][=E5=88=9D=E5=A7=8B=E5=8C=96=E7=9F=AD?= =?UTF-8?q?=E4=BF=A1=E6=A8=A1=E6=9D=BF]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/sys/DataInitController.java | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java b/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java index 38ad1d8a9..a31e25564 100644 --- a/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java +++ b/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/DataInitController.java @@ -10,13 +10,9 @@ import com.iformall.enums.EnumScoreType; import com.iformall.enums.EnumUserType; import com.iformall.mapper.*; import com.iformall.service.WxCreditHistoryService; -import io.swagger.annotations.ApiImplicitParam; import lombok.extern.slf4j.Slf4j; import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.*; @@ -61,12 +57,11 @@ public class DataInitController extends BaseController { @PostMapping("/createMsgModel") - @ApiImplicitParam(name = "content", value = "content", dataType = "Long", paramType = "query", required = true) - public ResultData createMsgModel(String content) { + public ResultData createMsgModel(@RequestParam String content, @RequestParam Integer code) { try { MallUserInfo userInfo = getUser(); if (userInfo.isFmSuperAdmin()) { - addMsgModel(content); + addMsgModel(content, code); return new ResultData(); } } catch (Exception e) { @@ -167,9 +162,9 @@ public class DataInitController extends BaseController { } @Transactional(rollbackFor = Exception.class) - public void addMsgModel(String context) { + public void addMsgModel(String context, Integer code) { IdWorker idWorker = IdWorker.get(); - addBirthDayMsgModelToMall(EnumMsgModel.COUPON_CARD_SEND, idWorker, context); + addBirthDayMsgModelToMall(EnumMsgModel.getEnum(code), idWorker, context); } /** From a3cb50e80c3ebb17bdbb68ac59bf9d99d77d6b67 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Fri, 20 Sep 2019 17:23:24 +0800 Subject: [PATCH 65/72] =?UTF-8?q?[=E7=B3=BB=E7=BB=9F=E5=8F=91=E5=8D=A1][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][=E5=8F=91=E6=94=BE]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../market/WxCouponPresentController.java | 34 ++++++++++++++++-- .../impl/WxCouponPresentServiceImpl.java | 35 +++---------------- 2 files changed, 36 insertions(+), 33 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPresentController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPresentController.java index c07cc5c23..7e84eb485 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPresentController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPresentController.java @@ -7,8 +7,14 @@ import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; import com.iformall.domain.po.BaseEntity; import com.iformall.domain.po.MallUserInfo; +import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxCouponPresent; +import com.iformall.enums.EnumCouponStatus; +import com.iformall.enums.EnumCouponValidType; +import com.iformall.exception.MallinkException; +import com.iformall.service.PushLimitService; import com.iformall.service.WxCouponPresentService; +import com.iformall.service.WxCouponService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -18,6 +24,8 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.Date; + /** * @author gongbiao */ @@ -30,6 +38,12 @@ public class WxCouponPresentController extends BaseController { @Autowired private WxCouponPresentService wxCouponPresentService; + @Autowired + PushLimitService pushLimitService; + + @Autowired + WxCouponService wxCouponService; + @ApiOperation("分页列表接口") @GetMapping("/list") @ApiImplicitParams({ @@ -67,11 +81,25 @@ public class WxCouponPresentController extends BaseController { if (wxCouponPresent.getPhones().isEmpty()) { return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "请填写手机号"); } - MallUserInfo user = getUser(); - wxCouponPresent.setTenantId(user.getTenantId()); wxCouponPresent.setUserId(user.getId()); - + wxCouponPresent.setTenantId(user.getTenantId()); + try { + pushLimitService.checkSendTime(user.getTenantId()); + } catch (MallinkException e) { + logger.error(e.getMessage()); + return new ResultData(e.getErrorCode(), e.getMessage()); + } + WxCoupon wxCoupon = wxCouponService.getById(wxCouponPresent.getCouponId()); + if (wxCoupon.getValidType().equals(EnumCouponValidType.BETWEEN_TWO_TIME.getCode())) { //时间范围 + if (new Date().after(wxCoupon.getValidEndDate())) { + return new ResultData(ErrorCode.COUPON_IS_EXPIRED); + } + } + if (!wxCoupon.getStatus().equals(EnumCouponStatus.COUPON_STATUS_THROW_IN.getCode())) { + return new ResultData(ErrorCode.COUPON_IS_TAKE_OFF); + } + wxCouponPresent.setCouponName(wxCoupon.getTitle()); return wxCouponPresentService.add(wxCouponPresent); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java index ced576818..79aca266d 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java @@ -6,22 +6,19 @@ import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; import com.iformall.common.ResultData; import com.iformall.domain.po.WxAppinfo; -import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxCouponPassword; import com.iformall.domain.po.WxCouponPresent; import com.iformall.domain.po.msg.WxMsgRecord; import com.iformall.enums.*; -import com.iformall.exception.MallinkException; import com.iformall.mapper.WxCouponPasswordMapper; import com.iformall.mapper.WxCouponPresentMapper; import com.iformall.mq.MqBaseProducer; -import com.iformall.service.PushLimitService; import com.iformall.service.WxAppinfoService; import com.iformall.service.WxCouponPresentService; -import com.iformall.service.WxCouponService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import java.util.*; @@ -36,12 +33,6 @@ public class WxCouponPresentServiceImpl implements WxCouponPresentService { @Autowired WxCouponPresentMapper wxCouponPresentMapper; - @Autowired - PushLimitService pushLimitService; - - @Autowired - WxCouponService wxCouponService; - @Autowired WxCouponPasswordMapper wxCouponPasswordMapper; @@ -61,26 +52,11 @@ public class WxCouponPresentServiceImpl implements WxCouponPresentService { return wxCouponPresentMapper.selectByPrimaryKey(id); } + @Async @Override public ResultData add(WxCouponPresent record) { String tenantId = record.getTenantId(); - try { - pushLimitService.checkSendTime(tenantId); - } catch (MallinkException e) { - logger.error(e.getMessage()); - return new ResultData(e.getErrorCode(), e.getMessage()); - } - WxCoupon wxCoupon = wxCouponService.getById(record.getCouponId()); - if (wxCoupon.getValidType().equals(EnumCouponValidType.BETWEEN_TWO_TIME.getCode())) { //时间范围 - if (new Date().after(wxCoupon.getValidEndDate())) { - return new ResultData(ErrorCode.COUPON_IS_EXPIRED); - } - } - if (!wxCoupon.getStatus().equals(EnumCouponStatus.COUPON_STATUS_THROW_IN.getCode())) { - return new ResultData(ErrorCode.COUPON_IS_TAKE_OFF); - } //获取手机号 - record.setCouponName(wxCoupon.getTitle()); String phones = record.getPhones(); String[] phoneSplit = phones.split(","); Set phoneSet = new HashSet<>(phoneSplit.length); @@ -89,7 +65,6 @@ public class WxCouponPresentServiceImpl implements WxCouponPresentService { phoneSet.add(phone); } } - //查询有效券数量 WxCouponPassword wxCouponPassword = new WxCouponPassword(); wxCouponPassword.setTenantId(tenantId); @@ -97,20 +72,20 @@ public class WxCouponPresentServiceImpl implements WxCouponPresentService { wxCouponPassword.setStatus(EnumCouponPasswordStatus.INIT.getCode()); List list = wxCouponPasswordMapper.findList(wxCouponPassword); if (phoneSet.size() > list.size()) { + logger.info(ErrorCode.REMAIN_IS_EMPTY.getMessage()); return new ResultData(ErrorCode.REMAIN_IS_EMPTY); } //添加记录 final IdWorker idWorker = IdWorker.get(); long id = idWorker.nextId(); record.setId(id); - record.setCouponName(wxCoupon.getTitle()); record.setSendAmount(phoneSet.size()); wxCouponPresentMapper.insertSelective(record); //小程序 WxAppinfo appInfo = wxAppinfoService.getCAppInfo(tenantId); - String title = wxCoupon.getTitle(); + String title = record.getCouponName(); String name = appInfo.getName(); - List tempList = wxCouponPasswordMapper.findList(wxCouponPassword); + List tempList = new ArrayList<>(); //循环发送 int i = 0; for (String phone : phoneSet) { From f502aed4af615e9470daee2b5a2941d2b2441d38 Mon Sep 17 00:00:00 2001 From: gongbiao Date: Fri, 20 Sep 2019 17:31:17 +0800 Subject: [PATCH 66/72] =?UTF-8?q?[=E7=B3=BB=E7=BB=9F=E5=8F=91=E5=8D=A1][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9][=E5=8F=91=E6=94=BE]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../market/WxCouponPresentController.java | 37 ++++++++++++++++--- .../service/WxCouponPasswordService.java | 2 + .../service/WxCouponPresentService.java | 6 ++- .../impl/WxCouponPasswordServiceImpl.java | 5 +++ .../impl/WxCouponPresentServiceImpl.java | 23 +----------- 5 files changed, 46 insertions(+), 27 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPresentController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPresentController.java index 7e84eb485..ddfcadbd1 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPresentController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxCouponPresentController.java @@ -5,14 +5,13 @@ import com.iformall.annotation.SystemControllerLog; import com.iformall.common.ErrorCode; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; -import com.iformall.domain.po.BaseEntity; -import com.iformall.domain.po.MallUserInfo; -import com.iformall.domain.po.WxCoupon; -import com.iformall.domain.po.WxCouponPresent; +import com.iformall.domain.po.*; +import com.iformall.enums.EnumCouponPasswordStatus; import com.iformall.enums.EnumCouponStatus; import com.iformall.enums.EnumCouponValidType; import com.iformall.exception.MallinkException; import com.iformall.service.PushLimitService; +import com.iformall.service.WxCouponPasswordService; import com.iformall.service.WxCouponPresentService; import com.iformall.service.WxCouponService; import io.swagger.annotations.Api; @@ -25,6 +24,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.Date; +import java.util.HashSet; +import java.util.List; +import java.util.Set; /** * @author gongbiao @@ -44,6 +46,9 @@ public class WxCouponPresentController extends BaseController { @Autowired WxCouponService wxCouponService; + @Autowired + WxCouponPasswordService wxCouponPasswordService; + @ApiOperation("分页列表接口") @GetMapping("/list") @ApiImplicitParams({ @@ -99,8 +104,30 @@ public class WxCouponPresentController extends BaseController { if (!wxCoupon.getStatus().equals(EnumCouponStatus.COUPON_STATUS_THROW_IN.getCode())) { return new ResultData(ErrorCode.COUPON_IS_TAKE_OFF); } + + //获取手机号 + String phones = wxCouponPresent.getPhones(); + String[] phoneSplit = phones.split(","); + Set phoneSet = new HashSet<>(phoneSplit.length); + for (String phone : phoneSplit) { + if (!phone.isEmpty()) { + phoneSet.add(phone); + } + } + //查询有效券数量 + WxCouponPassword wxCouponPassword = new WxCouponPassword(); + wxCouponPassword.setTenantId(user.getTenantId()); + wxCouponPassword.setCouponId(wxCouponPresent.getCouponId()); + wxCouponPassword.setStatus(EnumCouponPasswordStatus.INIT.getCode()); + List list = wxCouponPasswordService.findList(wxCouponPassword); + if (phoneSet.size() > list.size()) { + logger.info(ErrorCode.REMAIN_IS_EMPTY.getMessage()); + return new ResultData(ErrorCode.REMAIN_IS_EMPTY); + } + wxCouponPresent.setCouponName(wxCoupon.getTitle()); - return wxCouponPresentService.add(wxCouponPresent); + wxCouponPresentService.add(wxCouponPresent, list, phoneSet); + return new ResultData(); } } diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponPasswordService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponPasswordService.java index 6eb6d0651..aae959129 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponPasswordService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponPasswordService.java @@ -6,6 +6,7 @@ import com.iformall.domain.vo.WxCouponPasswordCountInfoVO; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.util.List; public interface WxCouponPasswordService { @@ -67,4 +68,5 @@ public interface WxCouponPasswordService { PageInfo findCouponList(WxCouponPassword wxCouponPassword, Integer pageNum, Integer pageSize); + List findList(WxCouponPassword wxCouponPassword); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponPresentService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponPresentService.java index e54cb7dc7..8c4ca3d1d 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponPresentService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponPresentService.java @@ -2,8 +2,12 @@ package com.iformall.service; import com.github.pagehelper.PageInfo; import com.iformall.common.ResultData; +import com.iformall.domain.po.WxCouponPassword; import com.iformall.domain.po.WxCouponPresent; +import java.util.List; +import java.util.Set; + /** * @author gongbiao */ @@ -14,6 +18,6 @@ public interface WxCouponPresentService { WxCouponPresent findById(Long id); - ResultData add(WxCouponPresent wxCouponPresent); + ResultData add(WxCouponPresent wxCouponPresent, List list, Set phoneSet); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java index fb0aa99b4..379156481 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java @@ -161,6 +161,11 @@ public class WxCouponPasswordServiceImpl implements WxCouponPasswordService { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponPasswordMapper.findCouponCountInfo(record)); } + @Override + public List findList(WxCouponPassword wxCouponPassword) { + return wxCouponPasswordMapper.findList(wxCouponPassword); + } + /* public static void main(String[] args) { WxCouponPasswordServiceImpl ll = new WxCouponPasswordServiceImpl(); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java index 79aca266d..0eb665c87 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPresentServiceImpl.java @@ -2,7 +2,6 @@ package com.iformall.service.impl; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; -import com.iformall.common.ErrorCode; import com.iformall.common.IdWorker; import com.iformall.common.ResultData; import com.iformall.domain.po.WxAppinfo; @@ -54,27 +53,9 @@ public class WxCouponPresentServiceImpl implements WxCouponPresentService { @Async @Override - public ResultData add(WxCouponPresent record) { + public ResultData add(WxCouponPresent record, List list, Set phoneSet) { String tenantId = record.getTenantId(); - //获取手机号 - String phones = record.getPhones(); - String[] phoneSplit = phones.split(","); - Set phoneSet = new HashSet<>(phoneSplit.length); - for (String phone : phoneSplit) { - if (!phone.isEmpty()) { - phoneSet.add(phone); - } - } - //查询有效券数量 - WxCouponPassword wxCouponPassword = new WxCouponPassword(); - wxCouponPassword.setTenantId(tenantId); - wxCouponPassword.setCouponId(record.getCouponId()); - wxCouponPassword.setStatus(EnumCouponPasswordStatus.INIT.getCode()); - List list = wxCouponPasswordMapper.findList(wxCouponPassword); - if (phoneSet.size() > list.size()) { - logger.info(ErrorCode.REMAIN_IS_EMPTY.getMessage()); - return new ResultData(ErrorCode.REMAIN_IS_EMPTY); - } + //添加记录 final IdWorker idWorker = IdWorker.get(); long id = idWorker.nextId(); From 764d92d06f03818f9c98f292a72670338fd6e3d3 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Fri, 20 Sep 2019 17:56:08 +0800 Subject: [PATCH 67/72] =?UTF-8?q?[=E5=8D=A1=E5=AF=86][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=8D=A1=E5=AF=86=E8=8E=B7=E5=8F=96=E5=8D=A1=E5=88=B8=E5=87=BA?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E5=90=8E=EF=BC=8C=E6=81=A2=E5=A4=8D=E5=8E=9F?= =?UTF-8?q?=E6=9C=89=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WxCouponPasswordController.java | 27 +++++++++++-------- .../service/WxCouponPasswordService.java | 10 +++++-- .../impl/WxCouponPasswordServiceImpl.java | 1 - 3 files changed, 24 insertions(+), 14 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java index ce0d8aad0..148a8b7c6 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java @@ -29,10 +29,12 @@ public class WxCouponPasswordController extends BaseController { @Autowired private WxCouponService couponService; + @Autowired private WxOrderService orderService; + @ApiOperation(value = "根据卡密领卡", notes = "{\"password\":\"String\",\"formId\":\"String\"}") @PostMapping("getCouponOrderByPassword") public ResultData getCouponOrderByPassword(@RequestBody Map params) { @@ -68,28 +70,31 @@ public class WxCouponPasswordController extends BaseController { return new ResultData(ErrorCode.COUPON_IS_TAKE_OFF); } - // 2. 设置已使用 - try { - WxCouponPassword updateCouponPwd = new WxCouponPassword(); - updateCouponPwd.setId(couponPassword.getId()); - updateCouponPwd.setStatus(EnumCouponPasswordStatus.USED.getCode()); - couponPassword.setStatus(EnumCouponPasswordStatus.USED.getCode()); - couponPasswordService.saveOrUpdate(updateCouponPwd); - } catch (Exception e) { - logger.error(e.getMessage()); - return new ResultData(ErrorCode.DB_FAIL); - } + // 卡密领取卡券 + Integer pwdStatus = couponPassword.getStatus(); + setCouponPasswordStatus(couponPassword, EnumCouponPasswordStatus.USED); + couponPassword.setStatus(EnumCouponPasswordStatus.USED.getCode()); // 3. 领取free coupon try { WxOrder order = orderService.saveFreeOrderForCoupon(cuUser, coupon, null, formId, couponPassword.getId()); } catch (MallinkException e) { + setCouponPasswordStatus(couponPassword, EnumCouponPasswordStatus.getEnum(pwdStatus)); logger.error(e.getMessage()); return new ResultData(e.getErrorCode(), e.getMessage()); } catch (Exception e) { + setCouponPasswordStatus(couponPassword, EnumCouponPasswordStatus.getEnum(pwdStatus)); logger.error(e.getMessage()); return new ResultData(500, e.getMessage()); } return new ResultData(); } + + private void setCouponPasswordStatus(WxCouponPassword couponPassword, EnumCouponPasswordStatus pwdStatus) { + WxCouponPassword updateCouponPwd = new WxCouponPassword(); + updateCouponPwd.setId(couponPassword.getId()); + updateCouponPwd.setStatus(pwdStatus.getCode()); + couponPasswordService.saveOrUpdate(updateCouponPwd); + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/WxCouponPasswordService.java b/mallinkService/src/main/java/com/iformall/service/WxCouponPasswordService.java index aae959129..23801e543 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxCouponPasswordService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxCouponPasswordService.java @@ -1,8 +1,14 @@ package com.iformall.service; import com.github.pagehelper.PageInfo; +import com.iformall.common.ResultData; +import com.iformall.domain.po.WxCUser; +import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxCouponPassword; +import com.iformall.domain.po.WxOrder; import com.iformall.domain.vo.WxCouponPasswordCountInfoVO; +import com.iformall.enums.EnumCouponPasswordStatus; +import com.iformall.exception.MallinkException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -35,8 +41,8 @@ public interface WxCouponPasswordService { * @return */ WxCouponPassword getByObj(WxCouponPassword obj); - - /** + + /** * 保存或更新实体 * * @param record diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java index 379156481..b0c99382c 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java @@ -34,7 +34,6 @@ public class WxCouponPasswordServiceImpl implements WxCouponPasswordService { @Autowired ExcelService excelService; - @Override public PageInfo listAsPage(WxCouponPassword record, Integer pageIndex, Integer pageSize) { return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxCouponPasswordMapper.findList(record)); From 6014d3a523681a39f38b19848aab7b74acaaa792 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Sat, 21 Sep 2019 09:57:21 +0800 Subject: [PATCH 68/72] =?UTF-8?q?[=E5=81=9C=E8=BD=A6][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=81=9C=E8=BD=A6=E6=8A=B5=E6=89=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iformall/controller/WxCarController.java | 27 ++-- .../java/com/iformall/utils/car/TJDUtil.java | 138 +++++++++++++----- 2 files changed, 115 insertions(+), 50 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java index 1ccfb1843..59a030c5e 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java @@ -48,6 +48,9 @@ public class WxCarController extends BaseController { @Autowired WxMerchantService wxMerchantService; + @Autowired + WxCouponService couponService; + @Autowired WxCouponOrderService wxCouponOrderService; @@ -661,44 +664,36 @@ public class WxCarController extends BaseController { * 停车费抵扣 * */ - @ApiOperation(value = "停车费抵扣", notes = "{\"tradeId\":\"string\",\"deductionAmount\":\"string\",\"accountId\":\"string\",\"orderId\":\"string\"}\nresult\n{\n" + - " \"timestamp\": \"1464235239561\",\n" + - " \"returnCode\": \"T\",\n" + - " \"errorMsg\": \"\",\n" + - " \"returnMsg\": \"OK\",\n" + - " \"isSuccess\": \"0\",\n" + - " \"carId\": \"5836b8b52ada463ebc6199579f029561\"\n" + - " }") + @ApiOperation(value = "停车费抵扣", notes ="TJD: {\"tradeId\":\"string\",\"accountId\":\"string\",\"couponOrderId\":\"string\"}") @PostMapping("/deductionFee") public ResultData deductionFee(@RequestBody Map paramMap) { /// 1, get mall's park WxPark park = getCurrentPark(getTenantId()); if (park.getVendorType() == EnumCarVendor.CAR_TJD.getCode()) { String tradeId = paramMap.get("tradeId"); - String deductionAmount = paramMap.get("deductionAmount"); String accountId = paramMap.get("accountId"); - String outTradeNo = paramMap.get("orderId"); + String outTradeNo = paramMap.get("couponOrderId"); if (StringUtils.isBlank(tradeId)) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "tradeId为空"); } - if (StringUtils.isBlank(deductionAmount)) { - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "deductionAmount为空"); - } if (StringUtils.isBlank(accountId)) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "accountId为空"); } if (StringUtils.isBlank(outTradeNo)) { - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "orderId为空"); + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "couponOrderId为空"); } + WxCouponOrder couponOrder = wxCouponOrderService.getById(Long.valueOf(outTradeNo)); + WxCoupon coupon = couponService.getById(couponOrder.getCouponId()); String params = park.getVendorParams(); JSONObject objParams = JSON.parseObject(params); String url = objParams.getString("url"); String partner = objParams.getString("partner"); String key = objParams.getString("key"); String version = objParams.getString("version"); - String ret = tjd.deductionNotSettle(url, partner, key, version, tradeId, deductionAmount, outTradeNo, accountId); + String ret = tjd.deductionForDetail(url, partner, key, version, + tradeId, accountId, couponOrder, coupon); JSONObject retObj = JSON.parseObject(ret); - if (retObj.getString("returnCode").equalsIgnoreCase(EnumTJDCode.SUCCESS.getMessage())) { + if (retObj.getString(TJDUtil.TJD_RETURN_CODE).equalsIgnoreCase(EnumTJDCode.SUCCESS.getMessage())) { return new ResultData(); } else { return new ResultData(ErrorCode.TJD_DEDUCE_FEE_FAIL.getCode(), "停车费抵扣失败"); diff --git a/mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java b/mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java index 987096064..16627273b 100644 --- a/mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java +++ b/mallinkService/src/main/java/com/iformall/utils/car/TJDUtil.java @@ -2,6 +2,8 @@ package com.iformall.utils.car; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.iformall.domain.po.WxCoupon; +import com.iformall.domain.po.WxCouponOrder; import com.iformall.utils.MapUtil; import org.apache.http.Consts; import org.apache.http.HttpEntity; @@ -36,6 +38,7 @@ public class TJDUtil { public static final String TJD_VERSION = "version"; public static final String TJD_CHARSET = "charset"; + public static final String TJD_UTF_8 = "utf-8"; public static final String TJD_RETURN_CODE = "returnCode"; public static final String TJD_RETURN_SUCC = "T"; @@ -56,6 +59,21 @@ public class TJDUtil { public static final String TJD_PAY_AMT = "payAmount"; public static final String TJD_PAY_DT = "payDt"; public static final String TJD_FREE_MINS = "freeMins"; + public static final String TJD_ACCOUNT_ID = "accountId"; + public static final String TJD_PREPAY_TYPE = "prePayType"; + public static final String TJD_PREPAY_TYPE_3 = "3"; // 三方合作方支付 + public static final String TJD_PREPAY_TYPE_20 = "20"; // 手机场内支付 + public static final String TJD_DETAIL_LIST = "detailList"; + public static final String TJD_OUT_TRADE_NO = "outTradeNo"; + public static final String TJD_TYPE = "type"; + public static final String TJD_TYPE_DISCOUNT = "0"; + public static final String TJD_TYPE_COUPON = "1"; + public static final String TJD_COUPON_TYPE = "couponType"; + public static final String TJD_CHANNEL = "channel"; + public static final String TJD_AMOUNT = "amount"; + public static final String TJD_MINUTES = "minutes"; + public static final String TJD_CREDIT = "integral"; + public static final String TJD_MEMO = "memo"; public static final SimpleDateFormat dateInFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public static final SimpleDateFormat dateOutFormat = new SimpleDateFormat("yyyyMMddHHmmss"); @@ -177,7 +195,7 @@ public class TJDUtil { if (outCarId != null) { paramMap.put("outCardId", outCarId); } - paramMap.put(TJD_CHARSET, "utf-8"); + paramMap.put(TJD_CHARSET, TJD_UTF_8); paramMap.put(TJD_ACCOUNT, partner); paramMap.put(TJD_VERSION, version); @@ -220,7 +238,7 @@ public class TJDUtil { Map paramMap = MapUtil.getOrderMap(); paramMap.put("carId", carId); - paramMap.put(TJD_CHARSET, "utf-8"); + paramMap.put(TJD_CHARSET, TJD_UTF_8); paramMap.put(TJD_ACCOUNT, partner); paramMap.put(TJD_VERSION, version); @@ -267,7 +285,7 @@ public class TJDUtil { //paramMap.put("pmParkId", ""); paramMap.put(TJD_FREE_MINS, freeMins); //paramMap.put("tradeId", ""); - paramMap.put(TJD_CHARSET, "utf-8"); + paramMap.put(TJD_CHARSET, TJD_UTF_8); paramMap.put(TJD_ACCOUNT, partner); paramMap.put(TJD_VERSION, version); @@ -299,40 +317,92 @@ public class TJDUtil { * @param partner * @param key // 密钥 * @param version + * type 可选值:0=抵扣、1=优惠券 + * couponType type=1时必填,可选值:0=金额、1=时长、2=全免、3=时间区间 + * channel 可选值: type=0时:5013=微信、5014=支付宝、5015=抵扣其他 + * type=1时:2202=会员等级、2203=会员积分、2204=会员卡券、2205=会员补贴、2206=会员其他 + * amount: type=0时、couponType=0必填,单位(元),保留小数点后两位,金额类型使用 + * minutes: couponType=1时必填,单位(分钟),时长类型使用 + * integral: 大于等于0的整数值,积分类型使用,如果使用了积分兑换,可填写积分值 + * expireDt: type=1时选填,格式:yyyyMMddHHmmss,如果不填,则永不过期,若填写,则出场时间在此 时间之后,认为此记录已经过期,不再使用 + * membershipGrade: 调用方系统会员等级标识,如:LV1、VIP2、金卡等,长度不超过64位 + * identityType: identityId非空时,此值必填,可选值:01=手机号、02=会员卡号、03=车牌号、04=身份证号 + * identityId: identityType非空时,此值必填,对应身份标识类型的唯一值,长度不超过100位 * { - "service": "parkhub.order.deductionForDetail", - "partner": "120a565de377427184de35ca0f320764", - "sign": "3347b109a1e44f3fd5baa78b74a84948", - "signType": "md5", - "charset": "utf-8", - "version": "1.0", - "timestamp": "2016-05-26 11:30:10", - "tradeId": "c39d3aac49d04e12a187681e6189f841", - "accountId": "a9b2963c98344bb292e0fa3f7dd70946", - "prePayType": "3", - "giveFreeTimeOut": "false", - "detailList":"[{ - },{ - },{ - \"outTradeNo\":\"PLDKY01\", \"identityType\":\"01\", \"identityId\":\"17710111111\", \"membershipGrade\":\"LV1\", \"amount\":\"12.50\", \"type\":\"0\", \"channel\":\"5013\", \"memo\":\"批量抵扣-金额-微信\" - \"outTradeNo\":\"PLDKY02\", \"identityType\":\"01\", \"identityId\":\"17710111111\", \"membershipGrade\":\"LV1\", \"couponType\":\"1\", \"minutes\":\"60\", \"type\":\"1\", \"channel\":\"2204\", \"memo\":\"批量抵扣-时长-会员卡券\" - \"outTradeNo\":\"PLDKY03\", \"identityType\":\"01\", \"identityId\":\"17710111111\", \"membershipGrade\":\"LV1\", \"couponType\":\"3\", \"startDt\":\"20180901110000\", \"endDt\":\"20180901170000\", \"integral\":\"500\", - \"type\":\"1\", - \"channel\":\"2205\", \"memo\":\"批量抵扣-区间-积分-会员补贴\" - }]" + "service": "parkhub.order.deductionForDetail", + "partner": "120a565de377427184de35ca0f320764", + "sign": "3347b109a1e44f3fd5baa78b74a84948", + "signType": "md5", + "charset": "utf-8", + "version": "1.0", + "timestamp": "2016-05-26 11:30:10", + "tradeId": "c39d3aac49d04e12a187681e6189f841", + "accountId": "a9b2963c98344bb292e0fa3f7dd70946", + "prePayType": "3", + "giveFreeTimeOut": "false", + "detailList":"[{ + \"outTradeNo\":\"PLDKY01\", + \"identityType\":\"01\", + \"identityId\":\"17710111111\", + \"membershipGrade\":\"LV1\", + \"amount\":\"12.50\", + \"type\":\"0\", + \"channel\":\"5013\", + \"memo\":\"批量抵扣-金额-微信\" + },{ + \"outTradeNo\":\"PLDKY02\", + \"identityType\":\"01\", + \"identityId\":\"17710111111\", + \"membershipGrade\":\"LV1\", + \"couponType\":\"1\", + \"minutes\":\"60\", + \"type\":\"1\", + \"channel\":\"2204\", + \"memo\":\"批量抵扣-时长-会员卡券\" + },{ + \"outTradeNo\":\"PLDKY03\", + \"identityType\":\"01\", + \"identityId\":\"17710111111\", + \"membershipGrade\":\"LV1\", + \"couponType\":\"3\", + \"startDt\":\"20180901110000\", + \"endDt\":\"20180901170000\", + \"integral\":\"500\", + \"type\":\"1\", + \"channel\":\"2205\", \"memo\":\"批量抵扣-区间-积分-会员补贴\" + }]" } * @throws Exception */ - public static String deductionForDetail(String url, String partner, String key, String version, - String tradeId, String outTradeNo, String accountId, String deductionAmount) { + public static String deductionForDetail( + String url, String partner, String key, String version, + String tradeId, String accountId, + WxCouponOrder couponOrder, WxCoupon coupon) { // 为指定订单抵扣停车费,如果此时车辆已经出场,返回isSuccess错误码为3,停简单系统不再接收此笔抵扣信息,对方系统 需要给用户发起退款。 - String service = "parkhub.order.deductionNotSettle"; + String service = "parkhub.order.deductionForDetail"; Map paramMap = MapUtil.getOrderMap(); paramMap.put(TJD_TRADE_ID, tradeId); - paramMap.put("deductionAmount", deductionAmount); - paramMap.put("outTradeNo", outTradeNo); - paramMap.put("accountId", accountId); - paramMap.put(TJD_CHARSET, "utf-8"); + paramMap.put(TJD_ACCOUNT_ID, accountId); + paramMap.put(TJD_PREPAY_TYPE, TJD_PREPAY_TYPE_3); + + Map detailMap = MapUtil.getOrderMap(); + detailMap.put(TJD_OUT_TRADE_NO, String.valueOf(couponOrder.getId())); + detailMap.put(TJD_TYPE, TJD_TYPE_COUPON); + detailMap.put(TJD_CHANNEL, "2204"); + String memo = "会员优惠券"; + if (coupon.getUnit().equals(0)) { + detailMap.put(TJD_COUPON_TYPE, "0"); + detailMap.put(TJD_AMOUNT, coupon.getPriceStr()); + memo += "-金额"; + } else { + detailMap.put(TJD_COUPON_TYPE, "1"); + detailMap.put(TJD_MINUTES, String.valueOf(coupon.getPrice()*60)); + memo += "-时长"; + } + detailMap.put(TJD_MEMO, memo); + paramMap.put(TJD_DETAIL_LIST, JSON.toJSONString(detailMap)); + + paramMap.put(TJD_CHARSET, TJD_UTF_8); paramMap.put(TJD_ACCOUNT, partner); paramMap.put(TJD_VERSION, version); @@ -380,7 +450,7 @@ public class TJDUtil { paramMap.put("deductionAmount", deductionAmount); paramMap.put("outTradeNo", outTradeNo); paramMap.put("accountId", accountId); - paramMap.put(TJD_CHARSET, "utf-8"); + paramMap.put(TJD_CHARSET, TJD_UTF_8); paramMap.put(TJD_ACCOUNT, partner); paramMap.put(TJD_VERSION, version); @@ -431,7 +501,7 @@ public class TJDUtil { paramMap.put("prePayType", prePayType); paramMap.put("minutes", minutes); paramMap.put("memo", memo); - paramMap.put(TJD_CHARSET, "utf-8"); + paramMap.put(TJD_CHARSET, TJD_UTF_8); paramMap.put(TJD_ACCOUNT, partner); paramMap.put(TJD_VERSION, version); @@ -487,7 +557,7 @@ public class TJDUtil { paramMap.put("EndDt", EndDt); paramMap.put("expireDt", expireDt); paramMap.put("memo", memo); - paramMap.put(TJD_CHARSET, "utf-8"); + paramMap.put(TJD_CHARSET, TJD_UTF_8); paramMap.put(TJD_ACCOUNT, partner); paramMap.put(TJD_VERSION, version); @@ -530,7 +600,7 @@ public class TJDUtil { Map paramMap = MapUtil.getOrderMap(); paramMap.put("tradeId", tradeId); paramMap.put("ticketid", ticketid); - paramMap.put(TJD_CHARSET, "utf-8"); + paramMap.put(TJD_CHARSET, TJD_UTF_8); paramMap.put(TJD_ACCOUNT, partner); paramMap.put(TJD_VERSION, version); From c1a252466c1098ad5a9421664d12c328793a9020 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Sat, 21 Sep 2019 09:59:07 +0800 Subject: [PATCH 69/72] =?UTF-8?q?[=E5=8D=A1=E5=AF=86][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=8D=A1=E5=AF=86=E5=AF=BC=E5=87=BA=E6=B7=BB=E5=8A=A0ID?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/iformall/domain/po/WxCouponPassword.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java index f7f52952d..ff10e70b5 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java @@ -14,8 +14,9 @@ import java.util.List; @Data @EqualsAndHashCode(callSuper = true) public class WxCouponPassword extends BaseEntity { - + @Id + @Excel(name = "ID", width = 20, orderNum = "1") protected Long id; @Transient @@ -27,13 +28,13 @@ public class WxCouponPassword extends BaseEntity { private Long couponId; @io.swagger.annotations.ApiModelProperty(value="卡券短ID",name="couponShort") private String couponShort; - @Excel(name = "兑换码", width = 20, orderNum = "1") + @Excel(name = "兑换码", width = 20, orderNum = "2") @io.swagger.annotations.ApiModelProperty(value="商户名称",name="password") private String password; - @Excel(name = "状态", width = 20, replace = {"初始_0", "发送中_1", "已发出_2", "已使用_3", "不可用_4"}, orderNum = "3") + @Excel(name = "状态", width = 20, replace = {"初始_0", "发送中_1", "已发出_2", "已使用_3", "不可用_4"}, orderNum = "4") @io.swagger.annotations.ApiModelProperty(value="卡密状态: 0初始1信息发出中2信息已发出3已使用4已过期",name="status") private Integer status; - @Excel(name = "发送手机", width = 20, orderNum = "4") + @Excel(name = "发送手机", width = 20, orderNum = "5") @io.swagger.annotations.ApiModelProperty(value="卡密发送到手机",name="sendedPhone") private String sendedPhone; @io.swagger.annotations.ApiModelProperty(value="卡包ID(coupon_order_id/card_id)",name="cardId") @@ -42,7 +43,7 @@ public class WxCouponPassword extends BaseEntity { private Date createDate; @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") private Date updateDate; - @Excel(name="过期时间",width = 20,format="yyyy-MM-dd", orderNum = "2") + @Excel(name="过期时间",width = 20,format="yyyy-MM-dd", orderNum = "3") @io.swagger.annotations.ApiModelProperty(value="过期时间",name="expireDate") private Date expireDate; From 4612223e08a2c2496beeff239a03275e4380e50f Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Sat, 21 Sep 2019 10:02:32 +0800 Subject: [PATCH 70/72] =?UTF-8?q?[=E5=8D=A1=E5=AF=86][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=8D=A1=E5=AF=86=E5=AF=BC=E5=87=BA=E6=B7=BB=E5=8A=A0=E5=8D=A1?= =?UTF-8?q?=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/iformall/domain/po/WxCouponPassword.java | 1 + 1 file changed, 1 insertion(+) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java index ff10e70b5..8f090b64f 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCouponPassword.java @@ -37,6 +37,7 @@ public class WxCouponPassword extends BaseEntity { @Excel(name = "发送手机", width = 20, orderNum = "5") @io.swagger.annotations.ApiModelProperty(value="卡密发送到手机",name="sendedPhone") private String sendedPhone; + @Excel(name = "会员卡号", width = 20, orderNum = "6") @io.swagger.annotations.ApiModelProperty(value="卡包ID(coupon_order_id/card_id)",name="cardId") private Long cardId; @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate") From f01b8d29f60b4b1a213dfe4f803444a1a4bfe8df Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Sat, 21 Sep 2019 11:16:02 +0800 Subject: [PATCH 71/72] =?UTF-8?q?[=E5=8D=A1=E5=AF=86][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E6=97=B6=E6=9B=B4=E6=94=B9=E5=8D=A1=E5=AF=86?= =?UTF-8?q?=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/iformall/mapper/WxCouponPasswordMapper.java | 3 ++- .../service/impl/WxCouponPasswordServiceImpl.java | 5 +++-- .../com/iformall/service/impl/WxCouponServiceImpl.java | 2 +- .../main/resources/mapper/WxCouponPasswordMapper.xml | 10 ++++++++-- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java index 82a910167..8088ecaa4 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponPasswordMapper.java @@ -13,7 +13,8 @@ public interface WxCouponPasswordMapper extends CommonMapper findAvaPasswordListByCouponId(WxCouponPassword wxCouponPassword); void insertCouponPasswds(List pwdlist); - int updateStatusByCouponId(Long couponId); + int disableByCouponId(Long couponId); + int downloadByCouponId(Long couponId); List findCouponGroupList(WxCouponPassword wxCouponPassword); List findCouponCountInfo(WxCouponPassword wxCouponPassword); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java index b0c99382c..0e212ecf4 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponPasswordServiceImpl.java @@ -11,7 +11,6 @@ import com.iformall.exception.MallinkException; import com.iformall.mapper.WxCouponPasswordMapper; import com.iformall.service.ExcelService; import com.iformall.service.WxCouponPasswordService; -import com.iformall.utils.DateUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -142,7 +141,6 @@ public class WxCouponPasswordServiceImpl implements WxCouponPasswordService { newOne.setStatus(EnumCouponPasswordStatus.INIT.getCode()); newOne.setCreateDate(curDate); newOne.setUpdateDate(curDate); - newOne.setExpireDate(DateUtils.getTimeAfterDays(30, curDate)); couponPasswords.add(newOne); } wxCouponPasswordMapper.insertCouponPasswds(couponPasswords); @@ -150,6 +148,9 @@ public class WxCouponPasswordServiceImpl implements WxCouponPasswordService { @Override public void exportData(HttpServletRequest request, HttpServletResponse response, WxCouponPassword couponPassword) { + if (couponPassword.getCouponId() != null) { + wxCouponPasswordMapper.downloadByCouponId(couponPassword.getCouponId()); + } List pwdList = wxCouponPasswordMapper.findAvaPasswordListByCouponId(couponPassword); excelService.exportExcel(pwdList, null, "兑换码", WxCouponPassword.class, "卡兑换码.xlsx", response, false); 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 9bb1c8860..9d7f513ad 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java @@ -421,7 +421,7 @@ public class WxCouponServiceImpl implements WxCouponService { // 卡下架后,转赠找不到卡相关信息,所以修改卡转赠状态为不可转赠 wxCardInfoMapper.updateTransferStatusByCouponId(record.getId()); // 卡券下架,未使用的卡密要下架 - couponPasswordMapper.updateStatusByCouponId(record.getId()); + couponPasswordMapper.disableByCouponId(record.getId()); } record.setUpdateDate(new Date()); wxCouponMapper.updateByPrimaryKeySelective(record); diff --git a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml index d20252d99..933ce1e89 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponPasswordMapper.xml @@ -108,10 +108,16 @@ - + update wx_coupon_password set status=4, update_date=now() - where status != 3 and tenant_id = #{tenantId} and coupon_id=#{couponId} + where status != 3 and coupon_id=#{couponId} + + + + update wx_coupon_password + set status=1, update_date=now(), expire_date=date_add(now(),interval 30 DAY) + where status=0 and coupon_id=#{couponId}