فهرست منبع

完善小程序端二维码红包接口

cgp 1 روز پیش
والد
کامیت
abca0fe838

+ 21 - 5
fs-service/src/main/java/com/fs/his/dto/CollectionUserPhoneDTO.java

@@ -1,14 +1,12 @@
 package com.fs.his.dto;
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import javax.validation.constraints.NotBlank;
+
 @Data
 public class CollectionUserPhoneDTO {
-    /**
-     * 用户id(后端通过Token获取)
-     * */
-    private Long userId;
-
     /**
      * 用户手机号码
      * */
@@ -18,4 +16,22 @@ public class CollectionUserPhoneDTO {
      * 销售id
      * */
     private Long companyUserId;
+
+    @NotBlank(message = "code不能为空")
+    @ApiModelProperty(value = "小程序登陆code")
+    private String code;
+
+    @ApiModelProperty(value = "小程序完整用户信息的加密数据")
+    private String encryptedData;
+
+    @ApiModelProperty(value = "小程序加密算法的初始向量")
+    private String iv;
+
+    @NotBlank(message = "小程序appid不能为空")
+    @ApiModelProperty(value = "小程序appid")
+    private String appId;
+
+    @NotBlank(message = "userId不能为空")
+    @ApiModelProperty(value = "当前用户id")
+    private String userId;
 }

+ 2 - 1
fs-service/src/main/java/com/fs/qw/service/impl/FsCompanyQrcPhoneServiceImpl.java

@@ -80,7 +80,8 @@ public class FsCompanyQrcPhoneServiceImpl implements IFsCompanyQrcPhoneService {
         try {
             phoneMapper.insert(qrcPhone);
         } catch (DuplicateKeyException e) {
-            throw new CustomException("用户已注册过此小程序");
+            log.error("用户手机号已收集");
+            return 1;
         }
         // 3. 下发待领取红包记录(只新增记录,不实际发红包)
         FsCompanyQrcRedPackageRecord redPackageRecord = buildRedPackageRecord(userPhoneDTO);

+ 25 - 8
fs-user-app/src/main/java/com/fs/app/controller/ShareMaterialController.java

@@ -1,13 +1,20 @@
 package com.fs.app.controller;
 
 
+import cn.binarywang.wx.miniapp.api.WxMaService;
+import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
+import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
 import com.fs.common.core.domain.R;
+import com.fs.core.config.WxMaConfiguration;
 import com.fs.his.domain.FsShareMaterial;
+import com.fs.his.domain.FsUser;
 import com.fs.his.dto.CollectionUserPhoneDTO;
 import com.fs.his.dto.ShareQRCRedPackageDto;
 import com.fs.his.service.IFsShareMaterialService;
+import com.fs.his.service.IFsUserService;
 import com.fs.qw.service.IFsCompanyQrcPhoneService;
 import com.fs.qw.service.IFsCompanyQrcRedPackageRecordService;
+import me.chanjar.weixin.common.error.WxErrorException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -28,6 +35,12 @@ public class ShareMaterialController extends AppBaseController
     @Autowired
     private IFsCompanyQrcPhoneService companyQrcPhoneService;
 
+    @Autowired
+    private IFsUserService fsUserService;
+
+    @Autowired
+    private IFsUserService userService;
+
     @Autowired
     private IFsCompanyQrcRedPackageRecordService companyQrcRedPackageRecordService;
 
@@ -44,16 +57,20 @@ public class ShareMaterialController extends AppBaseController
      * 提交收集的客户手机号
      */
     @PostMapping("/submitPhone")
-    public R submitPhone(@RequestBody CollectionUserPhoneDTO userPhoneDTO){
-        long userId;
+    public R submitPhone(@RequestBody CollectionUserPhoneDTO param){
+        final WxMaService wxService = WxMaConfiguration.getMaService(param.getAppId());
         try {
-            userId = Long.parseLong(getUserId());
-        }catch (Exception e){
-            return R.error("用户登录信息异常");
+            WxMaJscode2SessionResult session = wxService.getUserService().getSessionInfo(param.getCode());
+            // 解密
+            WxMaPhoneNumberInfo phoneNoInfo = wxService.getUserService().getPhoneNoInfo(session.getSessionKey(), param.getEncryptedData(), param.getIv());
+            String phoneNumber = phoneNoInfo.getPhoneNumber();
+            param.setUserPhone(phoneNumber);
+            int result = companyQrcPhoneService.submitPhone(param);
+            return result>0?R.ok():R.error("提交失败");
+        } catch (WxErrorException e) {
+            return R.error("授权失败,"+e.getMessage());
         }
-        userPhoneDTO.setUserId(userId);
-        int result = companyQrcPhoneService.submitPhone(userPhoneDTO);
-        return result>0?R.ok():R.error("提交失败");
+
     }
 
     /**