HongHu All rights reserved.*/package com.honghu.cloud.controller;import java.io.UnsupportedEn..._微信小程序商城项目源代码">
当前位置:   article > 正文

java版微信小程序多商家入驻前后端分离商城源码 Spring Cloud+Spring Boot+mybatis+security+uniapp+Redis+MQ+VR全景+b2b2c_微信小程序商城项目源代码

微信小程序商城项目源代码

 @源码地址来源: https://minglisoft.cn/honghu2/business.html


微信小程序登录代码:

  1. /**
  2.  * Copyright &copy; 2012-2017 <a href="http://minglisoft.cn">HongHu</a> All rights reserved.
  3.  */
  4. package com.honghu.cloud.controller;
  5.  
  6. import java.io.UnsupportedEncodingException;
  7. import java.net.URLEncoder;
  8. import java.security.AlgorithmParameters;
  9. import java.security.Security;
  10. import java.util.ArrayList;
  11. import java.util.Arrays;
  12. import java.util.Date;
  13. import java.util.HashMap;
  14. import java.util.List;
  15. import java.util.Map;
  16. import java.util.regex.Matcher;
  17. import java.util.regex.Pattern;
  18.  
  19. import javax.crypto.Cipher;
  20. import javax.crypto.spec.IvParameterSpec;
  21. import javax.crypto.spec.SecretKeySpec;
  22. import javax.servlet.http.HttpServletRequest;
  23.  
  24. import org.apache.commons.lang.StringUtils;
  25. import org.bouncycastle.util.encoders.Base64;
  26. import org.slf4j.Logger;
  27. import org.slf4j.LoggerFactory;
  28. import org.springframework.beans.BeanUtils;
  29. import org.springframework.beans.factory.annotation.Autowired;
  30. import org.springframework.web.bind.annotation.RequestBody;
  31. import org.springframework.web.bind.annotation.RequestMapping;
  32. import org.springframework.web.bind.annotation.RequestMethod;
  33. import org.springframework.web.bind.annotation.RequestParam;
  34. import org.springframework.web.bind.annotation.RestController;
  35.  
  36. import com.auth0.jwt.internal.org.bouncycastle.jce.provider.BouncyCastleProvider;
  37. import com.google.common.collect.Maps;
  38. import com.honghu.cloud.bean.User;
  39. import com.honghu.cloud.code.ResponseCode;
  40. import com.honghu.cloud.constant.Globals;
  41. import com.honghu.cloud.dto.AccessoryDto;
  42. import com.honghu.cloud.dto.PaymentDto;
  43. import com.honghu.cloud.dto.StoreDto;
  44. import com.honghu.cloud.dto.SysConfigDto;
  45. import com.honghu.cloud.dto.UserDto;
  46. import com.honghu.cloud.feign.AccessoryFeignClient;
  47. import com.honghu.cloud.feign.DistributionUserFeignClient;
  48. import com.honghu.cloud.feign.FtpFileFeignClient;
  49. import com.honghu.cloud.feign.PaymentFeignClient;
  50. import com.honghu.cloud.feign.StoreFeignClient;
  51. import com.honghu.cloud.feign.SysConfigFeignClient;
  52. import com.honghu.cloud.feign.TencentIMFeignClient;
  53. import com.honghu.cloud.redis.RedisUtil;
  54. import com.honghu.cloud.service.IUserService;
  55. import com.honghu.cloud.tools.SecurityUserHolder;
  56. import com.honghu.cloud.tools.wx.WXCore;
  57. import com.honghu.cloud.utils.CommUtil;
  58. import com.honghu.cloud.utils.Exceptions;
  59. import com.honghu.cloud.utils.HttpClientUtils;
  60. import com.honghu.cloud.utils.JWT;
  61. import com.honghu.cloud.utils.tools.Md5Encrypt;
  62.  
  63. import lombok.extern.slf4j.Slf4j;
  64. import net.sf.json.JSONObject;
  65.  
  66. /**
  67.  * 微信小程序登录Controller
  68.  * @author Administrator
  69.  *
  70.  */
  71. @Slf4j
  72. @RestController
  73. @RequestMapping(value = "/weChat")
  74. public class WeChatLoginController  {
  75.  
  76.     @Autowired
  77.     private IUserService userService;
  78.     @Autowired
  79.     private RedisUtil redisUtil;
  80.     @Autowired
  81.     private SysConfigFeignClient sysConfigFeignClient;
  82.     @Autowired
  83.     private DistributionUserFeignClient disUserFeignClient;
  84.     @Autowired
  85.     private FtpFileFeignClient ftpFileFeignClient;
  86.     @Autowired
  87.     private TencentIMFeignClient tencentIMFeignClient;
  88.     @Autowired
  89.     private StoreFeignClient storeFeignClient;
  90.     @Autowired
  91.     private PaymentFeignClient paymentFeignClient;
  92. /*    @Autowired
  93.     private AccessoryFeignClient accessoryFeignClient;*/
  94.     
  95.     private static final Logger logger = LoggerFactory.getLogger(WeChatLoginController.class);
  96.     
  97.     /***微信获取登录凭证url***/
  98.     private static final String CODE2SESSION_URL = "https://api.weixin.qq.com/sns/jscode2session";
  99.     
  100.     /**
  101.      * 小程序登录
  102.      * @param js_code 登录code
  103.      * @param iv  加密算法的初始向量
  104.      * @param encryptedData 敏感用户数据
  105.      * @param share_uid 邀请注册用户
  106.      * @return
  107.      */
  108.     @RequestMapping(value = "/login", method = RequestMethod.POST)
  109.     public  Map<String, Object>  login(@RequestBody JSONObject json) {
  110.         String js_code = json.optString("js_code");
  111.         String iv = json.optString("iv");
  112.         String encryptedData = json.optString("encryptedData");
  113.         String share_uid = json.optString("share_uid");
  114.         String source_type = json.optString("source_type");
  115.         String nickName = json.optString("nickName");
  116.         String userphoto = json.optString("photo");
  117.         /*SysConfigDto sysConfigDto = sysConfigFeignClient.getSysConfig();
  118.         String appid = sysConfigDto.getOpen_weixin_appId(); 
  119.         String secret = sysConfigDto.getOpen_weixin_appSecret();*/ 
  120.         // 微信APPID、微信密匙
  121.         Map<String, Object> param = Maps.newHashMap();
  122.         param.put("mark", "wx_miniprogram");
  123.         List<PaymentDto> payments = paymentFeignClient.queryPageList(param);
  124.         PaymentDto payment =null;
  125.         if (payments.size() > 0) {
  126.              payment = (PaymentDto) payments.get(0);
  127.         }
  128.         if (payment==null||StringUtils.isEmpty(payment.getWx_appid()) || StringUtils.isEmpty(payment.getWx_appSecret())) {
  129.             return ResponseCode.buildCodeMap("40031", "获取微信配置信息有误!", null);
  130.         }
  131.         Map<String,String> params = new HashMap<String, String>();
  132.         params.put("appid", payment.getWx_appid());
  133.         params.put("secret", payment.getWx_appSecret());
  134.         params.put("js_code", js_code);
  135.         params.put("grant_type", "authorization_code");
  136.         String jsonStr = HttpClientUtils.doGet(CODE2SESSION_URL, params, "UTF-8");
  137.         JSONObject jsonObj = JSONObject.fromObject(jsonStr);
  138.         
  139.         // 错误码
  140.         String errcode = jsonObj.optString("errcode");
  141.         if(StringUtils.equals(errcode, "40028")){ // code 无效
  142.             return ResponseCode.buildCodeMap("40028", "code 无效!", null);
  143.         }
  144.         
  145.         // errcode[-1:系统繁忙,此时请开发者稍候再试;45011:频率限制,每个用户每分钟100次]
  146.         if(StringUtils.equals(errcode, "45011") || StringUtils.equals(errcode, "-1")){
  147.             return ResponseCode.buildCodeMap("45011", "系统繁忙,请稍后再试!", null);
  148.         }
  149.         
  150.         String session_key = jsonObj.optString("session_key");
  151.         String openid = jsonObj.optString("openid");
  152.         // 会话密钥和用户唯一标识为空,表示服务请求失败,记录日志
  153.         if(StringUtils.isEmpty(session_key) || StringUtils.isEmpty(openid)){
  154.             return ResponseCode.buildCodeMap("40029", "code无效!", null);
  155.         }
  156.         
  157.         // 解析小程序加密用户数据
  158.         String userInfo = WXCore.decrypt(payment.getWx_appid(), encryptedData, session_key, iv);
  159.         if(StringUtils.isEmpty(userInfo)){
  160.             return ResponseCode.buildCodeMap("40030", "获取用户数据失败!", null);
  161.         }
  162.         JSONObject userJson = JSONObject.fromObject(userInfo);
  163.         // 开放平台的唯一标识符
  164.         String unionid = userJson.optString("unionId");
  165.         if(StringUtils.isEmpty(unionid)){
  166.             return ResponseCode.buildCodeMap("40032", "获取用户数据失败!", null);
  167.         }
  168.         
  169.         boolean phone=false;
  170.         User user=null;
  171.         boolean flag = false;   //true 则不需要授权手机号
  172.         // 根据开放平台的唯一标识签,查询用户对象是否存在,不存在注册一条数据
  173.         synchronized (this) {
  174.             user = userService.selectByUnionid(unionid);
  175.             if(user !=  null && user.getSecurity() == 1){
  176.                 return ResponseCode.buildCodeMap("40031", "账户存在安全隐患禁止登录!", null);
  177.              }
  178.             if (user!=null&&user.getUsername()!=null&&StringUtils.isNotBlank(user.getMobile())) {
  179.                 phone=true;
  180.             }
  181.             if(user == null){
  182.                 flag = true;
  183.                 user = new User();
  184.                 user.setOpenId(openid);
  185.                 if (StringUtils.isNotEmpty(nickName)) {
  186.                     user.setNickName(nickName);
  187.                 }else{
  188.                     user.setNickName(userJson.optString("nickName"));  //微信提供的默认头像
  189.                 }
  190.                 user.setWeixin_unionID(unionid);
  191.                 user.setDay_msg_count(0); 
  192.                 user.setDeleteStatus(0);
  193.                 user.setAddTime(new Date());
  194.                 user.setPassword(Md5Encrypt.md5("123456").toLowerCase());//设置默认密码为123456
  195.                 user.setYears(0); // 用户年龄
  196.                 user.setIs_live(0);
  197.                 user.setLive_code(userService.selectMaxLiveCode() + 1);
  198.                 user.setUser_type(0); // 用户类别,默认为0个人用户,1为企业用户
  199.                 user.setStore_apply_step(0); // 店铺申请进行的步骤,默认为0
  200.                 user.setInvoiceType(0); // 发票类型
  201.                 user.setWhether_attention(1); //是否允许关注 0为不允许,1为允许
  202.                 user.setUser_form("miniProgram"); //注册来源,分为pc,android,ios,miniProgram, WXOffiaccount
  203.                 if (StringUtils.isNotEmpty(source_type)) {
  204.                     user.setSource_type(CommUtil.null2Int(source_type));    //1为海报
  205.                 }
  206.                 userService.saveEntity(user);
  207.                 user = userService.selectByUnionid(unionid);
  208.             }else if(StringUtils.equals(user.getUser_form(), "WXOffiaccount") && StringUtils.isBlank(user.getOpenId())){  //通过微信公众号注册的
  209.                 user.setOpenId(openid);
  210.                 userService.updateById(user);
  211.                 flag = true;   //微信注册第一次进来分销关系重新建立
  212.             }
  213.         }
  214.         
  215.         boolean isUpdate=false;
  216.         // 处理用户头像(用户头像不存在,将微信的头像保存到用户头像)
  217.         //String photo_url = userJson.optString("avatarUrl");
  218.         if(user.getPhoto_id() == null && StringUtils.isNotEmpty(userphoto)){
  219.             AccessoryDto photo = uploadPhotoFile(userphoto, user.getId());
  220.             if(photo != null){
  221.                 user.setPhoto(photo);
  222.                 user.setPhoto_id(photo.getId());
  223.                 isUpdate=true;
  224.             }
  225.         }
  226.         //用户换名称或头像
  227.         if(user.getNickName()==null){
  228.             user.setNickName(nickName);
  229.             isUpdate=true;
  230.         }
  231.         if (user.getLive_code()==null) {
  232.             user.setLive_code(userService.selectMaxLiveCode() + 1);
  233.             isUpdate=true;
  234.         }
  235.         if (StringUtils.isNotEmpty(nickName) && StringUtils.isEmpty(user.getNickName())) {
  236.             user.setNickName(nickName);
  237.             isUpdate = true;
  238.         }
  239.         if (StringUtils.isEmpty(user.getOpenId())) {
  240.             user.setOpenId(openid);
  241.             isUpdate = true;
  242.         }
  243.         if (isUpdate) {
  244.             userService.updateById(user);
  245.         }
  246.         //所有用户都是分销用户
  247.         if(flag){
  248.             userService.saveDisUser(user, share_uid);
  249.         }
  250.         // 生成token,格式:用户id;时间戳  
  251.         String token = JWT.sign(user.getId() + ";" + System.currentTimeMillis()+";"+"small", 0);
  252.         // 将token存到redis中,有效期24小时 
  253.         redisUtil.set(Globals.WECHAT_LOGIN_MARK + user.getId(), token, Globals.USER_INFO_EXPIRE_TIME);
  254.         
  255.         // 覆盖redis用户信息
  256.         UserDto userDto = new UserDto();
  257.         BeanUtils.copyProperties(user, userDto);
  258.         redisUtil.set(Globals.USER_INFO_MARK + user.getId(), userDto, Globals.USER_INFO_EXPIRE_TIME);
  259.         
  260.         String storestatus="";
  261.         if (userDto.getStore_id()!=null) {
  262.             StoreDto storeDto = storeFeignClient.selectByPrimaryKey(userDto.getStore_id());
  263.             if (storeDto!=null) {
  264.                 storestatus=storeDto.getStore_status()+"";
  265.             }
  266.         }
  267.         HashMap<String, Object> result = new HashMap<>();
  268.         result.put("token", token);
  269.         result.put("storestatus", storestatus);
  270.         SysConfigDto sysConfig = sysConfigFeignClient.getSysConfig();
  271.         if (sysConfig.getOpen_live()==0) {
  272.             result.put("phone", true);
  273.         }else{
  274.             result.put("phone", phone);
  275.         }
  276.         
  277.         result.put("session_key", session_key);
  278.         result.put("user", user);
  279.         
  280.         if (user != null&&user.getIs_live()!=null) {
  281.             result.put("is_live", user.getIs_live()==2?true:false);
  282.         }else{
  283.             result.put("is_live", false);
  284.         }
  285.         return ResponseCode.buildSuccessMap(result);
  286.     }
  287.     
  288.     
  289.     /**
  290.      * 保存用户手机号
  291.      * @return
  292.      */
  293.     @RequestMapping(value = "/savePhone", method = RequestMethod.POST)
  294.     public Map<String, Object> savePhone(HttpServletRequest request, @RequestBody JSONObject json) {
  295.         String session_key = json.optString("session_key");
  296.         String iv = json.optString("iv");
  297.         String encryptedData = json.optString("encrypData");
  298.  
  299.         if (StringUtils.isBlank(session_key)) {
  300.             return ResponseCode.buildFailMap("获取失败,session_key信息错误", null);
  301.  
  302.         }
  303.         if (StringUtils.isBlank(iv)) {
  304.             return ResponseCode.buildFailMap("获取失败,iv信息错误", null);
  305.             
  306.         }
  307.         if (StringUtils.isBlank(encryptedData)) {
  308.             return ResponseCode.buildFailMap("获取失败,encryptedData信息错误", null);
  309.             
  310.         }
  311.         byte[] dataByte = Base64.decode(encryptedData);
  312.         // 加密秘钥
  313.         byte[] keyByte = Base64.decode(session_key);
  314.         // 偏移量
  315.         byte[] ivByte = Base64.decode(iv);
  316.         try {
  317.             // 如果密钥不足16位,那么就补足. 这个if 中的内容很重要
  318.             int base = 16;
  319.             if (keyByte.length % base != 0) {
  320.                 int groups = keyByte.length / base + (keyByte.length % base != 0 ? 1 : 0);
  321.                 byte[] temp = new byte[groups * base];
  322.                 Arrays.fill(temp, (byte) 0);
  323.                 System.arraycopy(keyByte, 0, temp, 0, keyByte.length);
  324.                 keyByte = temp;
  325.             }
  326.             // 初始化
  327.             Security.addProvider(new BouncyCastleProvider());
  328.             Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
  329.             SecretKeySpec spec = new SecretKeySpec(keyByte, "AES");
  330.             AlgorithmParameters parameters = AlgorithmParameters.getInstance("AES");
  331.             parameters.init(new IvParameterSpec(ivByte));
  332.             cipher.init(Cipher.DECRYPT_MODE, spec, parameters);// 初始化
  333.             byte[] resultByte = cipher.doFinal(dataByte);
  334.             if (null != resultByte && resultByte.length > 0) {
  335.                 String result = new String(resultByte, "UTF-8");
  336.  
  337.                 JSONObject fromObject = JSONObject.fromObject(result);
  338.                 Object object = fromObject.get("purePhoneNumber");
  339.                 User user = userService.selectByPrimaryKey(SecurityUserHolder.getCurrentUserId(request));
  340.                 //查询是否已经存在该手机号
  341.                 User UserName = userService.selectByUserName(CommUtil.null2String(object));
  342.                 
  343.                 //需要合并用户    ,          手机号存在, 并且 unionid 为空     
  344.                 if (UserName!=null&&StringUtils.isEmpty(UserName.getWeixin_unionID())) {
  345.                     
  346.                     UserName.setWeixin_unionID(user.getWeixin_unionID());    //将新unionid 存入旧数据中
  347.                     if (UserName.getLive_code()==null) {
  348.                         UserName.setLive_code(userService.selectMaxLiveCode() + 1);
  349.                     }
  350.                     if (StringUtils.isEmpty(UserName.getNickName())) {
  351.                         UserName.setNickName(user.getNickName());
  352.                     }
  353.                     if (user.getPhoto_id()!=null) {
  354.                         UserName.setPhoto_id(user.getPhoto_id());
  355.                     }
  356.                     if (user.getOpenId()!=null) {
  357.                         UserName.setOpenId(user.getOpenId());
  358.                     }
  359.                     if (user.getWx_open_id()!=null) {
  360.                         UserName.setWx_open_id(user.getWx_open_id());;
  361.                     }
  362.                     userService.updateById(UserName);
  363.                     user.setDeleteStatus(1);
  364.                     user.setMobile("del"+CommUtil.null2String(object));
  365.                     user.setUserName("del"+CommUtil.null2String(object));
  366.                     user.setWeixin_unionID("del"+UserName.getId()+"");
  367.                     userService.updateById(user);
  368.                     disUserFeignClient.deleteByUserId(user.getId());   //删除新的 分销关系表
  369.                     redisUtil.remove(Globals.WECHAT_LOGIN_MARK + user.getId());
  370.                     //换用户登录
  371.                     // 生成token,格式:用户id;时间戳  
  372.                     String token = JWT.sign(UserName.getId() + ";" + System.currentTimeMillis()+";"+"small", 0);
  373.                     // 将token存到redis中,有效期24小时 
  374.                     redisUtil.set(Globals.WECHAT_LOGIN_MARK + UserName.getId(), token, Globals.USER_INFO_EXPIRE_TIME);
  375.                     
  376.                     // 覆盖redis用户信息
  377.                     UserDto userDto = new UserDto();
  378.                     BeanUtils.copyProperties(UserName, userDto);
  379.                     redisUtil.set(Globals.USER_INFO_MARK + UserName.getId(), userDto, Globals.USER_INFO_EXPIRE_TIME);
  380.                     return ResponseCode.buildSuccessMap(token);
  381.                     
  382.                 }
  383.                 //删除
  384.                 
  385.                 
  386.                 /*//手机号跟原来一致, 直接通过
  387.                 if (CommUtil.null2String(object).equals(user.getUserName())) {
  388.                     return ResponseCode.buildSuccessMap("isOk");
  389.                 }*/
  390.                 //手机号已存在
  391.                 if (UserName!=null) {
  392.                     return ResponseCode.buildFailMap("手机号已存在", "false");
  393.                 }
  394.                 user.setUserName(CommUtil.null2String(object));
  395.                 user.setMobile(CommUtil.null2String(object));
  396.                 userService.updateById(user);
  397.                 return ResponseCode.buildSuccessMap(null);
  398.             }
  399.         } catch (Exception e) {
  400.             e.printStackTrace();
  401.         }
  402.         return ResponseCode.buildFailMap("信息有误", "false");
  403.     }
  404.     
  405.     
  406.     
  407.     /**
  408.      * 分享邀请用户注册的分享链接
  409.      * @return
  410.      */
  411.     @RequestMapping(value = "/shareLogin", method = RequestMethod.POST)
  412.     public Map<String, Object> shareLogin( HttpServletRequest request) {
  413.         UserDto user = SecurityUserHolder.getCurrentUser(request);
  414.         if(user == null || user.getId() == null){
  415.             return ResponseCode.buildEnumMap(ResponseCode.TOKEN_EXPIRE, null);
  416.         }
  417.         return ResponseCode.buildSuccessMap(user.getId());
  418.     }
  419.     /**
  420.      * 分享邀请用户注册的分享链接
  421.      * @return
  422.      */
  423.     @RequestMapping(value = "/checkUserPhone", method = RequestMethod.POST)
  424.     public Map<String, Object> checkUserPhone( HttpServletRequest request) {
  425.         UserDto user = SecurityUserHolder.getCurrentUser(request);
  426.         if(user == null || user.getId() == null){
  427.             return ResponseCode.buildEnumMap(ResponseCode.TOKEN_EXPIRE, null);
  428.         }
  429.         User new_user = userService.selectByPrimaryKey(user.getId());
  430.         if (new_user.getMobile()==null||new_user.getUserName()==null) {
  431.             return ResponseCode.buildEnumMap(ResponseCode.RESPONSE_CODE_USER_MOBILE_OR_TELEPHONE_NOT_EMPTY, null);
  432.         }
  433.         return ResponseCode.buildSuccessMap(null);
  434.     }
  435.     
  436.     
  437.     /**
  438.      * 分享邀请用户购买商品的分享链接
  439.      * @return
  440.      */
  441.     @RequestMapping(value = "/shareGoods", method = RequestMethod.POST)
  442.     public Map<String, Object> shareGoods( HttpServletRequest request) {
  443.         UserDto user = SecurityUserHolder.getCurrentUser(request);
  444.         if(user == null || user.getId() == null){
  445.             return ResponseCode.buildEnumMap(ResponseCode.TOKEN_EXPIRE, null);
  446.         }
  447.         return ResponseCode.buildSuccessMap(user.getId());
  448.     }
  449.     
  450.     
  451.     
  452.     
  453.     /**
  454.     * @Description 将字符串中的emoji表情转换成可以在utf-8字符集数据库中保存的格式(表情占4个字节,需要utf8mb4字符集)
  455.     * @param str
  456.     * 待转换字符串
  457.     * @return 转换后字符串
  458.     * @throws UnsupportedEncodingException
  459.     * exception
  460.     */
  461.     public static String emojiConvert1(String str) {
  462.         String patternString = "([\\x{10000}-\\x{10ffff}\ud800-\udfff])";
  463.         Pattern pattern = Pattern.compile(patternString);
  464.         Matcher matcher = pattern.matcher(str);
  465.         StringBuffer sb = new StringBuffer();
  466.         while (matcher.find()) {
  467.             try {
  468.                 matcher.appendReplacement(sb, "[[" + URLEncoder.encode(matcher.group(1), "UTF-8") + "]]");
  469.             } catch (Exception e) {
  470.             }
  471.         }
  472.         matcher.appendTail(sb);
  473.         return sb.toString();
  474.     }
  475.     
  476.     
  477.     /**
  478.      * 微信授权登录上传头像
  479.      * @param photo_url
  480.      * @param user_id
  481.      * @return
  482.      */
  483.     public AccessoryDto uploadPhotoFile(String photo_url, Long user_id){
  484.         try {
  485.             AccessoryDto accessoryDto = ftpFileFeignClient.upload("user/image", "", "JPG", user_id, photo_url);
  486.             return accessoryDto;
  487.         } catch (Exception e) {
  488.             log.error("微信授权登录上传头像失败:"+Exceptions.getStackTraceAsString(e));
  489.         }
  490.         return null;
  491.     }
  492.     
  493.     
  494.     /**
  495.      * 将全部的用户注册IM账号
  496.      * @return
  497.      */
  498.     @RequestMapping(value = "/IM/outImportMultipleAccounts", method = RequestMethod.GET)
  499.     public boolean outImportMultipleAccounts() {
  500.         //获取所有用户的信息
  501.         Map<String, Object> params = new HashMap<String, Object>();
  502.         params.put("deleteStatus", "0");
  503.         int count = userService.selectCount(params);
  504.         int pageNum = (count/100)+1;    //腾讯只支持最多100个账号删除
  505.         boolean bol = true;
  506.         for(int i = 1; i <= pageNum; i++){
  507.             params.put("currentPage", i);
  508.             params.put("pageSize", 100);
  509.             List<User> list = userService.queryPages(params);
  510.             List<String> uids = new ArrayList<String>();
  511.             for (User user : list) {
  512.                 uids.add(user.getId().toString());
  513.             }
  514.             bol = tencentIMFeignClient.importMultipleAccounts(uids);
  515.         }
  516.         return bol;
  517.     }
  518.     
  519.     
  520.     /**
  521.      * 将全部的用户注册IM账号
  522.      * @return
  523.      */
  524.     @RequestMapping(value = "/IM/outAccountDelete", method = RequestMethod.GET)
  525.     public boolean outAccountDelete() {
  526.         //获取所有用户的信息
  527.         Map<String, Object> params = new HashMap<String, Object>();
  528.         params.put("deleteStatus", "0");
  529.         int count = userService.selectCount(params);
  530.         int pageNum = (count/100)+1;    //腾讯只支持最多100个账号删除
  531.         boolean bol = true;
  532.         for(int i = 1; i <= pageNum; i++){
  533.             params.put("currentPage", i);
  534.             params.put("pageSize", 100);
  535.             List<User> list = userService.queryPages(params);
  536.             List<String> uids = new ArrayList<String>();
  537.             for (User user : list) {
  538.                 uids.add(user.getId().toString());
  539.             }
  540.             bol = tencentIMFeignClient.accountDelete(uids);
  541.         }
  542.         return bol;
  543.     }
  544.     
  545.     /**
  546.      * 微信授权登录
  547.      * @param code 授权临时票据
  548.      * @return map
  549.      * @throws Exception
  550.      */
  551.     @RequestMapping(value = "/weChatLogin" , method = RequestMethod.GET)
  552.     public Map<String, Object> weChatLogin(@RequestParam("code") String code) throws Exception {
  553.         return userService.weChatLogin(code);
  554.     }
  555.     /**
  556.      * 微信授权登录(uniapp使用)
  557.      * @param code 授权临时票据
  558.      * @return map
  559.      * @throws Exception
  560.      */
  561.     @RequestMapping(value = "/appWeChatLogin" , method = RequestMethod.POST)
  562.     public Map<String, Object> appWeChatLogin(@RequestBody JSONObject json) throws Exception {
  563.         return userService.appWeChatLogin(json);
  564.     }
  565.     @RequestMapping(value = "/appWeChatLoginNew" , method = RequestMethod.POST)
  566.     public Map<String, Object> appWeChatLoginNew(@RequestBody JSONObject json) throws Exception {
  567.         return userService.appWeChatLoginNew(json);
  568.     }
  569.     
  570.     /**
  571.      * 微信授权登录
  572.      * @param code 授权临时票据
  573.      * @return map
  574.      * @throws Exception
  575.      */
  576.     @RequestMapping(value = "/weChatH5Login" , method = RequestMethod.GET)
  577.     public Map<String, Object> weChatH5Login(@RequestParam("code") String code) throws Exception {
  578.         return userService.weChatH5Login(code);
  579.     }
  580.     
  581. }
  1. @源码地址来源: https://minglisoft.cn/honghu2/business.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/154081
推荐阅读
相关标签
  

闽ICP备14008679号