From bc161ff7fba3ff638190039c2b1a1c7daab341d1 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Thu, 19 Sep 2019 13:44:32 +0800 Subject: [PATCH] =?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} + + +