From 3727efbb74220c4043506accb8d7b34135ef7060 Mon Sep 17 00:00:00 2001 From: yangjun <1173114630@qq.com> Date: Tue, 10 Jun 2025 09:10:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0jsapi=E8=8E=B7=E5=8F=96token?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../NuEmployeesAdvisoryInfoController.java | 180 ++++++++++++++++ .../entity/NuEmployeesAdvisoryInfo.java | 199 ++++++++++++++++++ .../mapper/NuEmployeesAdvisoryInfoMapper.java | 17 ++ .../xml/NuEmployeesAdvisoryInfoMapper.xml | 5 + .../INuEmployeesAdvisoryInfoService.java | 14 ++ .../NuEmployeesAdvisoryInfoServiceImpl.java | 19 ++ .../weixin/controller/WeixinController.java | 135 +++++++++++- .../modules/weixin/utils/WechatpayConfig.java | 42 ++++ .../src/main/resources/application-dev.yml | 20 +- .../src/main/resources/application-uat.yml | 21 +- 10 files changed, 639 insertions(+), 13 deletions(-) create mode 100644 nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/nuEmployeesAdvisoryInfo/controller/NuEmployeesAdvisoryInfoController.java create mode 100644 nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/nuEmployeesAdvisoryInfo/entity/NuEmployeesAdvisoryInfo.java create mode 100644 nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/nuEmployeesAdvisoryInfo/mapper/NuEmployeesAdvisoryInfoMapper.java create mode 100644 nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/nuEmployeesAdvisoryInfo/mapper/xml/NuEmployeesAdvisoryInfoMapper.xml create mode 100644 nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/nuEmployeesAdvisoryInfo/service/INuEmployeesAdvisoryInfoService.java create mode 100644 nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/nuEmployeesAdvisoryInfo/service/impl/NuEmployeesAdvisoryInfoServiceImpl.java create mode 100644 nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/weixin/utils/WechatpayConfig.java diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/nuEmployeesAdvisoryInfo/controller/NuEmployeesAdvisoryInfoController.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/nuEmployeesAdvisoryInfo/controller/NuEmployeesAdvisoryInfoController.java new file mode 100644 index 0000000..613d551 --- /dev/null +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/nuEmployeesAdvisoryInfo/controller/NuEmployeesAdvisoryInfoController.java @@ -0,0 +1,180 @@ +package com.nu.modules.nuEmployeesAdvisoryInfo.controller; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.query.QueryRuleEnum; +import org.jeecg.common.util.oConvertUtils; +import com.nu.modules.nuEmployeesAdvisoryInfo.entity.NuEmployeesAdvisoryInfo; +import com.nu.modules.nuEmployeesAdvisoryInfo.service.INuEmployeesAdvisoryInfoService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + + /** + * @Description: 员工咨询信息 + * @Author: jeecg-boot + * @Date: 2025-06-09 + * @Version: V1.0 + */ +@Api(tags="员工咨询信息") +@RestController +@RequestMapping("/nuEmployeesAdvisoryInfo/nuEmployeesAdvisoryInfo") +@Slf4j +public class NuEmployeesAdvisoryInfoController extends JeecgController { + @Autowired + private INuEmployeesAdvisoryInfoService nuEmployeesAdvisoryInfoService; + + /** + * 分页列表查询 + * + * @param nuEmployeesAdvisoryInfo + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "员工咨询信息-分页列表查询") + @ApiOperation(value="员工咨询信息-分页列表查询", notes="员工咨询信息-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(NuEmployeesAdvisoryInfo nuEmployeesAdvisoryInfo, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(nuEmployeesAdvisoryInfo, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = nuEmployeesAdvisoryInfoService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param nuEmployeesAdvisoryInfo + * @return + */ + @AutoLog(value = "员工咨询信息-添加") + @ApiOperation(value="员工咨询信息-添加", notes="员工咨询信息-添加") + @RequiresPermissions("nuEmployeesAdvisoryInfo:nu_employees_advisory_info:add") + @PostMapping(value = "/add") + public Result add(@RequestBody NuEmployeesAdvisoryInfo nuEmployeesAdvisoryInfo) { + nuEmployeesAdvisoryInfoService.save(nuEmployeesAdvisoryInfo); + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param nuEmployeesAdvisoryInfo + * @return + */ + @AutoLog(value = "员工咨询信息-编辑") + @ApiOperation(value="员工咨询信息-编辑", notes="员工咨询信息-编辑") + @RequiresPermissions("nuEmployeesAdvisoryInfo:nu_employees_advisory_info:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody NuEmployeesAdvisoryInfo nuEmployeesAdvisoryInfo) { + nuEmployeesAdvisoryInfoService.updateById(nuEmployeesAdvisoryInfo); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "员工咨询信息-通过id删除") + @ApiOperation(value="员工咨询信息-通过id删除", notes="员工咨询信息-通过id删除") + @RequiresPermissions("nuEmployeesAdvisoryInfo:nu_employees_advisory_info:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + nuEmployeesAdvisoryInfoService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "员工咨询信息-批量删除") + @ApiOperation(value="员工咨询信息-批量删除", notes="员工咨询信息-批量删除") + @RequiresPermissions("nuEmployeesAdvisoryInfo:nu_employees_advisory_info:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.nuEmployeesAdvisoryInfoService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "员工咨询信息-通过id查询") + @ApiOperation(value="员工咨询信息-通过id查询", notes="员工咨询信息-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + NuEmployeesAdvisoryInfo nuEmployeesAdvisoryInfo = nuEmployeesAdvisoryInfoService.getById(id); + if(nuEmployeesAdvisoryInfo==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(nuEmployeesAdvisoryInfo); + } + + /** + * 导出excel + * + * @param request + * @param nuEmployeesAdvisoryInfo + */ + @RequiresPermissions("nuEmployeesAdvisoryInfo:nu_employees_advisory_info:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, NuEmployeesAdvisoryInfo nuEmployeesAdvisoryInfo) { + return super.exportXls(request, nuEmployeesAdvisoryInfo, NuEmployeesAdvisoryInfo.class, "员工咨询信息"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("nuEmployeesAdvisoryInfo:nu_employees_advisory_info:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, NuEmployeesAdvisoryInfo.class); + } + +} diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/nuEmployeesAdvisoryInfo/entity/NuEmployeesAdvisoryInfo.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/nuEmployeesAdvisoryInfo/entity/NuEmployeesAdvisoryInfo.java new file mode 100644 index 0000000..79bd502 --- /dev/null +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/nuEmployeesAdvisoryInfo/entity/NuEmployeesAdvisoryInfo.java @@ -0,0 +1,199 @@ +package com.nu.modules.nuEmployeesAdvisoryInfo.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableLogic; +import org.jeecg.common.constant.ProvinceCityArea; +import org.jeecg.common.util.SpringContextUtils; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 员工咨询信息 + * @Author: jeecg-boot + * @Date: 2025-06-09 + * @Version: V1.0 + */ +@Data +@TableName("nu_employees_advisory_info") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="nu_employees_advisory_info对象", description="员工咨询信息") +public class NuEmployeesAdvisoryInfo implements Serializable { + private static final long serialVersionUID = 1L; + + /**id*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "id") + private java.lang.String id; + /**微信id*/ + @Excel(name = "微信id", width = 15) + @ApiModelProperty(value = "微信id") + private java.lang.String openId; + /**微信名称*/ + @Excel(name = "微信名称", width = 15) + @ApiModelProperty(value = "微信名称") + private java.lang.String wechatName; + /**联系电话*/ + @Excel(name = "联系电话", width = 15) + @ApiModelProperty(value = "联系电话") + private java.lang.String tel; + /**状态 1审核中 2审核完成 3驳回 */ + @Excel(name = "状态 1审核中 2审核完成 3驳回 ", width = 15) + @ApiModelProperty(value = "状态 1审核中 2审核完成 3驳回 ") + private java.lang.String status; + /**审核备注*/ + @Excel(name = "审核备注", width = 15) + @ApiModelProperty(value = "审核备注") + private java.lang.String content; + /**创建人*/ + @ApiModelProperty(value = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @ApiModelProperty(value = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "更新日期") + private java.util.Date updateTime; + /**机构是否入驻0否 1是(是否入驻过)*/ + @Excel(name = "机构是否入驻0否 1是(是否入驻过)", width = 15) + @ApiModelProperty(value = "机构是否入驻0否 1是(是否入驻过)") + private java.lang.String izEntry; + /**咨询人姓名*/ + @Excel(name = "咨询人姓名", width = 15) + @ApiModelProperty(value = "咨询人姓名") + private java.lang.String name; + /**性别*/ + @Excel(name = "性别", width = 15) + @ApiModelProperty(value = "性别") + private java.lang.String sex; + /**民族*/ + @Excel(name = "民族", width = 15) + @ApiModelProperty(value = "民族") + private java.lang.String national; + /**出生日期*/ + @Excel(name = "出生日期", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "出生日期") + private java.util.Date birthDate; + /**住址(身份证上)*/ + @Excel(name = "住址(身份证上)", width = 15) + @ApiModelProperty(value = "住址(身份证上)") + private java.lang.String idCardAddress; + /**身份证号*/ + @Excel(name = "身份证号", width = 15) + @ApiModelProperty(value = "身份证号") + private java.lang.String idCard; + /**签发机关*/ + @Excel(name = "签发机关", width = 15) + @ApiModelProperty(value = "签发机关") + private java.lang.String issuingAuthority; + /**有效开始日期*/ + @Excel(name = "有效开始日期", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "有效开始日期") + private java.util.Date startTime; + /**有效结束日期*/ + @Excel(name = "有效结束日期", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "有效结束日期") + private java.util.Date endTime; + /**身份证正面*/ + @Excel(name = "身份证正面", width = 15) + @ApiModelProperty(value = "身份证正面") + private java.lang.String cardZmPath; + /**身份证反面*/ + @Excel(name = "身份证反面", width = 15) + @ApiModelProperty(value = "身份证反面") + private java.lang.String cardFmPath; + /**婚否(0未婚 1已婚)*/ + @Excel(name = "婚否(0未婚 1已婚)", width = 15) + @ApiModelProperty(value = "婚否(0未婚 1已婚)") + private java.lang.String maritalStatus; + /**身高*/ + @Excel(name = "身高", width = 15) + @ApiModelProperty(value = "身高") + private java.lang.String height; + /**体重*/ + @Excel(name = "体重", width = 15) + @ApiModelProperty(value = "体重") + private java.lang.String weight; + /**健康状况(0健康 1患病)*/ + @Excel(name = "健康状况(0健康 1患病)", width = 15) + @ApiModelProperty(value = "健康状况(0健康 1患病)") + private java.lang.String healthStatus; + /**政治面貌(0共产党员 1民主党 2国民党 3无党派)*/ + @Excel(name = "政治面貌(0共产党员 1民主党 2国民党 3无党派)", width = 15) + @ApiModelProperty(value = "政治面貌(0共产党员 1民主党 2国民党 3无党派)") + private java.lang.String politicalAppearance; + /**紧急联系人姓名*/ + @Excel(name = "紧急联系人姓名", width = 15) + @ApiModelProperty(value = "紧急联系人姓名") + private java.lang.String contactName; + /**紧急联系人电话*/ + @Excel(name = "紧急联系人电话", width = 15) + @ApiModelProperty(value = "紧急联系人电话") + private java.lang.String contactTel; + /**紧急联系人与本人关系*/ + @Excel(name = "紧急联系人与本人关系", width = 15) + @ApiModelProperty(value = "紧急联系人与本人关系") + private java.lang.String contactRelationship; + /**户口性质(0农业 1非农业)*/ + @Excel(name = "户口性质(0农业 1非农业)", width = 15) + @ApiModelProperty(value = "户口性质(0农业 1非农业)") + private java.lang.String hukouType; + /**银行卡正面*/ + @Excel(name = "银行卡正面", width = 15) + @ApiModelProperty(value = "银行卡正面") + private java.lang.String bankZmPath; + /**银行卡反面*/ + @Excel(name = "银行卡反面", width = 15) + @ApiModelProperty(value = "银行卡反面") + private java.lang.String bankFmPath; + /**开户行*/ + @Excel(name = "开户行", width = 15) + @ApiModelProperty(value = "开户行") + private java.lang.String openingBank; + /**银行卡号*/ + @Excel(name = "银行卡号", width = 15) + @ApiModelProperty(value = "银行卡号") + private java.lang.String bankCard; + /**健康证正面*/ + @Excel(name = "健康证正面", width = 15) + @ApiModelProperty(value = "健康证正面") + private java.lang.String healthZmPath; + /**健康证反面*/ + @Excel(name = "健康证反面", width = 15) + @ApiModelProperty(value = "健康证反面") + private java.lang.String healthFmPath; + /**资质证(可多张)*/ + @Excel(name = "资质证(可多张)", width = 15) + @ApiModelProperty(value = "资质证(可多张)") + private java.lang.String qualificationPath; + /**无犯罪正面*/ + @Excel(name = "无犯罪正面", width = 15) + @ApiModelProperty(value = "无犯罪正面") + private java.lang.String noCrimeCertificate; +} diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/nuEmployeesAdvisoryInfo/mapper/NuEmployeesAdvisoryInfoMapper.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/nuEmployeesAdvisoryInfo/mapper/NuEmployeesAdvisoryInfoMapper.java new file mode 100644 index 0000000..de7180f --- /dev/null +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/nuEmployeesAdvisoryInfo/mapper/NuEmployeesAdvisoryInfoMapper.java @@ -0,0 +1,17 @@ +package com.nu.modules.nuEmployeesAdvisoryInfo.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import com.nu.modules.nuEmployeesAdvisoryInfo.entity.NuEmployeesAdvisoryInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 员工咨询信息 + * @Author: jeecg-boot + * @Date: 2025-06-09 + * @Version: V1.0 + */ +public interface NuEmployeesAdvisoryInfoMapper extends BaseMapper { + +} diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/nuEmployeesAdvisoryInfo/mapper/xml/NuEmployeesAdvisoryInfoMapper.xml b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/nuEmployeesAdvisoryInfo/mapper/xml/NuEmployeesAdvisoryInfoMapper.xml new file mode 100644 index 0000000..8196277 --- /dev/null +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/nuEmployeesAdvisoryInfo/mapper/xml/NuEmployeesAdvisoryInfoMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/nuEmployeesAdvisoryInfo/service/INuEmployeesAdvisoryInfoService.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/nuEmployeesAdvisoryInfo/service/INuEmployeesAdvisoryInfoService.java new file mode 100644 index 0000000..731a49c --- /dev/null +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/nuEmployeesAdvisoryInfo/service/INuEmployeesAdvisoryInfoService.java @@ -0,0 +1,14 @@ +package com.nu.modules.nuEmployeesAdvisoryInfo.service; + +import com.nu.modules.nuEmployeesAdvisoryInfo.entity.NuEmployeesAdvisoryInfo; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 员工咨询信息 + * @Author: jeecg-boot + * @Date: 2025-06-09 + * @Version: V1.0 + */ +public interface INuEmployeesAdvisoryInfoService extends IService { + +} diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/nuEmployeesAdvisoryInfo/service/impl/NuEmployeesAdvisoryInfoServiceImpl.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/nuEmployeesAdvisoryInfo/service/impl/NuEmployeesAdvisoryInfoServiceImpl.java new file mode 100644 index 0000000..a9df02e --- /dev/null +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/nuEmployeesAdvisoryInfo/service/impl/NuEmployeesAdvisoryInfoServiceImpl.java @@ -0,0 +1,19 @@ +package com.nu.modules.nuEmployeesAdvisoryInfo.service.impl; + +import com.nu.modules.nuEmployeesAdvisoryInfo.entity.NuEmployeesAdvisoryInfo; +import com.nu.modules.nuEmployeesAdvisoryInfo.mapper.NuEmployeesAdvisoryInfoMapper; +import com.nu.modules.nuEmployeesAdvisoryInfo.service.INuEmployeesAdvisoryInfoService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 员工咨询信息 + * @Author: jeecg-boot + * @Date: 2025-06-09 + * @Version: V1.0 + */ +@Service +public class NuEmployeesAdvisoryInfoServiceImpl extends ServiceImpl implements INuEmployeesAdvisoryInfoService { + +} diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/weixin/controller/WeixinController.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/weixin/controller/WeixinController.java index d6966b6..a2907db 100644 --- a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/weixin/controller/WeixinController.java +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/weixin/controller/WeixinController.java @@ -1,15 +1,29 @@ package com.nu.modules.weixin.controller; +import cn.hutool.json.JSONObject; import com.alibaba.cloud.commons.lang.StringUtils; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; import com.nu.modules.appversionconfig.entity.AppVersionConfig; import com.nu.modules.appversionconfig.service.IAppVersionConfigService; import com.nu.modules.weixin.utils.SignUtil; +import com.nu.modules.weixin.utils.WechatpayConfig; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.HttpStatus; +import org.apache.http.client.HttpClient; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.util.EntityUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.system.base.controller.JeecgController; @@ -22,6 +36,7 @@ import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.security.MessageDigest; import java.util.Arrays; import java.util.HashMap; import java.util.Map; @@ -43,18 +58,17 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; +import java.util.UUID; @RestController @RequestMapping("/weixin") @Slf4j public class WeixinController { - @Value("${wechat.appId}") - private String appId; - @Value("${wechat.appSecret:}") - private String appSecret; + @Autowired + public WechatpayConfig wechatpayConfig; // RestTemplate 用于发送 HTTP 请求 private final RestTemplate restTemplate; @@ -105,7 +119,7 @@ public class WeixinController { public Map callback(@RequestParam("code") String code, Model model) { String tokenUrl = String.format( "https://api.weixin.qq.com/sns/oauth2/access_token?appid=%s&secret=%s&code=%s&grant_type=authorization_code", - appId, appSecret, code + wechatpayConfig.getAppid(), wechatpayConfig.getAppsecret(), code ); System.out.println(tokenUrl); @@ -158,4 +172,115 @@ public class WeixinController { + @PostMapping("/getJsApiInfo") + public Map getJsApiInfo(@RequestBody Map params) throws Exception { + String accessToken = getToken(GET_TOKEN_URL, wechatpayConfig.getAppid(), wechatpayConfig.getAppsecret());// 获取token + String firstUrl = params.get("url"); + System.out.println("---------firstUrl-------"+firstUrl); + System.out.println("---------token-------"+accessToken); + // 构造请求URL + String requestUrl = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + accessToken + "&type=jsapi"; + + // 发送HTTP请求,并获取返回结果 + HttpGet httpGet = new HttpGet(requestUrl); + System.out.println("---------httpGet-------"+httpGet); + CloseableHttpClient httpClient = HttpClients.createDefault(); + System.out.println("---------httpClient-------"+httpClient); + CloseableHttpResponse httpResponse = httpClient.execute(httpGet); + System.out.println("---------httpResponse-------"+httpResponse); + HttpEntity httpEntity = httpResponse.getEntity(); + System.out.println("---------httpEntity-------"+httpEntity); + String responseJson = EntityUtils.toString(httpEntity, "UTF-8"); + System.out.println("---------responseJson-------"+responseJson); + // 解析返回结果,获取手机号 + JSONObject jsonObject = new JSONObject(responseJson); + String ticket = String.valueOf(jsonObject.get("ticket")); + String nonceStr = UUID.randomUUID().toString(); + String timestamp = Long.toString(System.currentTimeMillis() / 1000); + String string1 = new StringBuilder("jsapi_ticket=").append(ticket) + .append("&noncestr=") + .append(nonceStr) + .append("×tamp=") + .append(timestamp) + .append("&url=") + .append(firstUrl) + .toString();// 得到签名 + String signature = encryptSHA(string1); + + Map map = new HashMap(); + map.put("signature", signature); + map.put("timestamp", timestamp); + map.put("nonceStr", nonceStr); + map.put("firstUrl", firstUrl); + + System.out.println("---------jsonObject-------"+signature); + return map; + } + /** * sha */ + private static String encryptSHA(String signStr) { + StringBuffer hexValue = new StringBuffer(); + try { + MessageDigest sha = MessageDigest.getInstance("SHA-1"); + byte[] byteArray = signStr.getBytes("UTF-8"); + byte[] md5Bytes = sha.digest(byteArray); + for (int i = 0; i < md5Bytes.length; i++) { + int val = ((int) md5Bytes[i]) & 0xff; + if (val < 16) { + hexValue.append("0"); + } + hexValue.append(Integer.toHexString(val)); + } + } catch (Exception e) { + e.printStackTrace(); return ""; + } return hexValue.toString(); + } + + public static final String GET_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token";// 获取access + + // 获取token + public static String getToken(String apiurl, String appid, String secret) + { + String turl = String.format( + "%s?grant_type=client_credential&appid=%s&secret=%s", apiurl, + appid, secret); + System.out.println("turl:" + turl); + HttpClient client = new DefaultHttpClient(); + HttpGet get = new HttpGet(turl); + System.out.println("get:" + get); + JsonParser jsonparer = new JsonParser();// 初始化解析json格式的对象 + String result = null; + try + { + HttpResponse res = client.execute(get); + System.out.println("res:" + res); + String responseContent = null; // 响应内容 + HttpEntity entity = res.getEntity(); + System.out.println("entity:" + entity); + responseContent = EntityUtils.toString(entity, "UTF-8"); + JsonObject json = jsonparer.parse(responseContent) + .getAsJsonObject(); + System.out.println("json:" + json); + // 将json字符串转换为json对象 + if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) + { + if (json.get("errcode") != null) + {// 错误时微信会返回错误码等信息,{"errcode":40013,"errmsg":"invalid appid"} + } + else + {// 正常情况下{"access_token":"ACCESS_TOKEN","expires_in":7200} + result = json.get("access_token").getAsString(); + } + } + } + catch (Exception e) + { + e.printStackTrace(); + } + finally + { + // 关闭连接 ,释放资源 + client.getConnectionManager().shutdown(); + return result; + } + } } diff --git a/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/weixin/utils/WechatpayConfig.java b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/weixin/utils/WechatpayConfig.java new file mode 100644 index 0000000..37a588b --- /dev/null +++ b/nursing-unit-admin/nu-admin-biz/src/main/java/com/nu/modules/weixin/utils/WechatpayConfig.java @@ -0,0 +1,42 @@ +package com.nu.modules.weixin.utils; + +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +@Configuration +@Slf4j +@Data +public class WechatpayConfig { + // 商户ID + @Value("${wxpay.mch-id}") + private String mchId; + + // 商户API证书序列号 + @Value("${wxpay.mch-serial-no}") + private String mchSerialNo; + + // 商户私钥文件 + @Value("${wxpay.private-key-path}") + private String privateKeyPath; + + // APIv3密钥 + @Value("${wxpay.api-v3-key}") + private String apiV3Key; + + // APPID + @Value("${wxpay.appid}") + private String appid; + + // 接收结果通知地址 + @Value("${wxpay.notify-domain}") + private String notifyDomain; + + // APPID + @Value("${wxpay.appsecret}") + private String appsecret; + + + +} diff --git a/nursing-unit-system/nu-system-start/src/main/resources/application-dev.yml b/nursing-unit-system/nu-system-start/src/main/resources/application-dev.yml index 449a577..7ce65a1 100644 --- a/nursing-unit-system/nu-system-start/src/main/resources/application-dev.yml +++ b/nursing-unit-system/nu-system-start/src/main/resources/application-dev.yml @@ -374,8 +374,20 @@ aliyun: #文件传输秘钥 downloadkey: hP2K9Z!WLuj"M#8, -# 微信 -wechat: - appId: wx8fc3e4305d2fbf0b - appSecret: 3bf3dd4ec72f591432db6b28c2c044e5 +# 微信支付 +wxpay: + # APIv3密钥 + api-v3-key: asdfiuzwe3534565478WETDSAFRWEq1E + # APPID + appid: wx8fc3e4305d2fbf0b + # appsecret + appsecret: 3bf3dd4ec72f591432db6b28c2c044e5 + # 商户ID + mch-id: 1717618860 + # 商户API证书序列号 + mch-serial-no: 3E51C9D24F64CE50E9273E544561D29684AB21C7 + # 接收结果通知地址 + notify-domain: https://www.focusnu.com/nursing-unit_0010507/weiXinPay/wx/callback + # 商户私钥文件路径 + private-key-path: c://apiclient_key.pem diff --git a/nursing-unit-system/nu-system-start/src/main/resources/application-uat.yml b/nursing-unit-system/nu-system-start/src/main/resources/application-uat.yml index 2d26c7e..3ffe67f 100644 --- a/nursing-unit-system/nu-system-start/src/main/resources/application-uat.yml +++ b/nursing-unit-system/nu-system-start/src/main/resources/application-uat.yml @@ -371,7 +371,20 @@ aliyun: #文件传输秘钥 downloadkey: hP2K9Z!WLuj"M#8, -# 微信 -wechat: - appId: wx8fc3e4305d2fbf0b - appSecret: 3bf3dd4ec72f591432db6b28c2c044e5 + +# 微信支付 +wxpay: + # APIv3密钥 + api-v3-key: asdfiuzwe3534565478WETDSAFRWEq1E + # APPID + appid: wx8fc3e4305d2fbf0b + # appsecret + appsecret: 3bf3dd4ec72f591432db6b28c2c044e5 + # 商户ID + mch-id: 1717618860 + # 商户API证书序列号 + mch-serial-no: 3E51C9D24F64CE50E9273E544561D29684AB21C7 + # 接收结果通知地址 + notify-domain: https://www.focusnu.com/nursing-unit_0010507/weiXinPay/wx/callback + # 商户私钥文件路径 + private-key-path: c://apiclient_key.pem