diff --git a/ruoyi-admin/src/main/java/com/ruoyi/hezhi/api/entity/AlipayService.java b/ruoyi-admin/src/main/java/com/ruoyi/hezhi/api/entity/AlipayService.java index 2621a9c77ea949ab41f0c45202fbf33111158e58..64632c49df8cebba6cdec3a3aa187a6698040963 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/hezhi/api/entity/AlipayService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/hezhi/api/entity/AlipayService.java @@ -75,7 +75,7 @@ public class AlipayService { request.setBizModel(model); request.setNotifyUrl(aliPayConfig.getNotifyUrl()+"/api/pay/aliPayBoilerNotify"); - request.setReturnUrl("https://www.chsie.com.cn/examDetail?examId="+examId);//支付成功后跳转回哪个页面 +// request.setReturnUrl("https://www.chsie.com.cn/examDetail?examId="+examId);//支付成功后跳转回哪个页面 AlipayTradePagePayResponse response = alipayClient.pageExecute(request, "POST"); // 如果需要返回GET请求,请使用 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/hezhi/api/kaoshi/ApiLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/hezhi/api/kaoshi/ApiLoginController.java index cc2809221e59e9c59715fadb33a05ff7cc668c53..9a318892a67deccabfd6c08fb9b0037aa69d1c53 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/hezhi/api/kaoshi/ApiLoginController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/hezhi/api/kaoshi/ApiLoginController.java @@ -2,6 +2,7 @@ package com.ruoyi.hezhi.api.kaoshi; import cn.hutool.extra.qrcode.QrCodeUtil; import cn.hutool.extra.qrcode.QrConfig; +import cn.hutool.http.HttpUtil; import com.alibaba.fastjson2.JSONObject; import com.google.code.kaptcha.Producer; import com.ruoyi.common.annotation.RateLimiter; @@ -10,9 +11,13 @@ import com.ruoyi.common.constant.CacheConstants; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.redis.RedisCache; +import com.ruoyi.common.qiniu.QiNiuUploadUtils; +import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.sign.Base64; import com.ruoyi.common.utils.txy.TencentSmsCodeUtils; import com.ruoyi.common.utils.uuid.IdUtils; +import com.ruoyi.common.weixin.config.WeiXinConfig; import com.ruoyi.common.weixin.config.WeiXinPayConfig; import com.ruoyi.hezhi.domain.dto.MemberUserLoginDTO; import com.ruoyi.hezhi.domain.dto.SmsCodeDTO; @@ -20,8 +25,11 @@ import com.ruoyi.hezhi.domain.dto.StudentDTO; import com.ruoyi.hezhi.service.ITbSmsCodeService; import com.ruoyi.hezhi.service.ITbStudentService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.ObjectUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.FastByteArrayOutputStream; import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; @@ -31,13 +39,17 @@ import javax.annotation.Resource; import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.UnsupportedEncodingException; +import java.io.*; +import java.net.HttpURLConnection; +import java.net.URL; import java.net.URLEncoder; import java.util.HashMap; +import java.util.Map; import java.util.concurrent.TimeUnit; +import static com.ruoyi.common.constant.Constants.EXCEPTION_MSG; +import static java.util.concurrent.TimeUnit.SECONDS; + /** * @Author: LCL * @Date: 2024/10/08 @@ -63,7 +75,11 @@ public class ApiLoginController { @Resource private WeiXinPayConfig weiXinPayConfig; @Resource + private WeiXinConfig weiXinConfig; + @Resource ITbStudentService tbStudentService; + @Autowired + private QiNiuUploadUtils qiNiuUploadUtils; /** @@ -351,4 +367,20 @@ public class ApiLoginController { return AjaxResult.success(jsonObject); } + /** + * 会员码 + * @param memberUserId 用户id + * @return 结果 + */ + @RepeatSubmit + @GetMapping("/getQrCode") + public AjaxResult getQrCode(String memberUserId){ + try { + return AjaxResult.success(tbStudentService.createQrCode(memberUserId)); + }catch (Exception e){ + e.printStackTrace(); + return AjaxResult.error(EXCEPTION_MSG); + } + } + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/hezhi/api/kaoshi/ApiPCController.java b/ruoyi-admin/src/main/java/com/ruoyi/hezhi/api/kaoshi/ApiPCController.java index 347323604c153ed48f8c767dcf51c5552c2c675d..259737083d4853928de94b2fa01497dbcc3cc2f1 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/hezhi/api/kaoshi/ApiPCController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/hezhi/api/kaoshi/ApiPCController.java @@ -873,4 +873,13 @@ public class ApiPCController { return AjaxResult.toAjax(tbCourseService.delHistoricalRecords(dto)); } + //根据经纬度搜索最近的学习中心 + @GetMapping("/getNearbyStudyCenter") + public AjaxResult getNearbyStudyCenter(@RequestParam(required = false) String latitude, + @RequestParam(required = false) String longitude) { + StudyCenterVO nearbyStudyCenter = studyCenterService.getNearbyStudyCenter(latitude, longitude); + + return AjaxResult.success(nearbyStudyCenter); + } + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/hezhi/controller/TbStudyCenterController.java b/ruoyi-admin/src/main/java/com/ruoyi/hezhi/controller/TbStudyCenterController.java index d0d6d2811e96dfb660074ae646683311b4a85383..5de1650f2b4c1dcec9ddd9fe11bd1cf7d9d3d011 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/hezhi/controller/TbStudyCenterController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/hezhi/controller/TbStudyCenterController.java @@ -1,5 +1,7 @@ package com.ruoyi.hezhi.controller; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSON; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; @@ -15,6 +17,7 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.util.List; +import java.util.Map; /** * 学习中心Controller @@ -106,4 +109,15 @@ public class TbStudyCenterController extends BaseController List studyCenterVOList = tbStudyCenterService.getAllStudyCenterList(); return AjaxResult.success(studyCenterVOList); } + + + //地址逆解析 + @GetMapping("/api/map/geocoder") + public AjaxResult getGeocoder(@RequestParam String lat, @RequestParam String lng) { + String key = "2OZBZ-WUCE7-SLKXP-HJVOW-3P6RF-WVB7H"; + String url = "https://apis.map.qq.com/ws/geocoder/v1/?location=" + lat + "," + lng + "&key=" + key; + String json = HttpUtil.get(url); + return AjaxResult.success(JSON.parseObject(json)); + } + } diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index d1b1d2af3ed62e5857369214b6a29554604e2645..5a8ffe0061590755164312e95ef6a4de749e8394 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -211,9 +211,10 @@ wx: # 小程序id appId: wx8de56186c26a6a76 # 小程序密钥 - appSecret: 4778276c6b80b6e6745f37e04f11d991 +# appSecret: 4778276c6b80b6e6745f37e04f11d991 + appSecret: af6b5009cdaebc647c5d6327ad25e848 # 小程序码跳转页面 - wxPath: pages/index/index?higherUserId= + wxPath: pages/homePage/index?higherUserId= # 二维码跳转 qrCodeLink: https://server.xuexin.com/miniprogram/ # 小程序发货 diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/weixin/config/WeiXinConfig.java b/ruoyi-common/src/main/java/com/ruoyi/common/weixin/config/WeiXinConfig.java new file mode 100644 index 0000000000000000000000000000000000000000..94f51afc5b343fe1d8b32461c6a672f328d63076 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/weixin/config/WeiXinConfig.java @@ -0,0 +1,34 @@ +package com.ruoyi.common.weixin.config; + +import lombok.Getter; +import lombok.Setter; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +/** + * 微信相关参数配置 + * @author Wzp + */ +@Getter +@Setter +@Configuration +public class WeiXinConfig { + + @Value("${wx.miniProgram.appId}") + private String appId; + + @Value("${wx.miniProgram.appSecret}") + private String appSecret; + + @Value("${wx.miniProgram.wxPath}") + private String wxPath; + + @Value("${wx.miniProgram.qrCodeLink}") + private String qrCodeLink; + + @Value("${wx.miniProgram.deliveryUrl}") + private String deliveryUrl; + + @Value("${wx.pay.mchId}") + private String mchId; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/hezhi/domain/TbStudyCenter.java b/ruoyi-system/src/main/java/com/ruoyi/hezhi/domain/TbStudyCenter.java index d4653fe3a6747dae17d2dd30cd0b5e54affcf751..7469144b78b02859772c7b5398bba1e1be52e218 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/hezhi/domain/TbStudyCenter.java +++ b/ruoyi-system/src/main/java/com/ruoyi/hezhi/domain/TbStudyCenter.java @@ -7,6 +7,7 @@ import lombok.Getter; import lombok.Setter; import lombok.ToString; +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -122,6 +123,14 @@ public class TbStudyCenter extends BaseEntity @Excel(name = "区名") private String areaName; + /** 纬度 */ + @Excel(name = "纬度") + private BigDecimal latitude; + + /** 经度 */ + @Excel(name = "经度") + private BigDecimal longitude; + /** 详细地址 */ @Excel(name = "详细地址") private String address; diff --git a/ruoyi-system/src/main/java/com/ruoyi/hezhi/mapper/TbStudyCenterMapper.java b/ruoyi-system/src/main/java/com/ruoyi/hezhi/mapper/TbStudyCenterMapper.java index 2396fc38ef833f4e2f1c3f796371bb8c0daf05fa..294eb35dc080b2336171d4949ebd2736393c243d 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/hezhi/mapper/TbStudyCenterMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/hezhi/mapper/TbStudyCenterMapper.java @@ -109,4 +109,6 @@ public interface TbStudyCenterMapper * @return List */ List getStudyListByCourse(@Param("courseId") Long courseId); + + StudyCenterVO getNearbyStudyCenter(@Param("latitude")String latitude,@Param("longitude") String longitude); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/hezhi/service/ITbStudentService.java b/ruoyi-system/src/main/java/com/ruoyi/hezhi/service/ITbStudentService.java index 7ae15d68329d366c4d95c2ae8b89272b077d68f8..133d819aa04a9c3af856c053576acfaffb56de92 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/hezhi/service/ITbStudentService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/hezhi/service/ITbStudentService.java @@ -137,4 +137,6 @@ public interface ITbStudentService JSONObject memberUserRegister(MemberUserLoginDTO memberUserLoginDTO); int editPassword(TbStudent tbStudent); + + String createQrCode(String memberUserId); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/hezhi/service/ITbStudyCenterService.java b/ruoyi-system/src/main/java/com/ruoyi/hezhi/service/ITbStudyCenterService.java index 7daa18ba3f876113230df783af9c0985d623504c..3d4ad34144183a70f74870bd387ef06ff478a0a7 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/hezhi/service/ITbStudyCenterService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/hezhi/service/ITbStudyCenterService.java @@ -99,4 +99,6 @@ public interface ITbStudyCenterService public List> getStudyCenterEvaluateAgencyList(Long studyCenterId); public PageInfo> getStudyCenterCourseList(Integer pageNum, Integer pageSize, Long studyCenterId, Long evaluateAgencyId); + + StudyCenterVO getNearbyStudyCenter(String latitude, String longitude); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/hezhi/service/impl/TbStudentServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/hezhi/service/impl/TbStudentServiceImpl.java index 67d4bfde00e614120b980b15ac3e7c30e72f557c..f869157981827f883106ece1a9f2112d4c1a5315 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/hezhi/service/impl/TbStudentServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/hezhi/service/impl/TbStudentServiceImpl.java @@ -3,17 +3,16 @@ package com.ruoyi.hezhi.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; +import cn.hutool.http.HttpUtil; import com.alibaba.fastjson2.JSONObject; import com.ruoyi.common.constant.CacheConstants; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.enums.ServiceResponseEnum; import com.ruoyi.common.exception.ServiceException; -import com.ruoyi.common.utils.DateUtils; -import com.ruoyi.common.utils.RSAUtils; -import com.ruoyi.common.utils.SecurityUtils; -import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.utils.*; import com.ruoyi.common.utils.uuid.IdUtils; +import com.ruoyi.common.weixin.config.WeiXinConfig; import com.ruoyi.common.weixin.config.WeiXinXcxMemberConfig; import com.ruoyi.common.weixin.utils.WeiXinXcxMemberUtils; import com.ruoyi.hezhi.domain.TbStudent; @@ -24,23 +23,26 @@ import com.ruoyi.hezhi.mapper.TbStudentMapper; import com.ruoyi.hezhi.service.ITbSmsCodeService; import com.ruoyi.hezhi.service.ITbStudentService; import org.apache.commons.lang3.ObjectUtils; -import org.apache.ibatis.session.ExecutorType; -import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.dao.DataAccessException; import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; -import javax.validation.Valid; -import java.time.LocalDateTime; +import java.awt.*; +import java.io.BufferedInputStream; +import java.io.PrintWriter; +import java.net.HttpURLConnection; +import java.net.URL; import java.util.*; +import java.util.List; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; +import static java.util.concurrent.TimeUnit.SECONDS; + /** * 学员Service业务层处理 * @@ -61,6 +63,8 @@ public class TbStudentServiceImpl implements ITbStudentService { private WeiXinXcxMemberConfig weiXinXcxMemberConfig; @Resource private SqlSessionFactory sqlSessionFactory; + @Resource + private WeiXinConfig weiXinConfig; /** * 查询学员 @@ -764,4 +768,122 @@ public class TbStudentServiceImpl implements ITbStudentService { return tbStudentMapper.updateTbStudent(tbStudent); } + @Override + public String createQrCode(String memberUserId) { + if (StringUtils.isBlank(memberUserId)){ + return ""; + } + // 查询用户信息 + TbStudent tbMemberUser = tbStudentMapper.selectTbStudentByStudentId(Long.valueOf(memberUserId)); + if (ObjectUtils.isNotEmpty(tbMemberUser)){ + String qrCode = tbMemberUser.getInvitationCodeImg();//获取邀请码图 + if (StringUtils.isNotBlank(qrCode)){ + return qrCode; + } + + } + String userAvatar = ""; + String qrCode = ""; + Image image = null; + if (ObjectUtils.isNotEmpty(tbMemberUser)){ + + // 生成二维码 + String key = "qr_" + IdUtils.fastSimpleUUID() + ".png"; + + qrCode = this.getQRCode(memberUserId, key); + + tbMemberUser.setInvitationCodeImg(qrCode); + tbMemberUser.setUpdateTime(DateUtils.getNowDate()); + tbStudentMapper.updateTbStudent(tbMemberUser); + } + + return qrCode; + } + + /** + * 获取小程序码 + * + * @param memberUserId 用户id + * @param key key + * @return 图片链接 + */ + public String getQRCode(String memberUserId, String key){ + String qrCodeUrl = ""; + try { + //获取token + String accessToken = this.getAccessToken(); + String codeUrl = "https://api.weixin.qq.com/wxa/getwxacode?access_token="+ accessToken; + + String path = weiXinConfig.getWxPath()+memberUserId; + //post参数 + JSONObject jsonObject = new JSONObject(); + jsonObject.put("path", path); + Map lineColor = new HashMap<>(); + lineColor.put("r", 4); + lineColor.put("g", 157); + lineColor.put("b", 150); + jsonObject.put("line_color", lineColor); + jsonObject.put("env_version", "trial"); + String params = jsonObject.toString(); + + URL url = new URL(codeUrl); + HttpURLConnection httpUrlConnection = (HttpURLConnection) url.openConnection(); + // 提交模式 + httpUrlConnection.setRequestMethod("POST"); + // 发送POST请求必须设置如下两行 + httpUrlConnection.setDoOutput(true); + httpUrlConnection.setDoInput(true); + // 获取URLConnection对象对应的输出流 + PrintWriter printWriter = new PrintWriter(httpUrlConnection.getOutputStream()); + printWriter.write(params); + printWriter.flush(); + //获取数据 + BufferedInputStream bis = new BufferedInputStream(httpUrlConnection.getInputStream()); + //文件上传,返回小程序码url + qrCodeUrl = new ImgUpload().uploadStream(bis, key); + + } catch (Exception e) { + e.printStackTrace(); + } + return qrCodeUrl; + } + + + /** + * 获取access_token + * + * @return access_token + */ + public String getAccessToken() { + JSONObject jsonObject = new JSONObject(); + String accessToken = ""; + String redisKey = "xcx:access_token:"; + try { + if (redisCache.hasKey(redisKey)) { + return redisCache.getCacheObject(redisKey).toString(); + } + String requestUrl = "https://api.weixin.qq.com/cgi-bin/token" + + "?grant_type=client_credential" + + "&appid="+weiXinConfig.getAppId() + + "&secret="+weiXinConfig.getAppSecret(); + String result = HttpUtil.get(requestUrl); + + jsonObject = JSONObject.parseObject(result); + // 有效期(s) + Integer expiresIn = 0; + if (ObjectUtils.isNotEmpty(jsonObject)) { + accessToken = jsonObject.getString("access_token"); + expiresIn = jsonObject.getInteger("expires_in"); + } + if (StringUtils.isBlank(accessToken)){ + System.out.println("小程序获取access_token失败 -> {"+ DateUtils.getTime()+": "+jsonObject+"}"); + }else { + redisCache.setCacheObject(redisKey, accessToken, expiresIn, SECONDS); + } + } catch (Exception e) { + System.out.println("小程序获取access_token异常 -> {"+DateUtils.getTime()+": "+e.getMessage()+"}"); + } + return accessToken; + } + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/hezhi/service/impl/TbStudyCenterServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/hezhi/service/impl/TbStudyCenterServiceImpl.java index aaf102b7d3d64fd34b8afb54816120a302142738..00aba5aa5be93d3dfc52d2b8284637b3255be15c 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/hezhi/service/impl/TbStudyCenterServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/hezhi/service/impl/TbStudyCenterServiceImpl.java @@ -332,4 +332,9 @@ public class TbStudyCenterServiceImpl implements ITbStudyCenterService List> studyCenterCourseList = tbExamCourseMapper.getStudyCenterCourseList(studyCenterId, evaluateAgencyId); return new PageInfo<>(studyCenterCourseList); } + + @Override + public StudyCenterVO getNearbyStudyCenter(String latitude, String longitude) { + return tbStudyCenterMapper.getNearbyStudyCenter(latitude, longitude); + } } diff --git a/ruoyi-system/src/main/resources/mapper/hezhi/TbCooperatePartnerMapper.xml b/ruoyi-system/src/main/resources/mapper/hezhi/TbCooperatePartnerMapper.xml index e5caa4bdd46a6b1427c255c47c3451189bdc45a2..c8f1637a7d7e921f4741318de67fa0d8d3297bfe 100644 --- a/ruoyi-system/src/main/resources/mapper/hezhi/TbCooperatePartnerMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/hezhi/TbCooperatePartnerMapper.xml @@ -57,7 +57,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and delete_by = #{deleteBy} and del_flag = #{delFlag} - ororder by create_time desc + order by create_time desc @@ -177,6 +179,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" delete_time, delete_by, del_flag, + latitude, + longitude, #{sysUserId}, @@ -224,6 +228,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{deleteTime}, #{deleteBy}, #{delFlag}, + #{latitude}, + #{longitude}, @@ -275,6 +281,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" delete_time = #{deleteTime}, delete_by = #{deleteBy}, del_flag = #{delFlag}, + latitude = #{latitude}, + longitude = #{longitude}, where study_center_id = #{studyCenterId} @@ -371,4 +379,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND tsc.del_flag = 0 -- 确保没有被标记为删除 + diff --git a/ruoyi-ui/package.json b/ruoyi-ui/package.json index 0bd3e2a1a52e088ec3cc535c2f5a90b99ff23870..82292ab669265c3034e6eed086d3c2ac499c2384 100644 --- a/ruoyi-ui/package.json +++ b/ruoyi-ui/package.json @@ -57,7 +57,7 @@ "vue": "^2.7.16", "vue-count-to": "1.0.13", "vue-cropper": "0.5.5", - "vue-meta": "2.4.0", + "vue-meta": "^2.4.0", "vue-router": "3.4.9", "vuedraggable": "2.24.3", "vuex": "3.6.0", diff --git a/ruoyi-ui/public/index.html b/ruoyi-ui/public/index.html index 925455cafd927242a4904510e4ae79b0693062bf..4e18b93e83a35b30dd0927fb8108d44ba94b1a9f 100644 --- a/ruoyi-ui/public/index.html +++ b/ruoyi-ui/public/index.html @@ -5,6 +5,7 @@ + <%= webpackConfig.name %> diff --git a/ruoyi-ui/src/api/hezhi/studyCenter.js b/ruoyi-ui/src/api/hezhi/studyCenter.js index 81f26b56fe569dc7072f42da4ebb6f3ff71ffcc8..0427d110bec84a5ba1ffebdbd440da7c2c383bf3 100644 --- a/ruoyi-ui/src/api/hezhi/studyCenter.js +++ b/ruoyi-ui/src/api/hezhi/studyCenter.js @@ -50,3 +50,12 @@ export function getAllStudyCenterList() { method: 'get', }) } + +// 地址逆解析 +export function getMapGeocoder(params) { + return request({ + url: '/hezhi/studyCenter/api/map/geocoder', + method: 'get', + params: params + }) +} diff --git a/ruoyi-ui/src/views/hezhi/studyCenter/index.vue b/ruoyi-ui/src/views/hezhi/studyCenter/index.vue index 253faf103fb0eac502751cf486d0ce0d06e99351..1f4b6c91b5156a3359740adfbf5567860da96d53 100644 --- a/ruoyi-ui/src/views/hezhi/studyCenter/index.vue +++ b/ruoyi-ui/src/views/hezhi/studyCenter/index.vue @@ -347,9 +347,28 @@ + + + + - + + + + @@ -414,7 +433,7 @@ import { getStudyCenter, delStudyCenter, addStudyCenter, - updateStudyCenter, + updateStudyCenter, getMapGeocoder, } from "@/api/hezhi/studyCenter"; import { getAllStudyCenterClassList } from "@/api/hezhi/studyCenterClass"; import { getCityOrArea, getProvince } from "@/api/hezhi/region"; @@ -422,6 +441,7 @@ import StudyCenterFile from "@/views/hezhi/studyCenterFile"; import { getAllContinuingEducationClassList } from "@/api/hezhi/continuingEducationClass"; import ExamCourse from "@/components/ExamCourse/index.vue"; import StudyCenterTeacher from "@/views/hezhi/studyCenter/studyCenterTeacher.vue"; +import MapPicker from "@/views/hezhi/studyCenter/MapPicker.vue"; export default { name: "StudyCenter", @@ -431,7 +451,7 @@ export default { "tb_frozen_status", "tb_is_recommend", ], - components: { StudyCenterTeacher, ExamCourse, StudyCenterFile }, + components: { StudyCenterTeacher, ExamCourse, StudyCenterFile, MapPicker }, data() { return { value6: "", @@ -513,6 +533,9 @@ export default { studyCenterName: [ { required: true, message: "学习中心名称", trigger: "blur" }, ], + address: [ + { required: true, message: "地址不能为空", trigger: "change" }, + ], }, studyCenterId: null, continuingEducationClassList: [], @@ -613,6 +636,8 @@ export default { cityName: null, areaName: null, address: null, + latitude: null, + longitude: null, type: null, examineStatus: null, examineFeedback: null, @@ -726,6 +751,42 @@ export default { `studyCenter_${new Date().getTime()}.xlsx` ); }, + // 调用子组件的 open 方法打开弹窗 + openMapPicker() { + this.$refs.mapPickerRef.open(); + }, + handleLocation({lat, lng, address}) { + console.log('lat:', lat, 'lng:', lng, 'address:', address); + // 经纬度和地址名称 + this.form.latitude = lat; + this.form.longitude = lng; + this.form.address = address; + + // 逆地址解析 + // const params = { + // lat: lat, + // lng: lng + // }; + + // 模拟 homesApi.getMapGeocoder 的异步调用 + // getMapGeocoder(params) + // .then((res) => { + // console.log('逆地址解析结果:', res); + // if (res.status === 0) { + // const comp = res.result.address_component; + // // 赋值到 formData + // this.form.provinceName = comp.province || ''; + // this.form.cityName = comp.city || ''; + // this.form.areaName = comp.district || ''; + // + // } else { + // console.warn('逆地址解析失败:', res.data.message); + // } + // }) + // .catch((err) => { + // console.log(err); + // }); + } }, };