Browse Source

紫亚兰签到

zhijiezhao 9 months ago
parent
commit
a17dd3706c

+ 15 - 2
src/main/java/com/caimei365/user/controller/BaseApi.java

@@ -47,6 +47,12 @@ public class BaseApi {
         return "欢迎使用!";
     }
 
+//    @GetMapping("creat/ticket")
+//    public ResponseJson creatTicket() {
+//        return baseService.creatTicket();
+//    }
+
+
     /**
      * Token失效
      */
@@ -146,21 +152,27 @@ public class BaseApi {
 
     /**
      * 获取登录验证码
+     *
      * @param mobile 输入手机号
      * @return
      */
     @ApiOperation("获取登录验证码")
     @GetMapping("/login/code")
-    public ResponseJson loginSmsCode(String mobile) { return baseService.getLoginCode(mobile);}
+    public ResponseJson loginSmsCode(String mobile) {
+        return baseService.getLoginCode(mobile);
+    }
 
     /**
      * 获取绑定运营人员验证码
+     *
      * @param mobile 输入手机号
      * @return
      */
     @ApiOperation("获取绑定运营人员验证码")
     @GetMapping("/operate/code")
-    public ResponseJson operateSmsCode(String mobile) { return baseService.operateSmsCode(mobile);}
+    public ResponseJson operateSmsCode(String mobile) {
+        return baseService.operateSmsCode(mobile);
+    }
 
     /**
      * 修改密码(找回密码)
@@ -179,6 +191,7 @@ public class BaseApi {
     public ResponseJson updatePassword(PasswordDto passwordDto) {
         return baseService.updatePassword(passwordDto);
     }
+
     /**
      * 修改密码(找回密码)-- 组织
      *

+ 10 - 2
src/main/java/com/caimei365/user/controller/LoginApi.java

@@ -4,6 +4,7 @@ import com.caimei365.user.idempotent.IpSave;
 import com.caimei365.user.model.ResponseJson;
 import com.caimei365.user.model.dto.*;
 import com.caimei365.user.model.po.ShopSignPo;
+import com.caimei365.user.model.po.TicketPo;
 import com.caimei365.user.model.vo.MessageCenter;
 import com.caimei365.user.model.vo.UserLoginVo;
 import com.caimei365.user.service.CmDistributionService;
@@ -118,10 +119,16 @@ public class LoginApi {
         return loginService.ticketBind(ticket, idCard, userId, name, mobile, work);
     }
 
+    @ApiOperation("紫亚兰票据详情")
+    @GetMapping("/ticket/detail")
+    public ResponseJson<TicketPo> ticketBind(String ticket) {
+        return loginService.ticketDetail(ticket);
+    }
+
     @ApiOperation("紫亚兰展台供应商信息")
     @GetMapping("/shop/detail")
-    public ResponseJson<ShopSignPo> shopDetail(Integer shopId,Integer userId) {
-        return loginService.shopDetail(shopId,userId);
+    public ResponseJson<ShopSignPo> shopDetail(Integer shopId, Integer userId) {
+        return loginService.shopDetail(shopId, userId);
     }
 
 
@@ -136,6 +143,7 @@ public class LoginApi {
     public ResponseJson<List<ShopSignPo>> signList(Integer userId) {
         return loginService.signList(userId);
     }
+
     /**
      * 登录(手机号,验证码)--组织
      *

+ 4 - 0
src/main/java/com/caimei365/user/mapper/BaseMapper.java

@@ -247,4 +247,8 @@ public interface BaseMapper {
      * @return 相关图片集合
      */
     List<String> getRelatedImageList(CmRelatedImage cmRelatedImage);
+
+    Integer findTicket(String s);
+
+    void insertTicket(String s);
 }

+ 3 - 0
src/main/java/com/caimei365/user/model/po/TicketPo.java

@@ -7,4 +7,7 @@ public class TicketPo {
     private Integer userId;
     private String ticketId;
     private String idCard;
+    private String mobile;
+    private String name;
+    private String work;
 }

+ 2 - 0
src/main/java/com/caimei365/user/service/BaseService.java

