“mitao”
2025-12-10 19f88869bf518a66511d077b50ec422226e8da9f
小程序登录接口
15个文件已删除
8个文件已修改
2704 ■■■■■ 已修改文件
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/ChildcareController.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/ConvenienceController.java 316 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/CourseController.java 229 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/EmploymentController.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/IndexController.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/MerchantController.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/PartyBuildingController.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/PensionController.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/QuestionnaireController.java 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/UserIndexController.java 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/WxPayController.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-applet/src/main/java/com/ruoyi/web/controller/webSocket/WebSocketAuthHandler.java 222 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-applet/src/main/java/com/ruoyi/web/controller/webSocket/WebSocketController.java 296 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-applet/src/main/java/com/ruoyi/web/controller/webSocket/WebSocketServer.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-applet/src/main/java/com/ruoyi/web/controller/webSocket/WebSocketServerConfig.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-applet/src/main/java/com/ruoyi/web/controller/webSocket/WebSocketTextFrameHandler.java 189 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-applet/src/main/java/com/ruoyi/web/controller/webSocket/WebSocketUserConnectionManager.java 281 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-applet/src/main/java/com/ruoyi/web/controller/webSocket/WebSocketUserService.java 286 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-applet/src/main/resources/application-test.yml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/TAppUserResp.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUserApplet.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/ChildcareController.java
File was deleted
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/ConvenienceController.java
File was deleted
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/CourseController.java
File was deleted
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/EmploymentController.java
File was deleted
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/IndexController.java
@@ -1,17 +1,17 @@
package com.ruoyi.web.controller.api;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.system.dto.IdDto;
import com.ruoyi.system.model.TBanner;
import com.ruoyi.system.model.TNotice;
import com.ruoyi.system.service.TBannerService;
import com.ruoyi.system.service.TNoticeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import org.springframework.context.annotation.Lazy;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@@ -19,16 +19,10 @@
@RestController
@RequestMapping("/index")
@Api(tags = "首页模块")
@RequiredArgsConstructor(onConstructor_ = {@Lazy})
public class IndexController {
    private final TBannerService tBannerService;
    private final TNoticeService tNoticeService;
    public IndexController(TBannerService tBannerService, TNoticeService tNoticeService) {
        this.tBannerService = tBannerService;
        this.tNoticeService = tNoticeService;
    }
    @ApiOperation(value = "首页模块--轮播图",response = TBanner.class)
@@ -44,26 +38,5 @@
        TBanner tBanner = tBannerService.getById(id);
        return R.ok(tBanner);
    }
    @ApiOperation(value = "首页模块--公告活动",response = TNotice.class)
    @GetMapping(value = "/getNoticeList")
    public R<List<TNotice>> getNoticeList() {
        List<TNotice> tNoticeList = tNoticeService.list();
        return R.ok(tNoticeList);
    }
    @ApiOperation(value = "首页模块--公告活动详情",response = TNotice.class)
    @GetMapping(value = "/getNoticeDetail/{id}")
    public R<TNotice> getNoticeDetail(@PathVariable String id) {
        TNotice notice = tNoticeService.getById(id);
        notice.setReadCount(notice.getReadCount() + 1);
        tNoticeService.updateById(notice);
        return R.ok(notice);
    }
}
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/MerchantController.java
File was deleted
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/PartyBuildingController.java
File was deleted
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/PensionController.java
File was deleted
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/QuestionnaireController.java
File was deleted
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/UserIndexController.java
@@ -2,137 +2,45 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.BaseModel;
import com.ruoyi.common.core.domain.BasePage;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.framework.web.service.TokenService;
import com.ruoyi.system.dto.UpdatePhoneDto;
import com.ruoyi.system.dto.UpdateUserDto;
import com.ruoyi.system.model.TAppUser;
import com.ruoyi.system.model.TAppealServices;
import com.ruoyi.system.model.TChildcareServices;
import com.ruoyi.system.model.TMicroWish;
import com.ruoyi.system.query.AppealServicesStatusQuery;
import com.ruoyi.system.query.MicroWishStatusQuery;
import com.ruoyi.system.service.TAppUserService;
import com.ruoyi.system.service.TAppealServicesService;
import com.ruoyi.system.service.TChildcareServicesService;
import com.ruoyi.system.service.TMicroWishService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Lazy;
import org.springframework.web.bind.annotation.*;
import java.util.Objects;
@Slf4j
@RestController
@RequestMapping("/userIndex")
@Api(tags = "个人中心")
@RequiredArgsConstructor(onConstructor_ = {@Lazy})
public class UserIndexController {
    private final TAppUserService tAppUserService;
    private final TChildcareServicesService tChildcareServicesService;
    private final TAppealServicesService tAppealServicesService;
    private final TMicroWishService tMicroWishService;
    private final TokenService tokenService;
    public UserIndexController(TAppUserService tAppUserService, TChildcareServicesService tChildcareServicesService, TAppealServicesService tAppealServicesService, TMicroWishService tMicroWishService, TokenService tokenService) {
        this.tAppUserService = tAppUserService;
        this.tChildcareServicesService = tChildcareServicesService;
        this.tAppealServicesService = tAppealServicesService;
        this.tMicroWishService = tMicroWishService;
        this.tokenService = tokenService;
    }
    @ApiOperation(value = "个人中心--用户信息",response = TAppUser.class)
    @GetMapping(value = "/getUserInfo")
    public R<TAppUser> getUserInfo() {
        String userId = tokenService.getLoginUserApplet().getUserId();
        Integer userId = tokenService.getLoginUserApplet().getUserId();
        return R.ok(tAppUserService.getById(userId));
    }
    @ApiOperation(value = "个人中心--托育服务记录",response = TChildcareServices.class)
    @PostMapping(value = "/getChildcareServicesList")
    public R<Page<TChildcareServices>> getChildcareServicesList(@RequestBody BasePage basePage) {
        String userId = tokenService.getLoginUserApplet().getUserId();
        Page<TChildcareServices> page = new Page<>(basePage.getPageNum(), basePage.getPageSize());
        Page<TChildcareServices> childcareServicesPage = tChildcareServicesService.page(page, Wrappers.<TChildcareServices>lambdaQuery().eq(TChildcareServices::getAppUserId, userId).orderByDesc(BaseModel::getCreateTime));
        return R.ok(childcareServicesPage);
    }
    @ApiOperation(value = "个人中心--托育服务记录详情",response = TChildcareServices.class)
    @GetMapping(value = "/getChildcareServicesDetail/{id}")
    public R<TChildcareServices> getChildcareServicesDetail(@PathVariable String id) {
        TChildcareServices childcareServices = tChildcareServicesService.getById(id);
        return R.ok(childcareServices);
    }
    @ApiOperation(value = "个人中心--诉求服务记录",response = TAppealServices.class)
    @PostMapping(value = "/getAppealServicesList")
    public R<Page<TAppealServices>> getAppealServicesList(@RequestBody AppealServicesStatusQuery query) {
        String userId = tokenService.getLoginUserApplet().getUserId();
        Page<TAppealServices> page = new Page<>(query.getPageNum(), query.getPageSize());
        Page<TAppealServices> appealServicesPage = tAppealServicesService.page(page, Wrappers.<TAppealServices>lambdaQuery().eq(TAppealServices::getAppUserId, userId).eq(TAppealServices::getAppealType,1).eq(Objects.nonNull(query.getStatus()), TAppealServices::getStatus, query.getStatus()).orderByDesc(BaseModel::getCreateTime));
        return R.ok(appealServicesPage);
    }
    @ApiOperation(value = "个人中心--诉求服务记录/随手拍详情",response = TAppealServices.class)
    @GetMapping(value = "/getAppealServicesDetail/{id}")
    public R<TAppealServices> getAppealServicesList(@PathVariable String id) {
        TAppealServices appealServices = tAppealServicesService.getById(id);
        return R.ok(appealServices);
    }
    @ApiOperation(value = "个人中心--随手拍记录",response = TAppealServices.class)
    @PostMapping(value = "/getSnapShareList")
    public R<Page<TAppealServices>> getSnapShareList(@RequestBody AppealServicesStatusQuery query) {
        String userId = tokenService.getLoginUserApplet().getUserId();
        Page<TAppealServices> page = new Page<>(query.getPageNum(), query.getPageSize());
        Page<TAppealServices> appealServicesPage = tAppealServicesService.page(page, Wrappers.<TAppealServices>lambdaQuery().eq(TAppealServices::getAppUserId, userId).eq(TAppealServices::getAppealType,2).eq(Objects.nonNull(query.getStatus()), TAppealServices::getStatus, query.getStatus()).orderByDesc(BaseModel::getCreateTime));
        return R.ok(appealServicesPage);
    }
    @ApiOperation(value = "个人中心--微心愿记录",response = TMicroWish.class)
    @PostMapping(value = "/getMicroWishList")
    public R<Page<TMicroWish>> getMicroWishList(@RequestBody MicroWishStatusQuery query) {
        String userId = tokenService.getLoginUserApplet().getUserId();
        Page<TMicroWish> page = new Page<>(query.getPageNum(), query.getPageSize());
        Page<TMicroWish> microWishPage = tMicroWishService.page(page, Wrappers.<TMicroWish>lambdaQuery()
                .eq(TMicroWish::getAppUserId, userId)
                .eq(Objects.nonNull(query.getStatus()), TMicroWish::getStatus, query.getStatus())
                .orderByDesc(BaseModel::getCreateTime));
        return R.ok(microWishPage);
    }
    @ApiOperation(value = "个人中心--微心愿详情",response = TMicroWish.class)
    @GetMapping(value = "/getMicroWishDetail/{id}")
    public R<TMicroWish> getMicroWishDetail(@PathVariable String id) {
        TMicroWish microWish = tMicroWishService.getById(id);
        return R.ok(microWish);
    }
    @ApiOperation(value = "个人中心--修改手机号")
    @PostMapping(value = "/updatePhone")
    public R<?> getMicroWishDetail(@RequestBody UpdatePhoneDto dto) {
        String userId = tokenService.getLoginUserApplet().getUserId();
        long count = tAppUserService.count(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getPhoneNumber, dto.getPhone()).ne(TAppUser::getId, userId));
        Integer userId = tokenService.getLoginUserApplet().getUserId();
        long count = tAppUserService.count(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getPhone, dto.getPhone()).ne(TAppUser::getId, userId));
        if (count > 0) {
            return R.fail("手机号已存在");
        }
        tAppUserService.update(new LambdaUpdateWrapper<TAppUser>().set(TAppUser::getPhoneNumber, dto.getPhone()).eq(TAppUser::getId, userId));
        tAppUserService.update(new LambdaUpdateWrapper<TAppUser>().set(TAppUser::getPhone, dto.getPhone()).eq(TAppUser::getId, userId));
        return R.ok();
    }
