From b11114a77514c0e53ef9adda9018be7512d859ce Mon Sep 17 00:00:00 2001 From: huangdeliang Date: Wed, 21 Apr 2021 16:40:17 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=A8=E6=80=81=E5=BE=AE?= =?UTF-8?q?=E4=BF=A1=E5=A5=BD=E6=8F=90=E5=8F=96=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/custom/SysWapController.java | 47 ++++++++++- .../com/stdiet/custom/domain/SysWxAdLog.java | 23 +++++ .../custom/domain/SysWxSaleAccount.java | 84 +------------------ .../mapper/SysWxDistributionMapper.java | 3 + .../custom/mapper/SysWxSaleAccountMapper.java | 6 ++ .../service/ISysWxDistributionService.java | 3 + .../service/ISysWxSaleAccountService.java | 6 ++ .../impl/SysWxDistributionServiceImpl.java | 2 + .../impl/SysWxSaleAccountServiceImpl.java | 61 +++++++++----- .../stdiet/custom/utils/HttpRequestUtils.java | 47 +++++++++++ .../mapper/custom/SysWxDistributionMapper.xml | 1 + .../custom/SysWxFanStatisticsMapper.xml | 4 +- .../mapper/custom/SysWxSaleAccountMapper.xml | 70 +++++++++++----- 13 files changed, 231 insertions(+), 126 deletions(-) create mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/domain/SysWxAdLog.java create mode 100644 stdiet-custom/src/main/java/com/stdiet/custom/utils/HttpRequestUtils.java diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysWapController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysWapController.java index 63f6ab9b0..aa1eedf24 100644 --- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysWapController.java +++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysWapController.java @@ -2,18 +2,22 @@ package com.stdiet.web.controller.custom; import com.stdiet.common.core.controller.BaseController; import com.stdiet.common.core.domain.AjaxResult; +import com.stdiet.common.utils.DateUtils; import com.stdiet.custom.domain.SysOrderPause; +import com.stdiet.custom.domain.SysWxAdLog; import com.stdiet.custom.service.ISysOrderPauseService; import com.stdiet.custom.service.ISysRecipesService; import com.stdiet.custom.service.ISysWapServices; +import com.stdiet.custom.service.ISysWxSaleAccountService; +import com.stdiet.custom.utils.HttpRequestUtils; import com.stdiet.system.service.ISysDictTypeService; import org.springframework.beans.factory.annotation.Autowired; -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 org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; import java.util.List; +import java.util.Map; @RestController @RequestMapping("/wap") @@ -30,6 +34,9 @@ public class SysWapController extends BaseController { @Autowired ISysOrderPauseService iSysOrderPauseService; + @Autowired + ISysWxSaleAccountService iSysWxSaleAccountService; + /** * 客户食谱详情 * @@ -100,4 +107,36 @@ public class SysWapController extends BaseController { // public void qrcodeRediredt(String group, HttpServletRequest request, HttpServletResponse response) throws IOException { // response.sendRedirect("https://weibo.com/u/1913360251"); // } + + @GetMapping(value = "/wxid") + public AjaxResult getWxId(@RequestParam String cid, @RequestParam String uid, @RequestHeader("User-Agent") String userAgent, HttpServletRequest request) { + SysWxAdLog sysWxAdLog = new SysWxAdLog(); + sysWxAdLog.setUserId(uid); + sysWxAdLog.setIp(HttpRequestUtils.getIpAddr(request)); + sysWxAdLog.setChannelId(cid); + sysWxAdLog.setUserAgent(userAgent); + sysWxAdLog.setType(0); + sysWxAdLog.setDate(DateUtils.getNowDate()); + + Map result = new HashMap<>(); + String wxId = iSysWxSaleAccountService.getWxAdId(sysWxAdLog); + result.put("id", wxId); + + return AjaxResult.success(result); + } + + @GetMapping(value = "/wxid/st") + public AjaxResult logActived(@RequestParam String cid, @RequestParam String uid, @RequestParam String wxid, @RequestHeader("User-Agent") String userAgent, HttpServletRequest request) { + SysWxAdLog sysWxAdLog = new SysWxAdLog(); + sysWxAdLog.setUserId(uid); + sysWxAdLog.setIp(HttpRequestUtils.getIpAddr(request)); + sysWxAdLog.setWxId(wxid); + sysWxAdLog.setChannelId(cid); + sysWxAdLog.setUserAgent(userAgent); + sysWxAdLog.setType(1); + sysWxAdLog.setDate(DateUtils.getNowDate()); + + return toAjax(iSysWxSaleAccountService.logWxAd(sysWxAdLog)); + } + } diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysWxAdLog.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysWxAdLog.java new file mode 100644 index 000000000..a9e9ba7cd --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysWxAdLog.java @@ -0,0 +1,23 @@ +package com.stdiet.custom.domain; + +import lombok.Data; + +import java.util.Date; + +@Data +public class SysWxAdLog { + + private String userId; + + private String ip; + + private String userAgent; + + private String channelId; + + private String wxId; + + private Integer type; + + private Date date; +} diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysWxSaleAccount.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysWxSaleAccount.java index 1bfdb4340..910ad7eaa 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysWxSaleAccount.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysWxSaleAccount.java @@ -1,5 +1,6 @@ package com.stdiet.custom.domain; +import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import com.stdiet.common.annotation.Excel; @@ -11,6 +12,7 @@ import com.stdiet.common.core.domain.BaseEntity; * @author xiezhijun * @date 2021-02-03 */ +@Data public class SysWxSaleAccount extends BaseEntity { private static final long serialVersionUID = 1L; @@ -39,85 +41,7 @@ public class SysWxSaleAccount extends BaseEntity /** 删除标识 0未删除 1已删除,默认0 */ private Integer delFlag; - public void setId(Long id) - { - this.id = id; - } + private Integer status; - public Long getId() - { - return id; - } - public void setWxNickName(String wxNickName) - { - this.wxNickName = wxNickName; - } - - public String getWxNickName() - { - return wxNickName; - } - public void setWxAccount(String wxAccount) - { - this.wxAccount = wxAccount; - } - - public String getWxAccount() - { - return wxAccount; - } - public void setWxPhone(String wxPhone) - { - this.wxPhone = wxPhone; - } - - public String getWxPhone() - { - return wxPhone; - } - public void setWxCodeUrl(String wxCodeUrl) - { - this.wxCodeUrl = wxCodeUrl; - } - - public String getWxCodeUrl() - { - return wxCodeUrl; - } - public void setWxType(Integer wxType) - { - this.wxType = wxType; - } - - public Integer getWxType() - { - return wxType; - } - public void setDelFlag(Integer delFlag) - { - this.delFlag = delFlag; - } - - public Integer getDelFlag() - { - return delFlag; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("id", getId()) - .append("wxNickName", getWxNickName()) - .append("wxAccount", getWxAccount()) - .append("wxPhone", getWxPhone()) - .append("wxCodeUrl", getWxCodeUrl()) - .append("remark", getRemark()) - .append("wxType", getWxType()) - .append("createTime", getCreateTime()) - .append("createBy", getCreateBy()) - .append("updateTime", getUpdateTime()) - .append("updateBy", getUpdateBy()) - .append("delFlag", getDelFlag()) - .toString(); - } + private Integer useCount; } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysWxDistributionMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysWxDistributionMapper.java index 60bdb4a72..7fbcefe41 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysWxDistributionMapper.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysWxDistributionMapper.java @@ -1,6 +1,8 @@ package com.stdiet.custom.mapper; import java.util.List; + +import com.stdiet.custom.domain.SysWxAdLog; import com.stdiet.custom.domain.SysWxDistribution; import org.apache.ibatis.annotations.Param; @@ -73,4 +75,5 @@ public interface SysWxDistributionMapper * @return */ List selectDistributionWxByUserId(@Param("userId")Long userId); + } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysWxSaleAccountMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysWxSaleAccountMapper.java index b605e8018..7835353f0 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysWxSaleAccountMapper.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysWxSaleAccountMapper.java @@ -1,6 +1,8 @@ package com.stdiet.custom.mapper; import java.util.List; + +import com.stdiet.custom.domain.SysWxAdLog; import com.stdiet.custom.domain.SysWxSaleAccount; /** @@ -65,4 +67,8 @@ public interface SysWxSaleAccountMapper * @return */ SysWxSaleAccount selectWxAccountByAccountOrPhone(SysWxSaleAccount sysWxSaleAccount); + + SysWxSaleAccount selectWxAdId(); + + int insertWxAdLog(SysWxAdLog sysWxAdLog); } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysWxDistributionService.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysWxDistributionService.java index b11770240..8f67fc987 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysWxDistributionService.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysWxDistributionService.java @@ -1,6 +1,8 @@ package com.stdiet.custom.service; import java.util.List; + +import com.stdiet.custom.domain.SysWxAdLog; import com.stdiet.custom.domain.SysWxDistribution; /** @@ -72,4 +74,5 @@ public interface ISysWxDistributionService * @return */ List selectDistributionWxByUserId(Long userId); + } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysWxSaleAccountService.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysWxSaleAccountService.java index 66aff4ba0..88a4d16fd 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysWxSaleAccountService.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysWxSaleAccountService.java @@ -1,6 +1,8 @@ package com.stdiet.custom.service; import java.util.List; + +import com.stdiet.custom.domain.SysWxAdLog; import com.stdiet.custom.domain.SysWxSaleAccount; /** @@ -66,4 +68,8 @@ public interface ISysWxSaleAccountService * @return */ SysWxSaleAccount selectWxAccountByAccountOrPhone(String accountOrPhone, int type); + + String getWxAdId(SysWxAdLog sysWxAdLog); + + Integer logWxAd(SysWxAdLog sysWxAdLog); } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysWxDistributionServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysWxDistributionServiceImpl.java index 7d992a7f1..0614f4c57 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysWxDistributionServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysWxDistributionServiceImpl.java @@ -2,6 +2,7 @@ package com.stdiet.custom.service.impl; import java.util.List; import com.stdiet.common.utils.DateUtils; +import com.stdiet.custom.domain.SysWxAdLog; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.stdiet.custom.mapper.SysWxDistributionMapper; @@ -112,4 +113,5 @@ public class SysWxDistributionServiceImpl implements ISysWxDistributionService public List selectDistributionWxByUserId(Long userId){ return sysWxDistributionMapper.selectDistributionWxByUserId(userId); } + } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysWxSaleAccountServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysWxSaleAccountServiceImpl.java index 042189aed..e060d7a45 100644 --- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysWxSaleAccountServiceImpl.java +++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysWxSaleAccountServiceImpl.java @@ -1,13 +1,15 @@ package com.stdiet.custom.service.impl; -import java.util.List; import com.stdiet.common.utils.DateUtils; import com.stdiet.common.utils.StringUtils; +import com.stdiet.custom.domain.SysWxAdLog; +import com.stdiet.custom.domain.SysWxSaleAccount; +import com.stdiet.custom.mapper.SysWxSaleAccountMapper; +import com.stdiet.custom.service.ISysWxSaleAccountService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import com.stdiet.custom.mapper.SysWxSaleAccountMapper; -import com.stdiet.custom.domain.SysWxSaleAccount; -import com.stdiet.custom.service.ISysWxSaleAccountService; + +import java.util.List; /** * 微信账号Service业务层处理 @@ -16,8 +18,7 @@ import com.stdiet.custom.service.ISysWxSaleAccountService; * @date 2021-02-03 */ @Service -public class SysWxSaleAccountServiceImpl implements ISysWxSaleAccountService -{ +public class SysWxSaleAccountServiceImpl implements ISysWxSaleAccountService { @Autowired private SysWxSaleAccountMapper sysWxSaleAccountMapper; @@ -28,8 +29,7 @@ public class SysWxSaleAccountServiceImpl implements ISysWxSaleAccountService * @return 微信账号 */ @Override - public SysWxSaleAccount selectSysWxSaleAccountById(Long id) - { + public SysWxSaleAccount selectSysWxSaleAccountById(Long id) { return sysWxSaleAccountMapper.selectSysWxSaleAccountById(id); } @@ -40,8 +40,7 @@ public class SysWxSaleAccountServiceImpl implements ISysWxSaleAccountService * @return 微信账号 */ @Override - public List selectSysWxSaleAccountList(SysWxSaleAccount sysWxSaleAccount) - { + public List selectSysWxSaleAccountList(SysWxSaleAccount sysWxSaleAccount) { return sysWxSaleAccountMapper.selectSysWxSaleAccountList(sysWxSaleAccount); } @@ -52,8 +51,7 @@ public class SysWxSaleAccountServiceImpl implements ISysWxSaleAccountService * @return 结果 */ @Override - public int insertSysWxSaleAccount(SysWxSaleAccount sysWxSaleAccount) - { + public int insertSysWxSaleAccount(SysWxSaleAccount sysWxSaleAccount) { sysWxSaleAccount.setCreateTime(DateUtils.getNowDate()); return sysWxSaleAccountMapper.insertSysWxSaleAccount(sysWxSaleAccount); } @@ -65,8 +63,7 @@ public class SysWxSaleAccountServiceImpl implements ISysWxSaleAccountService * @return 结果 */ @Override - public int updateSysWxSaleAccount(SysWxSaleAccount sysWxSaleAccount) - { + public int updateSysWxSaleAccount(SysWxSaleAccount sysWxSaleAccount) { sysWxSaleAccount.setUpdateTime(DateUtils.getNowDate()); return sysWxSaleAccountMapper.updateSysWxSaleAccount(sysWxSaleAccount); } @@ -78,8 +75,7 @@ public class SysWxSaleAccountServiceImpl implements ISysWxSaleAccountService * @return 结果 */ @Override - public int deleteSysWxSaleAccountByIds(Long[] ids) - { + public int deleteSysWxSaleAccountByIds(Long[] ids) { return sysWxSaleAccountMapper.deleteSysWxSaleAccountByIds(ids); } @@ -90,25 +86,46 @@ public class SysWxSaleAccountServiceImpl implements ISysWxSaleAccountService * @return 结果 */ @Override - public int deleteSysWxSaleAccountById(Long id) - { + public int deleteSysWxSaleAccountById(Long id) { return sysWxSaleAccountMapper.deleteSysWxSaleAccountById(id); } /** * 根据微信号或手机号查询是否已存在 + * * @param accountOrPhone 手机号或微信号 - * @param type 0微信号 1手机号 + * @param type 0微信号 1手机号 * @return */ @Override - public SysWxSaleAccount selectWxAccountByAccountOrPhone(String accountOrPhone, int type){ + public SysWxSaleAccount selectWxAccountByAccountOrPhone(String accountOrPhone, int type) { SysWxSaleAccount param = new SysWxSaleAccount(); - if(type == 0){ + if (type == 0) { param.setWxAccount(accountOrPhone); - }else{ + } else { param.setWxPhone(accountOrPhone); } return sysWxSaleAccountMapper.selectWxAccountByAccountOrPhone(param); } + + @Override + public String getWxAdId(SysWxAdLog sysWxAdLog) { + SysWxSaleAccount sysWxSaleAccount = sysWxSaleAccountMapper.selectWxAdId(); + if (StringUtils.isNotNull(sysWxSaleAccount)) { + sysWxSaleAccount.setUseCount(sysWxSaleAccount.getUseCount() + 1); + int rows = sysWxSaleAccountMapper.updateSysWxSaleAccount(sysWxSaleAccount); + if (rows > 0) { + String wxId = sysWxSaleAccount.getWxAccount(); + sysWxAdLog.setWxId(wxId); + logWxAd(sysWxAdLog); + return wxId; + } + } + return null; + } + + @Override + public Integer logWxAd(SysWxAdLog sysWxAdLog) { + return sysWxSaleAccountMapper.insertWxAdLog(sysWxAdLog); + } } \ No newline at end of file diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/utils/HttpRequestUtils.java b/stdiet-custom/src/main/java/com/stdiet/custom/utils/HttpRequestUtils.java new file mode 100644 index 000000000..25ee66610 --- /dev/null +++ b/stdiet-custom/src/main/java/com/stdiet/custom/utils/HttpRequestUtils.java @@ -0,0 +1,47 @@ +package com.stdiet.custom.utils; + +import javax.servlet.http.HttpServletRequest; +import java.net.InetAddress; +import java.net.UnknownHostException; + +public class HttpRequestUtils { + + public static String getIpAddr(HttpServletRequest request) { + String ipAddress = null; + try { + ipAddress = request.getHeader("x-forwarded-for"); + if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getHeader("Proxy-Client-IP"); + } + if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getHeader("WL-Proxy-Client-IP"); + } + if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getRemoteAddr(); + if (ipAddress.equals("127.0.0.1")) { + // 根据网卡取本机配置的IP + InetAddress inet = null; + try { + inet = InetAddress.getLocalHost(); + } catch (UnknownHostException e) { + e.printStackTrace(); + } + ipAddress = inet.getHostAddress(); + } + } + // 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割 + if (ipAddress != null && ipAddress.length() > 15) { // "***.***.***.***".length() + // = 15 + if (ipAddress.indexOf(",") > 0) { + ipAddress = ipAddress.substring(0, ipAddress.indexOf(",")); + } + } + } catch (Exception e) { + ipAddress = ""; + } + // ipAddress = this.getRequest().getRemoteAddr(); + + return ipAddress; + } + +} diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysWxDistributionMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysWxDistributionMapper.xml index 3fe2b2568..7394d399f 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysWxDistributionMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysWxDistributionMapper.xml @@ -123,4 +123,5 @@ lEFT JOIN sys_wx_sale_account swsa ON swsa.id = swd.wechat_account and swsa.del_flag = 0 where swd.del_flag = 0 and swd.user_id = #{userId} order by swd.id asc + \ No newline at end of file diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysWxFanStatisticsMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysWxFanStatisticsMapper.xml index 12043bb40..0fc01ba26 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysWxFanStatisticsMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysWxFanStatisticsMapper.xml @@ -58,7 +58,8 @@ diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysWxSaleAccountMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysWxSaleAccountMapper.xml index 83a5e355d..4c763fdd2 100644 --- a/stdiet-custom/src/main/resources/mapper/custom/SysWxSaleAccountMapper.xml +++ b/stdiet-custom/src/main/resources/mapper/custom/SysWxSaleAccountMapper.xml @@ -5,18 +5,20 @@ - - - - - - - - - - - - + + + + + + + + + + + + + + @@ -24,10 +26,11 @@ @@ -80,6 +83,8 @@ update_time = #{updateTime}, update_by = #{updateBy}, del_flag = #{delFlag}, + status = #{status}, + use_count = #{useCount}, where id = #{id} @@ -96,10 +101,37 @@ + + + + insert into sys_wx_ad_logs + + user_id, + ip, + user_agent, + channel_id, + wx_id, + type, + date, + + + #{userId}, + #{ip}, + #{userAgent}, + #{channelId}, + #{wxId}, + #{type}, + #{date}, + + + \ No newline at end of file