@@ -145,4 +145,6 @@ public interface BaseService {
 
     int getUserType(String userId);
     CmUser findUserByMobile(String mobile, Integer oldUserId, Integer userIdentity);
+
+    ResponseJson creatTicket();
 }

+ 3 - 0
src/main/java/com/caimei365/user/service/LoginService.java

@@ -6,6 +6,7 @@ import com.caimei365.user.model.dto.LoginCodeDto;
 import com.caimei365.user.model.dto.LoginPasswordDto;
 import com.caimei365.user.model.dto.ScanBindDto;
 import com.caimei365.user.model.po.ShopSignPo;
+import com.caimei365.user.model.po.TicketPo;
 import com.caimei365.user.model.vo.MessageCenter;
 import com.caimei365.user.model.vo.UserLoginVo;
 import com.github.pagehelper.PageInfo;
@@ -245,4 +246,6 @@ public interface LoginService {
     ResponseJson<ShopSignPo> shopDetail(Integer shopId,Integer userId);
 
     ResponseJson<List<ShopSignPo>> signList(Integer userId);
+
+    ResponseJson<TicketPo> ticketDetail(String ticket);
 }

+ 59 - 32
src/main/java/com/caimei365/user/service/impl/BaseServiceImpl.java

@@ -29,6 +29,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
 
 import javax.annotation.Resource;
+import java.security.SecureRandom;
 import java.text.SimpleDateFormat;
 import java.util.HashMap;
 import java.util.List;
@@ -204,7 +205,7 @@ public class BaseServiceImpl implements BaseService {
                 return ResponseJson.error("验证码已发送,请勿重复操作");
             }*/
             // 重复发送,删除前一个验证码
-            redisService.remove("code:"+ mobile);
+            redisService.remove("code:" + mobile);
             Integer dbUserId = null;
             // 根据手机号查询用户Id
             String content = "";