@@ -140,15 +48,15 @@
    @ApiOperation(value = "个人中心--修改信息")
    @PostMapping(value = "/updateUserInfo")
    public R<?> updateUserInfo(@RequestBody UpdateUserDto dto) {
        String userId = tokenService.getLoginUserApplet().getUserId();
        Integer userId = tokenService.getLoginUserApplet().getUserId();
        TAppUser appUser = tAppUserService.getById(userId);
        if(dto.getAvatar()!=null){
            appUser.setAvatar(dto.getAvatar());
            appUser.setProfilePhoto(dto.getAvatar());
        }
        if(dto.getNickName()!=null){
            appUser.setNickName(dto.getNickName());
            appUser.setName(dto.getNickName());
        }
        if(dto.getGender()!=null){
@@ -156,7 +64,7 @@
        }
        if(dto.getBirthday()!=null){
            appUser.setBirthDate(dto.getBirthday());
            appUser.setBirthday(dto.getBirthday());
        }
        if(dto.getName()!=null){
@@ -165,11 +73,11 @@
        if(dto.getPhone()!=null){
            long count = tAppUserService.count(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getPhoneNumber, dto.getPhone()).ne(TAppUser::getId, userId));
            long count = tAppUserService.count(new LambdaQueryWrapper<TAppUser>().eq(TAppUser::getPhone, dto.getPhone()).ne(TAppUser::getId, userId));
            if (count > 0) {
                return R.fail("手机号已存在");
            }
            appUser.setPhoneNumber(dto.getPhone());
            appUser.setPhone(dto.getPhone());
        }
        tAppUserService.updateById(appUser);
ruoyi-applet/src/main/java/com/ruoyi/web/controller/api/WxPayController.java
@@ -1,35 +1,27 @@
package com.ruoyi.web.controller.api;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.fasterxml.jackson.core.type.TypeReference;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.utils.CodeGenerateUtils;
import com.ruoyi.framework.web.service.TokenService;
import com.ruoyi.system.model.TCourseOrder;
import com.ruoyi.system.service.TCourseOrderService;
import com.ruoyi.system.wxPay.enums.RefundEnum;
import com.ruoyi.system.wxPay.enums.TradeStateEnum;
import com.ruoyi.system.wxPay.model.WeixinPayProperties;
import com.ruoyi.system.wxPay.utils.WxTimeUtils;
import com.ruoyi.system.wxPay.utils.WxV3Pay;
import com.wechat.pay.contrib.apache.httpclient.util.AesUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.util.Map;
import java.util.Objects;
/**
 * 微信相关接口
@@ -46,9 +38,6 @@
    private TokenService tokenService;
    @Autowired
    private WeixinPayProperties weixinPayProperties;
    @Autowired
    private TCourseOrderService courseOrderService;
@@ -81,15 +70,9 @@
            String success_time = jsonInfo.getString("success_time");
            // 查询订单
            TCourseOrder order = courseOrderService.getOne(Wrappers.lambdaQuery(TCourseOrder.class)
                    .eq(TCourseOrder::getOrderNumber, out_trade_no).last("LIMIT 1"));
            if (trade_state.equals(TradeStateEnum.SUCCESS.name())) {
                log.info("回调成功");
                // 订单号查询订单
                order.setPayStatus(2);
                order.setPayTime(WxTimeUtils.dateToLocalDateTime(WxTimeUtils.toRfc3339Date(success_time)));
                order.setTransactionId(transaction_id);
                courseOrderService.updateById(order);
                PrintWriter out = response.getWriter();
                out.print("SUCCESS");
@@ -103,27 +86,6 @@
    }
    /**
     * 退款回调
     */
//    @PostMapping("refund/notify")
//    @ApiOperation("退款回调")
//    public void refundNotify(HttpServletRequest request, HttpServletResponse response) throws Exception {
//        try {
////            System.err.println("微信回调");
////            BufferedReader reader = request.getReader();
////            StringBuilder requestBody = new StringBuilder();
////            String line;
////            while ((line = reader.readLine()) != null) {
////                requestBody.append(line);
////            }
////            System.err.println("全部请求体" + requestBody);
////            JSONObject jsonObject = JSONObject.parseObject(requestBody.toString());
////            JSONObject resource = jsonObject.getJSONObject("resource");
////            AesUtil aesUtil = new AesUtil(weixinPayProperties.getV3().getApiKey().getBytes(StandardCharsets.UTF_8));
////            String decryptedData = aesUtil.decryptToString(resource.getString("associated_data").getBytes(StandardCharsets.UTF_8), resource.getString("nonce").getBytes(StandardCharsets.UTF_8), resource.getString("ciphertext"))
//        }
//    }
    @PostMapping("refund/notify")
    public void refundNotify(HttpServletRequest request) throws IOException {
        try {
@@ -155,12 +117,7 @@
            // 微信支付订单号
            String transaction_id = params.get("transaction_id").toString();
            if (tradeState.equals(RefundEnum.SUCCESS.name())) {
                TCourseOrder order = courseOrderService.getOne(Wrappers.lambdaQuery(TCourseOrder.class)
                        .eq(TCourseOrder::getRefundNumber, out_refund_no).last("LIMIT 1"));
                order.setPayStatus(3);
                order.setRefundStatus(2);
                order.setRefundTransactionId(transaction_id);
                courseOrderService.updateById(order);
                wxV3Pay.ack();
            }
ruoyi-applet/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -9,6 +9,7 @@
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.entity.TAppUserResp;
import com.ruoyi.common.core.domain.model.LoginAppBody;
import com.ruoyi.common.core.domain.model.LoginBody;
import com.ruoyi.common.core.domain.model.LoginUserApplet;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.redis.service.RedisService;
@@ -23,10 +24,8 @@
import com.ruoyi.system.utils.wx.body.resp.Code2SessionRespBody;
import com.ruoyi.system.utils.wx.body.resq.Code2SessionResqBody;
import com.ruoyi.system.utils.wx.model.WeixinProperties;
import com.ruoyi.system.utils.wx.pojo.AppletUserDecodeData;
import com.ruoyi.system.utils.wx.pojo.AppletUserEncrypteData;
import com.ruoyi.system.utils.wx.tools.WxAppletTools;
import com.ruoyi.system.utils.wx.tools.WxUtils;
import com.ruoyi.web.controller.tool.MsgUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -34,16 +33,14 @@
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
/**
 * 登录验证
@@ -79,6 +76,51 @@
    private RedisService redisService;
    @Autowired
    private TAppUserService appUserService;
    /**
     * 获取验证码
     *
     * @param phone 手机号
     * @return 结果
     */
    @ApiOperation(value = "获取验证码",notes = "获取验证码")
    @GetMapping("/getCode")
    public AjaxResult getCode(@RequestParam String phone)
    {
        // 发送验证码并存储到redis
        if (StringUtils.hasLength(phone)) {
            String code = String.valueOf((int) (Math.random() * 1000000));
            redisCache.setCacheObject(phone, code,5*60, TimeUnit.SECONDS);
            try {
                //TODO 待对接
//                smsUtil.sendSms(phone, "2369926", new String[]{code});
            } catch (Exception e) {
                throw new RuntimeException(e);
            }
            return AjaxResult.success("发送短信验证码成功!5分钟内有效");
        }
        return AjaxResult.error(500, "发送短信验证码失败,请确认手机号码!");
    }
    /**
     * 账号密码登录
     *
     * @param loginBody 登录信息
     * @return 结果
     */
    @ApiOperation(value = "短信登录",notes = "短信登录")
    @PostMapping("/loginCode")
    public AjaxResult loginCode(@RequestBody LoginBody loginBody)
    {
        AjaxResult ajax = AjaxResult.success();
        // 生成令牌
        LoginUserApplet loginUser = loginService.loginCodeApplet(loginBody.getUsername(), loginBody.getCode());
        ajax.put(Constants.TOKEN, tokenService.createTokenApplet(loginUser));
        ajax.put("userInfo",loginUser);
        return ajax;
    }
    /**
     * 账号密码登录
     * 
@@ -92,7 +134,7 @@
        LoginAppBody loginAppBody = JSON.parseObject(param, LoginAppBody.class);
        AjaxResult ajax = AjaxResult.success();
        // 生成令牌
        LoginUserApplet loginUser = loginService.loginCodeApplet(loginAppBody.getAccount(), loginAppBody.getPassword());
        LoginUserApplet loginUser = loginService.loginPwdApplet(loginAppBody.getAccount(), loginAppBody.getPassword());
        ajax.put(Constants.TOKEN, tokenService.createTokenApplet(loginUser));
        ajax.put("data",loginUser);
        return ajax;
@@ -117,11 +159,11 @@
//        appletUserDecodeData.setOpenId(openid);
        // 先使用openId和当前手机号进行查询
        TAppUser sysAppUser = appUserService.getOne(Wrappers.lambdaQuery(TAppUser.class)
                .and(e->e.eq(TAppUser::getOpenId, openid)));
                .and(e->e.eq(TAppUser::getOpenid, openid)));
        if (sysAppUser==null){
            sysAppUser = new TAppUser();
//            sysAppUser.setPhoneNumber(appletUserDecodeData.getPhoneNumber());
            sysAppUser.setOpenId(openid);
            sysAppUser.setOpenid(openid);
            // 手机号中间四位替换为*
//            sysAppUser.setNickName(appletUserDecodeData.getPhoneNumber().replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2"));
            appUserService.save(sysAppUser);
@@ -131,7 +173,7 @@
                return R.fail("账号已冻结,请联系管理员");
            }
            // 手机号相同但openId为空的情况
            sysAppUser.setOpenId(openid);
            sysAppUser.setOpenid(openid);
            appUserService.updateById(sysAppUser);
        }
        LoginUserApplet loginUserApplet = new LoginUserApplet();
ruoyi-applet/src/main/java/com/ruoyi/web/controller/webSocket/WebSocketAuthHandler.java
File was deleted
ruoyi-applet/src/main/java/com/ruoyi/web/controller/webSocket/WebSocketController.java
File was deleted
ruoyi-applet/src/main/java/com/ruoyi/web/controller/webSocket/WebSocketServer.java
File was deleted
ruoyi-applet/src/main/java/com/ruoyi/web/controller/webSocket/WebSocketServerConfig.java
File was deleted
ruoyi-applet/src/main/java/com/ruoyi/web/controller/webSocket/WebSocketTextFrameHandler.java
File was deleted
ruoyi-applet/src/main/java/com/ruoyi/web/controller/webSocket/WebSocketUserConnectionManager.java
File was deleted
ruoyi-applet/src/main/java/com/ruoyi/web/controller/webSocket/WebSocketUserService.java
File was deleted
ruoyi-applet/src/main/resources/application-test.yml
@@ -95,7 +95,7 @@
    druid:
      # 主库数据源
      master:
        url: jdbc:mysql://192.168.110.34:3306/mobile_community?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=Asia/Shanghai
        url: jdbc:mysql://192.168.110.111:3306/jiashida?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=Asia/Shanghai
        username: root
        password: 123456
      # 从库数据源
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/TAppUserResp.java
@@ -24,7 +24,7 @@
    private static final long serialVersionUID = 1L;
    @TableId(value = "id")
    private String id;
    private Integer id;
    @ApiModelProperty(value = "姓名")
    private String nickName;
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUserApplet.java
@@ -22,7 +22,7 @@
    /**
     * 用户ID
     */
    private String userId;
    private Integer userId;
    /**
     * 部门ID
@@ -85,7 +85,7 @@
        this.permissions = permissions;
    }
    public LoginUserApplet(String userId, Long deptId, TAppUserResp user, Set<String> permissions)
    public LoginUserApplet(Integer userId, Long deptId, TAppUserResp user, Set<String> permissions)
    {
        this.userId = userId;
        this.deptId = deptId;
@@ -93,12 +93,12 @@
        this.permissions = permissions;
    }
    public String getUserId()
    public Integer getUserId()
    {
        return userId;
    }
    public void setUserId(String userId)
    public void setUserId(Integer userId)
    {
        this.userId = userId;
    }
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
@@ -18,8 +18,10 @@
import com.ruoyi.framework.manager.AsyncManager;
import com.ruoyi.framework.manager.factory.AsyncFactory;
import com.ruoyi.framework.security.context.AuthenticationContextHolder;
import com.ruoyi.system.model.TAppUser;
import com.ruoyi.system.service.ISysConfigService;
import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.system.service.TAppUserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.AuthenticationManager;
@@ -55,6 +57,8 @@
    private ISysConfigService configService;
    @Autowired
    private SysPermissionService permissionService;
    @Autowired
    private TAppUserService tAppUserService;
    /**
     * 登录验证
@@ -124,7 +128,7 @@
     * @param password 密码
     * @return 结果
     */
    public LoginUserApplet loginCodeApplet(String account, String password)
    public LoginUserApplet loginPwdApplet(String account, String password)
    {
        // 登录前置校验
        if (StringUtils.isEmpty(account)){
@@ -172,11 +176,45 @@
        }
        AsyncManager.me().execute(AsyncFactory.recordLogininfor(account, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
        LoginUserApplet loginUser = (LoginUserApplet) authentication.getPrincipal();
        recordAppLoginInfo(loginUser.getUserId());
        recordAppLoginInfo(loginUser.getUserId().toString());
        // 生成token
        return loginUser;
    }
    /**
     * 登录验证
     *
     * @param username 用户名
     * @param code 验证码
     * @return 结果
     */
    public LoginUserApplet loginCodeApplet(String username, String code)
    {
        // 登录前置校验
        if (StringUtils.isEmpty(username)){
            AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("not.null")));
            throw new UserNotExistsException();
        }
        // 用户验证
        TAppUser user = tAppUserService.getOne(Wrappers.<TAppUser>lambdaQuery().eq(TAppUser::getPhone,username));
        if (StringUtils.isNull(user)){
            log.info("登录用户:{} 不存在.", username);
            throw new ServiceException(MessageUtils.message("user.not.exists"));
        } else if (user.getStatus().equals(3)) {
            log.info("登录用户:{} 已被删除.", username);
            throw new ServiceException(MessageUtils.message("user.password.delete"));
        }
        // 校验验证码
        Object cacheObject = redisCache.getCacheObject(user.getPhone());
        if(!code.equals(String.valueOf(cacheObject))){
            log.info("登录用户:{} 短信验证码错误{}", username,code);
            throw new ServiceException("短信验证码错误");
        }
        AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success")));
        LoginUserApplet loginUser = new LoginUserApplet(user.getId(), null, null, null);
        recordAppLoginInfo(loginUser.getUserId().toString());
        // 生成token
        return loginUser;
    }
    /**
     * 登录验证
     *