package com.fzzy.appwx.manager;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.fzzy.appwx.param.WeChatBaseParam;
|
import com.fzzy.appwx.util.WeChatUtil;
|
import com.fzzy.igds.constant.Constant;
|
import com.fzzy.igds.constant.RespCodeEnum;
|
import com.fzzy.igds.data.IgdsBaseParam;
|
import com.fzzy.igds.data.PageResponse;
|
import com.fzzy.igds.domain.PledgeContract;
|
import com.fzzy.igds.domain.PledgeContractDepot;
|
import com.fzzy.igds.domain.SnapReply;
|
import com.fzzy.igds.service.PledgeContractDepotService;
|
import com.fzzy.igds.service.PledgeContractService;
|
import com.fzzy.igds.service.SnapReplyService;
|
import com.google.code.kaptcha.Constants;
|
import com.ruoyi.common.core.domain.entity.SysUser;
|
import com.ruoyi.common.utils.ShiroUtils;
|
import com.ruoyi.system.service.ISysUserService;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletRequest;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
@Component
|
public class WeChatManager {
|
|
@Resource
|
private WeChatUtil weChatUtil;
|
@Autowired
|
private ISysUserService sysUserService;
|
@Resource
|
private SnapReplyService snapReplyService;
|
|
@Resource
|
private PledgeContractService pledgeContractService;
|
|
@Resource
|
private PledgeContractDepotService pledgeContractDepotService;
|
|
|
public String getOpenid(String code) {
|
//根据code获取用户openid
|
return weChatUtil.getOpenid(code);
|
}
|
|
|
public SysUser getUser(String openid) {
|
//根据openid获取用户信息
|
return sysUserService.selectUserByOpenId(openid);
|
}
|
|
//获取用户绑定信息
|
public PageResponse<SysUser> getUserBindInfo(WeChatBaseParam param) {
|
//判断参数
|
if (null == param) {
|
return new PageResponse<SysUser>(RespCodeEnum.CODE_1007.getCode(), "参数不完整,请核查");
|
}
|
|
SysUser user = null;
|
|
//微信公众号
|
if (StringUtils.isEmpty(param.getOpenid())) {
|
return new PageResponse<SysUser>(RespCodeEnum.CODE_1007.getCode(), "参数不完整,请核查");
|
|
}
|
//根据openid查询用户是否已经绑定
|
user = sysUserService.selectUserByOpenId(param.getOpenid());
|
if (user == null) {
|
return new PageResponse<SysUser>(RespCodeEnum.CODE_1008.getCode(), "业务数据返回为空");
|
|
}
|
|
Long deptId = user.getDeptId();
|
if (deptId == null) {
|
deptId = Long.valueOf(user.getCompanyId());
|
user.setDeptId(deptId);
|
}
|
return new PageResponse(RespCodeEnum.CODE_0000.getCode(), "查询成功", user);
|
}
|
|
//校验验证码
|
public boolean validateResponse(HttpServletRequest request, String validateCode) {
|
// ① 从Session获取生成的验证码
|
Object obj = ShiroUtils.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY);
|
String code = String.valueOf(obj != null ? obj : "");
|
|
// ② 立即清除Session中的验证码(防止重复使用)
|
request.getSession().removeAttribute(Constants.KAPTCHA_SESSION_KEY);
|
|
// ③ 比对用户输入和正确答案(忽略大小写)
|
if (StringUtils.isEmpty(validateCode) || !validateCode.equalsIgnoreCase(code)) {
|
return false;
|
|
}
|
return true;
|
}
|
|
//绑定openId
|
public PageResponse<String> bandOpenId(HttpServletRequest httpRequest,WeChatBaseParam param) {
|
|
//判断参数
|
if (null == param || StringUtils.isEmpty(param.getOpenid())) {
|
return new PageResponse<String>(RespCodeEnum.CODE_1007.getCode(), "参数不完整,请核查");
|
|
}
|
if (StringUtils.isEmpty(param.getMobile())) {
|
return new PageResponse<String>(RespCodeEnum.CODE_1007.getCode(), "手机号为空,请填写");
|
|
}
|
if (StringUtils.isEmpty(param.getMsgCode())) {
|
return new PageResponse<String>(RespCodeEnum.CODE_1007.getCode(), "验证码不能为空");
|
|
}
|
//验证码验证
|
boolean validateResponse = validateResponse(httpRequest, param.getMsgCode());
|
if (!validateResponse) {
|
return new PageResponse<String>(RespCodeEnum.CODE_1007.getCode(), "验证码错误");
|
}
|
|
//根据手机号查看用户是否是系统用户
|
SysUser user = sysUserService.selectUserByPhoneNumber(param.getMobile());
|
if (user == null || StringUtils.isEmpty(user.getPhonenumber())) {
|
return new PageResponse<String>(RespCodeEnum.CODE_1006.getCode(), "手机号不在系统内,请联系管理员!");
|
}
|
|
//更新数据库,用户信息加入微信认证ID
|
user.setOpenId(param.getOpenid());
|
sysUserService.updateUserInfo(user);
|
|
// redisService.deleteObject(WeChatConst.WX_MOBILE_CODE + param.getMobile());
|
|
return new PageResponse<String>(RespCodeEnum.CODE_0000.getCode(), "绑定成功");
|
|
}
|
|
|
//解绑openId
|
public PageResponse<String> unBandOpenId(HttpServletRequest httpRequest,WeChatBaseParam param) {
|
|
//判断参数
|
if (null == param || StringUtils.isEmpty(param.getOpenid())) {
|
return new PageResponse<String>(RespCodeEnum.CODE_1007.getCode(), "参数不完整,请核查");
|
|
}
|
if (StringUtils.isEmpty(param.getMobile())) {
|
return new PageResponse<String>(RespCodeEnum.CODE_1007.getCode(), "手机号为空,请填写");
|
}
|
if (StringUtils.isEmpty(param.getMsgCode())) {
|
return new PageResponse<String>(RespCodeEnum.CODE_1007.getCode(), "验证码不能为空");
|
|
}
|
//验证码验证
|
boolean validateResponse = validateResponse(httpRequest, param.getMsgCode());
|
if (!validateResponse) {
|
return new PageResponse<String>(RespCodeEnum.CODE_1007.getCode(), "验证码错误");
|
}
|
//根据手机号查询用户是否已经绑定
|
SysUser user = sysUserService.selectUserByPhoneNumber(param.getMobile());
|
if (user == null || StringUtils.isEmpty(user.getPhonenumber())) {
|
return new PageResponse<String>(RespCodeEnum.CODE_1006.getCode(), "手机号不在系统内,请联系管理员!");
|
|
}
|
|
user.setOpenId("");
|
sysUserService.updateUserInfo(user);
|
|
return new PageResponse<String>(RespCodeEnum.CODE_0000.getCode(), "请求成功");
|
|
}
|
|
public PageResponse<Page<SnapReply>> getSnapReplyPage(WeChatBaseParam param) {
|
|
if (null == param) {
|
return new PageResponse<Page<SnapReply>>(RespCodeEnum.CODE_1007.getCode(), "参数不完整,请核查");
|
}
|
|
SysUser user;
|
|
//微信公众号
|
if (StringUtils.isEmpty(param.getOpenid())) {
|
return new PageResponse<Page<SnapReply>>(RespCodeEnum.CODE_1007.getCode(), "参数不完整,请核查");
|
|
}
|
//根据openid查询用户是否已经绑定
|
user = sysUserService.selectUserByOpenId(param.getOpenid());
|
if (user == null) {
|
return new PageResponse<Page<SnapReply>>(RespCodeEnum.CODE_1006.getCode(), "尚未绑定服务,请先绑定!");
|
|
}
|
//获取业务经理绑定的质押合同
|
List<PledgeContract> dateByUser = pledgeContractService.getDateByUser(String.valueOf(user.getUserId()));
|
if (dateByUser == null || dateByUser.isEmpty()) {
|
//返回空数据
|
return new PageResponse<Page<SnapReply>>(RespCodeEnum.CODE_0000.getCode(), "请求成功", new Page<>(param.getPageNo(), param.getPageSize()));
|
}
|
List<PledgeContractDepot> pledgeContractDepots = new ArrayList<>() ;
|
for (PledgeContract pledgeContract : dateByUser) {
|
String id = pledgeContract.getId();
|
IgdsBaseParam depotPParam = new IgdsBaseParam();
|
depotPParam.setParentId(id);
|
List<PledgeContractDepot> pledgeContractDepots1 = pledgeContractDepotService.listAll(depotPParam);
|
pledgeContractDepots.addAll(pledgeContractDepots1);
|
}
|
if(pledgeContractDepots.isEmpty()){
|
//返回空数据
|
return new PageResponse<Page<SnapReply>>(RespCodeEnum.CODE_0000.getCode(), "请求成功", new Page<>(param.getPageNo(), param.getPageSize()));
|
}
|
|
// 获取pledgeContractDepots中去重后的库区IDList
|
List<String> deptIdList = pledgeContractDepots.stream().map(PledgeContractDepot::getPledgeDept).distinct().collect(Collectors.toList());
|
|
//分页拼接
|
Page<SnapReply> page = new Page<>(param.getPageNo(), param.getPageSize());
|
//查询参数组装
|
IgdsBaseParam queryParam = new IgdsBaseParam();
|
queryParam.setCompanyId(user.getCompanyId());
|
queryParam.setKey(Constant.YN_N);
|
snapReplyService.listPageByListDept(page, queryParam,deptIdList);
|
return new PageResponse<Page<SnapReply>>(RespCodeEnum.CODE_0000.getCode(), "请求成功", page);
|
}
|
|
public PageResponse<SnapReply> getSnapReplyInfoById(WeChatBaseParam param) {
|
|
//判断参数
|
if (null == param || StringUtils.isEmpty(param.getId())) {
|
return new PageResponse<SnapReply>(RespCodeEnum.CODE_1007.getCode(), "参数不完整,请核查");
|
|
}
|
|
SnapReply warn = snapReplyService.getById(param.getId());
|
if (warn == null) {
|
return new PageResponse<SnapReply>(RespCodeEnum.CODE_1007.getCode(), "未获取到该警告信息!");
|
|
}
|
|
return new PageResponse<SnapReply>(RespCodeEnum.CODE_0000.getCode(), "请求成功", warn);
|
|
}
|
|
public PageResponse<String> handleSnapReply(WeChatBaseParam param) {
|
|
//判断参数
|
if (null == param || StringUtils.isEmpty(param.getId())) {
|
return new PageResponse<String>(RespCodeEnum.CODE_1007.getCode(), "参数不完整,请核查");
|
|
}
|
|
//处理时间
|
Date date = new Date();
|
|
// if(StringUtils.isEmpty(companyId)){
|
// companyId = ShiroUtils.getLoginUserCompanyId();
|
// }
|
String info = (String) param.getRemark();
|
String id = param.getId();
|
String userName = param.getUserName();
|
|
//告警处理
|
SnapReply warn = snapReplyService.getById(id);
|
if(Constant.YN_N.equals(warn.getIsHandle())){
|
return new PageResponse<String>(RespCodeEnum.CODE_1008.getCode(), "改告警已处理,无需重复批复!");
|
}
|
warn.setId(id);
|
warn.setUpdateBy(userName);
|
warn.setUpdateTime(date);
|
warn.setIsHandle(Constant.YN_Y);
|
warn.setReplyText(info);
|
warn.setDays(param.getDays());
|
snapReplyService.updateData(warn);
|
|
return new PageResponse<String>(RespCodeEnum.CODE_0000.getCode(), "请求成功");
|
|
}
|
|
}
|