@@ -217,14 +218,14 @@ public class BaseServiceImpl implements BaseService {
                 // 您正在操作登录采美商城,验证码:{s6},请在5分钟内完成验证。如非本人操作,请忽略本短信。
                 content = "您正在操作登录采美商城,验证码:" + randomCode + ",请在5分钟内完成验证。如非本人操作,请忽略本短信。";
                 codeTypeTxt = "登录采美商城";
-            } else if (9 == activateCodeType){
+            } else if (9 == activateCodeType) {
                 // 联合丽格登录发送短信
-                dbUserId = baseMapper.getUserIdByOrganize(4,mobile);
+                dbUserId = baseMapper.getUserIdByOrganize(4, mobile);
                 if (dbUserId == null) {
                     return ResponseJson.error("该手机号暂未注册");
                 }
                 UserLoginVo userLoginVo = baseMapper.getUserIdByOrganizeStatus(4, mobile);
-                if ( null != userLoginVo.getClubStatus()) {
+                if (null != userLoginVo.getClubStatus()) {
                     if (1 == userLoginVo.getClubStatus()) {
                         return ResponseJson.error(-1, "账号待审核,请耐心等待审核结果", null);
                     }
@@ -241,14 +242,14 @@ public class BaseServiceImpl implements BaseService {
             } else {
                 return ResponseJson.error("参数错误:activateCodeType");
             }
-            boolean smsFlag = isBeta || remoteCallService.remoteSendSms(0,1,mobile,content);
+            boolean smsFlag = isBeta || remoteCallService.remoteSendSms(0, 1, mobile, content);
             if (!smsFlag) {
                 // 短信发送失败重试一次
-                smsFlag = remoteCallService.remoteSendSms(0,1,mobile,content);
+                smsFlag = remoteCallService.remoteSendSms(0, 1, mobile, content);
             }
             if (smsFlag) {
-                redisService.set("code:"+ mobile, randomCode,300L);
-                log.info(codeTypeTxt + "登录短信,发送到"+ mobile + "的验证码为:"+ randomCode);
+                redisService.set("code:" + mobile, randomCode, 300L);
+                log.info(codeTypeTxt + "登录短信,发送到" + mobile + "的验证码为:" + randomCode);
                 return ResponseJson.success("发送验证码成功");
             } else {
                 log.info(codeTypeTxt + ",验证码发送失败!");
@@ -256,39 +257,39 @@ public class BaseServiceImpl implements BaseService {
             }
         } else if (8 == activateCodeType) {
             // 联合丽格注册发送短信
-            Integer dbUserId = baseMapper.getUserIdByOrganize(4,mobile);
+            Integer dbUserId = baseMapper.getUserIdByOrganize(4, mobile);
             if (dbUserId != null) {
                 return ResponseJson.error("该手机号已注册");
             }
             // 您的验证码为:{s6},5分钟内有效,请勿泄漏他人。
             String content = "【丽格集采联盟】您的验证码为:" + randomCode + ",5分钟内有效,请勿泄漏他人。";
-            sendFlag = isBeta || remoteCallService.remoteSendSms(0,1,mobile,content);
+            sendFlag = isBeta || remoteCallService.remoteSendSms(0, 1, mobile, content);
             if (!sendFlag) {
                 // 短信发送失败重试一次
-                sendFlag = remoteCallService.remoteSendSms(0,1,mobile,content);
+                sendFlag = remoteCallService.remoteSendSms(0, 1, mobile, content);
             }
             codeTypeTxt = "联合丽格注册";
-        } else if (10 == activateCodeType){
+        } else if (10 == activateCodeType) {
             // 联合丽格找回密码发送短信
-            Integer dbUserId = baseMapper.getUserIdByOrganize(4,mobile);
+            Integer dbUserId = baseMapper.getUserIdByOrganize(4, mobile);
             if (dbUserId == null) {
                 return ResponseJson.error("该手机号暂未注册");
             }
             // 您正在修改密码,验证码为:{s6},5分钟内有效,请勿泄漏他人。
             String content = "【丽格集采联盟】您正在修改密码,验证码为:" + randomCode + ",5分钟内有效,请勿泄漏他人。";
-            sendFlag = isBeta || remoteCallService.remoteSendSms(0,1,mobile,content);
+            sendFlag = isBeta || remoteCallService.remoteSendSms(0, 1, mobile, content);
             if (!sendFlag) {
                 // 短信发送失败重试一次
-                sendFlag = remoteCallService.remoteSendSms(0,1,mobile,content);
+                sendFlag = remoteCallService.remoteSendSms(0, 1, mobile, content);
             }
             codeTypeTxt = "联合丽格找回密码";
-        } else if (11 == activateCodeType){
-                // 联合丽格
-                // 您正在更改手机号,验证码为:{s6},5分钟内有效,请勿泄漏他人。
-                String content = "【丽格集采联盟】您正在更改手机号,验证码为:" + randomCode + ",5分钟内有效,请勿泄漏他人。";
+        } else if (11 == activateCodeType) {
+            // 联合丽格
+            // 您正在更改手机号,验证码为:{s6},5分钟内有效,请勿泄漏他人。
+            String content = "【丽格集采联盟】您正在更改手机号,验证码为:" + randomCode + ",5分钟内有效,请勿泄漏他人。";
 
-                sendFlag = isBeta || remoteCallService.remoteSendSms(0, 1, mobile, content);
-                codeTypeTxt = "更换联系人(旧手机号验证码)";
+            sendFlag = isBeta || remoteCallService.remoteSendSms(0, 1, mobile, content);
+            codeTypeTxt = "更换联系人(旧手机号验证码)";
         } else if (12 == activateCodeType) {
             // 联合丽格
             if (null != userId && userId > 0) {
@@ -329,10 +330,10 @@ public class BaseServiceImpl implements BaseService {
             if (6 == activateCodeType) {
                 //二手验证码10分钟有效期
                 redisService.set("code:" + mobile, randomCode, 600L);
-            } else if (8 == activateCodeType || 10 == activateCodeType || 11 == activateCodeType||14 == activateCodeType||15 == activateCodeType) {
+            } else if (8 == activateCodeType || 10 == activateCodeType || 11 == activateCodeType || 14 == activateCodeType || 15 == activateCodeType) {
                 // 联合丽格验证码5分钟有效期
                 redisService.set("code:" + mobile, randomCode, 300L);
-            }else {
+            } else {
                 redisService.set("code:" + mobile, randomCode, 1800L);
             }
             log.info(codeTypeTxt + ",发送到:" + mobile + "的短信验证码为: " + randomCode);
@@ -528,19 +529,19 @@ public class BaseServiceImpl implements BaseService {
         // 生成6位数验证码
         String randomCode = CodeUtil.generateCodeInt(6);
         // 开发、测试环境下短信验证码固定为666666
-        boolean isCode = "dev".equals(profile)||"beta".equals(profile);
+        boolean isCode = "dev".equals(profile) || "beta".equals(profile);
         if (isCode) {
             randomCode = "666666";
         }
         // 您正在操作绑定运营人员,验证码:{s6},请在5分钟内完成验证。如非本人操作,请忽略本短信。
-        String content = "您正在操作绑定运营人员,验证码:"+ randomCode+",请在5分钟内完成验证。如非本人操作,请忽略本短信。";
-        boolean smsFlag = isCode || remoteCallService.remoteSendSms(0,1,mobile,content);
+        String content = "您正在操作绑定运营人员,验证码:" + randomCode + ",请在5分钟内完成验证。如非本人操作,请忽略本短信。";
+        boolean smsFlag = isCode || remoteCallService.remoteSendSms(0, 1, mobile, content);
         if (!smsFlag) {
-            smsFlag = remoteCallService.remoteSendSms(0,1,mobile,content);
+            smsFlag = remoteCallService.remoteSendSms(0, 1, mobile, content);
         }
         if (smsFlag) {
-            redisService.set("code:"+mobile,randomCode,300L);
-            log.info("绑定运营人员,发送到:"+mobile+"验证码为:"+randomCode);
+            redisService.set("code:" + mobile, randomCode, 300L);
+            log.info("绑定运营人员,发送到:" + mobile + "验证码为:" + randomCode);
             return ResponseJson.success("发送验证码成功");
         } else {
             return ResponseJson.error("发送验证码失败,请稍后再试");
@@ -614,7 +615,7 @@ public class BaseServiceImpl implements BaseService {
         String dbPassword = Md5Util.md5(passWord);
         baseMapper.updatePasswordByUserId(dbPassword, dbUserId);
         //重新设置密码后将登录失败表中近30分钟记录置为删除
-        redisService.remove("login-"+dbUserId);
+        redisService.remove("login-" + dbUserId);
         return ResponseJson.success("密码修改成功", "");
     }
 
@@ -672,7 +673,7 @@ public class BaseServiceImpl implements BaseService {
         String dbPassword = Md5Util.md5(passWord);
         baseMapper.updatePasswordByUserId(dbPassword, dbUserId);
         //重新设置密码后将登录失败表中近30分钟记录置为删除
-        redisService.remove("login-"+dbUserId);
+        redisService.remove("login-" + dbUserId);
         return ResponseJson.success("密码修改成功", "");
     }
 
@@ -820,7 +821,7 @@ public class BaseServiceImpl implements BaseService {
 
     @Override
     public String getByMobile(Integer userIdentity, Integer userId) {
-        return baseMapper.getByMobile(userIdentity,userId);
+        return baseMapper.getByMobile(userIdentity, userId);
     }
 
     @Override
@@ -842,6 +843,32 @@ public class BaseServiceImpl implements BaseService {
     public CmUser findUserByMobile(String mobile, Integer oldUserId, Integer userIdentity) {
         return baseMapper.findUserByMobile(mobile, oldUserId, userIdentity);
     }
+
+    @Override
+    public ResponseJson creatTicket() {
+        for (int i = 0; i < 400; i++) {
+            String s = generateSecureRandomString(12);
+            Integer id = baseMapper.findTicket(s);
+            if (null == id) {
+                baseMapper.insertTicket(s);
+            }
+        }
+        return ResponseJson.success();
+    }
+
+    public static String generateSecureRandomString(int length) {
+        String chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
+        StringBuilder sb = new StringBuilder();
+        SecureRandom random = new SecureRandom();
+        for (int i = 0; i < length; i++) {
+            int index = random.nextInt(chars.length());
+            sb.append(chars.charAt(index));
+        }
+
+        return sb.toString();
+    }
+
+
     @Override
     public int getUserType(String userId) {
         return baseMapper.getUserType(userId);

+ 7 - 1
src/main/java/com/caimei365/user/service/impl/LoginServiceImpl.java

@@ -28,6 +28,7 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpHeaders;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
+import sun.security.krb5.internal.Ticket;
 
 import javax.annotation.Resource;
 import java.text.ParseException;
@@ -1646,7 +1647,7 @@ public class LoginServiceImpl implements LoginService {
     public ResponseJson ticketBind(String ticket, String idCard, Integer userId, String name, String mobile, String work) {
         TicketPo ticketPo = loginMapper.findTicket(ticket);
         TicketPo ticketUser = loginMapper.findTicketUser(userId);
-        if (StringUtils.isBlank(ticketUser.getTicketId())) {
+        if (null!= ticketUser && StringUtils.isNotBlank(ticketUser.getTicketId())) {
             return ResponseJson.error(-3, "该用户已绑定门票!");
         }
         if (StringUtils.isBlank(ticketPo.getTicketId())) {
@@ -1700,6 +1701,11 @@ public class LoginServiceImpl implements LoginService {
         return ResponseJson.success(shopSignPos);
     }
 
+    @Override
+    public ResponseJson<TicketPo> ticketDetail(String ticket) {
+        return ResponseJson.success(loginMapper.findTicket(ticket));
+    }
+
     /**
      * 根据userId查是否过期,返回dto对象,flag=0未买过,-1过期,1有效,endTime过期时间
      */

+ 8 - 0
src/main/resources/mapper/BaseMapper.xml

@@ -716,6 +716,9 @@
             </if>
         </trim>
     </insert>
+    <insert id="insertTicket">
+        INSERT INTO cm_zyl_ticket (ticketId) values(#{s})
+    </insert>
 
     <update id="updateWxUnion" parameterType="WxUnion">
         update wx_union
@@ -790,4 +793,9 @@
         order by cm_related_image.createTime desc
     </select>
 
+    <select id="findTicket" resultType="java.lang.Integer">
+        select id from cm_zyl_ticket
+        where ticketId = #{s}
+    </select>
+
 </mapper>

+ 8 - 8
src/main/resources/mapper/LoginMapper.xml

@@ -506,18 +506,18 @@
     </select>
 
     <select id="findTicket" resultType="com.caimei365.user.model.po.TicketPo">
-        select userId, ticketId, idCard
+        select userId, ticketId, idCard, name, mobile, work
         from cm_zyl_ticket
         where ticketId = #{ticket}
     </select>
 
     <update id="updateTicket">
         update cm_zyl_ticket
-        set userId = #{userId},
-            idCard = #{idCard},
-            name = #{name},
-            mobile = #{mobile},
-            work = #{work},
+        set userId   = #{userId},
+            idCard   = #{idCard},
+            name     = #{name},
+            mobile   = #{mobile},
+            work     = #{work},
             bindTime = now()
         where ticketId = #{ticket}
     </update>
@@ -541,12 +541,12 @@
     </update>
 
     <select id="findShopSignPos" resultType="com.caimei365.user.model.po.ShopSignPo">
-        SELECT id,shopName,shopLogo,(SELECT shopIds FROM cm_zyl_ticket where userId = #{userId}) as shopIds
+        SELECT id, shopName, shopLogo, (SELECT shopIds FROM cm_zyl_ticket where userId = #{userId}) as shopIds
         FROM cm_zyl_shop
     </select>
 
     <select id="findShopDetail" resultType="com.caimei365.user.model.po.ShopSignPo">
-        SELECT id,shopName,shopLogo,(SELECT shopIds FROM cm_zyl_ticket where userId = #{userId}) as shopIds
+        SELECT id, shopName, shopLogo, (SELECT shopIds FROM cm_zyl_ticket where userId = #{userId}) as shopIds
         FROM cm_zyl_shop
         where id = #{shopId}
     </select>