添加jsapi获取token
This commit is contained in:
parent
b14d02e6ef
commit
3727efbb74
|
@ -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<NuEmployeesAdvisoryInfo, INuEmployeesAdvisoryInfoService> {
|
||||
@Autowired
|
||||
private INuEmployeesAdvisoryInfoService nuEmployeesAdvisoryInfoService;
|
||||
|
||||
/**
|
||||
* 分页列表查询
|
||||
*
|
||||
* @param nuEmployeesAdvisoryInfo
|
||||
* @param pageNo
|
||||
* @param pageSize
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
//@AutoLog(value = "员工咨询信息-分页列表查询")
|
||||
@ApiOperation(value="员工咨询信息-分页列表查询", notes="员工咨询信息-分页列表查询")
|
||||
@GetMapping(value = "/list")
|
||||
public Result<IPage<NuEmployeesAdvisoryInfo>> queryPageList(NuEmployeesAdvisoryInfo nuEmployeesAdvisoryInfo,
|
||||
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
|
||||
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
|
||||
HttpServletRequest req) {
|
||||
QueryWrapper<NuEmployeesAdvisoryInfo> queryWrapper = QueryGenerator.initQueryWrapper(nuEmployeesAdvisoryInfo, req.getParameterMap());
|
||||
Page<NuEmployeesAdvisoryInfo> page = new Page<NuEmployeesAdvisoryInfo>(pageNo, pageSize);
|
||||
IPage<NuEmployeesAdvisoryInfo> 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<String> 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<String> 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<String> 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<String> 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<NuEmployeesAdvisoryInfo> 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);
|
||||
}
|
||||
|
||||
}
|
|
@ -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;
|
||||
}
|
|
@ -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<NuEmployeesAdvisoryInfo> {
|
||||
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.nu.modules.nuEmployeesAdvisoryInfo.mapper.NuEmployeesAdvisoryInfoMapper">
|
||||
|
||||
</mapper>
|
|
@ -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<NuEmployeesAdvisoryInfo> {
|
||||
|
||||
}
|
|
@ -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<NuEmployeesAdvisoryInfoMapper, NuEmployeesAdvisoryInfo> implements INuEmployeesAdvisoryInfoService {
|
||||
|
||||
}
|
|
@ -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<String,Object> 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<String,String> getJsApiInfo(@RequestBody Map<String,String> 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<String,String> map = new HashMap<String,String>();
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue