zhijiezhao 2 years ago
parent
commit
a6c0abed61

+ 3 - 1
src/main/java/com/caimei365/tools/mapper/BaseMapper.java

@@ -103,7 +103,7 @@ public interface BaseMapper {
 
     void uplinkageFrequencyById(Integer id, Integer linkageFrequency, Integer frequency, Integer delStatus);
 
-    Integer findKeywordId(String keyword);
+    SearchFrequencyVo findKeywordId(String keyword);
 
     void updateKeywordTimes(Integer id);
 
@@ -118,4 +118,6 @@ public interface BaseMapper {
     SysUser findUserNameById(String id);
 
     List<String> getRoleNamesByUserId(Integer id);
+
+    void updateKeywordRecommend(Integer id);
 }

+ 5 - 0
src/main/java/com/caimei365/tools/model/po/SearchFrequencyVo.java

@@ -35,4 +35,9 @@ public class SearchFrequencyVo {
      * 联动搜索次数
      */
     private Integer linkageFrequency;
+    /**
+     * 推荐状态:0未推荐,1已推荐
+     */
+    private Integer recommendStatus;
 }
+

+ 32 - 30
src/main/java/com/caimei365/tools/service/impl/CmBehaviorRecordServiceImpl.java

@@ -31,7 +31,8 @@ import java.util.*;
 @Service
 public class CmBehaviorRecordServiceImpl implements CmBehaviorRecordService {
 
-    @Autowired private CmBehaviorRecordMapper recordMapper;
+    @Autowired
+    private CmBehaviorRecordMapper recordMapper;
 
     @Override
     public void insertRecord(IpSavePo ipSavePo) {
@@ -51,14 +52,14 @@ public class CmBehaviorRecordServiceImpl implements CmBehaviorRecordService {
                     String str = s.trim();
                     // 页面路径
                     if (str.startsWith("pagePath") && str.contains("=")) {
-                        String[] split1 = str.split(str.substring(str.indexOf("="),str.indexOf("=")+1),2);
+                        String[] split1 = str.split(str.substring(str.indexOf("="), str.indexOf("=") + 1), 2);
                         if (split1.length > 1) {
                             String value = split1[1];
                             String trim = value.trim();
                             if (StringUtils.isNotBlank(trim)) {
                                 String decode = null;
                                 try {
-                                    decode = java.net.URLDecoder.decode(trim,"UTF-8");
+                                    decode = java.net.URLDecoder.decode(trim, "UTF-8");
                                     if (decode.contains("%")) {
                                         decode = java.net.URLDecoder.decode(decode, "UTF-8");
                                     }
@@ -69,7 +70,7 @@ public class CmBehaviorRecordServiceImpl implements CmBehaviorRecordService {
                             }
                             if (StringUtils.isEmpty(cmBehaviorRecordPo.getPagePath())) {
                                 log.info("页面路径pagePath 值为====》" + trim);
-                                return ;
+                                return;
                             }
                         }
                     }
@@ -192,7 +193,7 @@ public class CmBehaviorRecordServiceImpl implements CmBehaviorRecordService {
                             String value = split1[1];
                             String trim = value.trim();
                             if (StringUtils.isNotBlank(trim)) {
-                                log.info("userAgent============》"+trim);
+                                log.info("userAgent============》" + trim);
                                 // 浏览器userAgent
                                 cmBehaviorRecordPo.setUserAgent(trim);
                                 if (boolReptiles(trim)) {
@@ -265,13 +266,13 @@ public class CmBehaviorRecordServiceImpl implements CmBehaviorRecordService {
         cmBehaviorRecordPo.setAccessDate(format);
         // 当天访问系统ip和userID
         List<CmBehaviorRecordPo> recordPos = recordMapper.toDateRecode(cmBehaviorRecordPo);
-        for (CmBehaviorRecordPo behaviorRecordPo: recordPos) {
+        for (CmBehaviorRecordPo behaviorRecordPo : recordPos) {
             SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
             // 当前时间
             String timeEnd = dateFormat.format(date);
             //  一小时前时间
             Calendar c = Calendar.getInstance();
-            c.set(Calendar.HOUR_OF_DAY,(c.get(Calendar.HOUR_OF_DAY) - 1));
+            c.set(Calendar.HOUR_OF_DAY, (c.get(Calendar.HOUR_OF_DAY) - 1));
             String timeStart = dateFormat.format(c.getTime());
 
             behaviorRecordPo.setStartTime(timeStart);
@@ -281,10 +282,10 @@ public class CmBehaviorRecordServiceImpl implements CmBehaviorRecordService {
             if (recordPoList.size() <= 0) {
                 continue;
             }
-            for (int i = 0; i < recordPoList.size() ; i++) {
+            for (int i = 0; i < recordPoList.size(); i++) {
                 if (i != recordPoList.size() - 1) {
                     t1 = recordPoList.get(i).getAccessTime().getTime();
-                    t2 = recordPoList.get(i+1).getAccessTime().getTime();
+                    t2 = recordPoList.get(i + 1).getAccessTime().getTime();
                     duration = t2 - t1;
                     // 修改实际访问时长
                     cmBehaviorRecord.setRecordID(recordPoList.get(i).getRecordID());
@@ -298,9 +299,9 @@ public class CmBehaviorRecordServiceImpl implements CmBehaviorRecordService {
 
     @Override
     public void setIpAddress(Integer startId, Integer endId) throws IOException {
-        List<CmUserPo> list = recordMapper.findList(startId,endId);
+        List<CmUserPo> list = recordMapper.findList(startId, endId);
         String region = "";
-        for (CmUserPo user: list) {
+        for (CmUserPo user : list) {
             try {
                 // 获取ip所在地
                 region = recordIp(user.getRegisterIP());
@@ -319,13 +320,13 @@ public class CmBehaviorRecordServiceImpl implements CmBehaviorRecordService {
         Date date = new Date();
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(date);
-        calendar.add(Calendar.DAY_OF_MONTH,-1);
+        calendar.add(Calendar.DAY_OF_MONTH, -1);
         Date time = calendar.getTime();
         String format = dateFormat.format(time);
         // 前一天数据身份中是否只有 机构-游客、供应商-游客
         List<CmBehaviorRecordPo> countNumList = recordMapper.countNum(format);
         if (countNumList.size() != 0 && countNumList != null) {
-            for (CmBehaviorRecordPo countNum: countNumList) {
+            for (CmBehaviorRecordPo countNum : countNumList) {
                 if (countNum.getCount() == 2) {
                     // 查询机构/供应商ip、userID,用于调整游客数据
                     CmBehaviorRecordPo recordPo = recordMapper.userIdAcc(countNum.getIP(), format);
@@ -350,7 +351,7 @@ public class CmBehaviorRecordServiceImpl implements CmBehaviorRecordService {
         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(new Date());
-        calendar.add(Calendar.DAY_OF_MONTH,-1);
+        calendar.add(Calendar.DAY_OF_MONTH, -1);
         Date time = calendar.getTime();
         String format = dateFormat.format(time);
 
@@ -400,12 +401,12 @@ public class CmBehaviorRecordServiceImpl implements CmBehaviorRecordService {
         int id = 1;
         // 所有用户供应商数据
         List<CmBehaviorRecordPo> selDataList = recordMapper.selDataList(format);
-        for (CmBehaviorRecordPo data: todayData ){
+        for (CmBehaviorRecordPo data : todayData) {
             ArrayList<String> item = new ArrayList();
             ArrayList<String> shopNames = new ArrayList();
             int num = 0;
             data.setRecordID(id);
-            id ++;
+            id++;
             for (CmBehaviorRecordPo recordPo : selDataList) {
                 if (recordPo.getIP().equals(data.getIP()) && recordPo.getUserId().equals(data.getUserId())) {
                     // 标签信息
@@ -436,22 +437,22 @@ public class CmBehaviorRecordServiceImpl implements CmBehaviorRecordService {
         String text = "";
         String line = "";
         String region = "";
-        String urlStr = "http://whois.pconline.com.cn/ipJson.jsp?ip="+ip+"&json=true";
+        String urlStr = "http://whois.pconline.com.cn/ipJson.jsp?ip=" + ip + "&json=true";
         try {
             url = new URL(urlStr);
-            connection = (HttpURLConnection) url.openConnection();	//新建链接实例
-            connection.setConnectTimeout(20000);	//设置链接超时时间,单位毫秒
-            connection.setReadTimeout(20000);		//设置读取数据超时时间,单位毫秒
-            connection.setDoOutput(true);		//是否打开输出流true|false
-            connection.setDoInput(true);		//是否打开输入流true|false
-            connection.setRequestMethod("GET");		// 提交方式get|post
-            connection.setUseCaches(false);		// 是否加入缓存true|false
-            connection.connect();	//打开链接端口
+            connection = (HttpURLConnection) url.openConnection();    //新建链接实例
+            connection.setConnectTimeout(20000);    //设置链接超时时间,单位毫秒
+            connection.setReadTimeout(20000);        //设置读取数据超时时间,单位毫秒
+            connection.setDoOutput(true);        //是否打开输出流true|false
+            connection.setDoInput(true);        //是否打开输入流true|false
+            connection.setRequestMethod("GET");        // 提交方式get|post
+            connection.setUseCaches(false);        // 是否加入缓存true|false
+            connection.connect();    //打开链接端口
 
-            BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), encoding));	// 往对端写完数据对端服务器返回数据。以BufferedReader流来读取
+            BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), encoding));    // 往对端写完数据对端服务器返回数据。以BufferedReader流来读取
 
             while ((line = reader.readLine()) != null) {
-                text += line+"\n";
+                text += line + "\n";
             }
             reader.close();
 
@@ -461,7 +462,7 @@ public class CmBehaviorRecordServiceImpl implements CmBehaviorRecordService {
             e.printStackTrace();
         } finally {
             if (connection != null) {
-                connection.disconnect();	//关闭连接
+                connection.disconnect();    //关闭连接
             }
         }
         return region;
@@ -497,10 +498,11 @@ public class CmBehaviorRecordServiceImpl implements CmBehaviorRecordService {
         }
         return null;
     }
+
     private boolean boolReptiles(String userAgent) {
         if (userAgent.contains("serpstatbot") || userAgent.contains("spider") || userAgent.contains("Googlebot") || userAgent.contains("bingbot")
-            || userAgent.contains("SeznamBot") || userAgent.contains("YisouSpider") || userAgent.contains("petalbot") || userAgent.contains("YandexBot")
-            || userAgent.contains("AhrefsBot")) {
+                || userAgent.contains("SeznamBot") || userAgent.contains("YisouSpider") || userAgent.contains("petalbot") || userAgent.contains("YandexBot")
+                || userAgent.contains("AhrefsBot")) {
             return true;
         }
         return false;

+ 12 - 11
src/main/java/com/caimei365/tools/service/impl/CmOrganValueSystemServiceImpl.java

@@ -20,7 +20,8 @@ import java.util.List;
 @Service
 public class CmOrganValueSystemServiceImpl implements CmOrganValueSystemService {
 
-    @Resource private CmOrganValueSystemMapper cmOrganValueSystemMapper;
+    @Resource
+    private CmOrganValueSystemMapper cmOrganValueSystemMapper;
 
 
     @Override
@@ -48,29 +49,29 @@ public class CmOrganValueSystemServiceImpl implements CmOrganValueSystemService
         cmOrganValueSystemMapper.updateOrgan();
 
         log.info("插入--------------------------------》");
-        for(CmOrganValueSystemPo organValueSystem: customerValue) {
+        for (CmOrganValueSystemPo organValueSystem : customerValue) {
 
             CmOrganValueSystemPo systemPo = new CmOrganValueSystemPo();
             // 判断用户活跃状态
-            if(newAdd.contains(organValueSystem.getUserID())) {
+            if (newAdd.contains(organValueSystem.getUserID())) {
                 systemPo.setActiveState("新增用户");
             }
-            if(active.contains(organValueSystem.getUserID())) {
+            if (active.contains(organValueSystem.getUserID())) {
                 systemPo.setActiveState("活跃用户");
             }
-            if(inactive.contains(organValueSystem.getUserID())) {
+            if (inactive.contains(organValueSystem.getUserID())) {
                 systemPo.setActiveState("不活跃用户");
             }
-            if(loss.contains(organValueSystem.getUserID())) {
+            if (loss.contains(organValueSystem.getUserID())) {
                 systemPo.setActiveState("流失用户");
             }
-            if(backflow.contains(organValueSystem.getUserID())) {
+            if (backflow.contains(organValueSystem.getUserID())) {
                 systemPo.setActiveState("回流用户");
             }
-            if(loyal.contains(organValueSystem.getUserID())) {
+            if (loyal.contains(organValueSystem.getUserID())) {
                 systemPo.setActiveState("忠诚用户");
             }
-            if(silent.contains(organValueSystem.getUserID())) {
+            if (silent.contains(organValueSystem.getUserID())) {
                 systemPo.setActiveState("沉默用户");
             }
 
@@ -78,9 +79,9 @@ public class CmOrganValueSystemServiceImpl implements CmOrganValueSystemService
             // 距今时间
             Integer orderTimeDay = organValueSystem.getOrderTime();
             // 购买频率
-            Double number = organValueSystem.getNumber()/24;
+            Double number = organValueSystem.getNumber() / 24;
             // 交易金额
-            Double payableAmount = organValueSystem.getPayableAmount()/24;
+            Double payableAmount = organValueSystem.getPayableAmount() / 24;
             if (orderTimeDay > 60 && number >= 1 && payableAmount < 100000) {
                 systemPo.setCustomerValue("一般保持客户");
             }

+ 2 - 1
src/main/java/com/caimei365/tools/service/impl/CmRepurchaseFrequencyServiceImpl.java

@@ -19,7 +19,8 @@ import java.util.Date;
 @Service
 public class CmRepurchaseFrequencyServiceImpl implements CmRepurchaseFrequencyService {
 
-    @Resource private CmRepurchaseFrequencyMapper cmRepurchaseFrequencyMapper;
+    @Resource
+    private CmRepurchaseFrequencyMapper cmRepurchaseFrequencyMapper;
 
     @Override
     public void insertRepurchase() {

+ 8 - 7
src/main/java/com/caimei365/tools/service/impl/CmVipCouponServiceImpl.java

@@ -30,6 +30,7 @@ public class CmVipCouponServiceImpl implements CmVipCouponService {
 
     @Autowired
     private CmBehaviorRecordMapper cmBehaviorRecordMapper;
+
     /**
      * 放开优惠券,创建下季度优惠券
      */
@@ -40,7 +41,7 @@ public class CmVipCouponServiceImpl implements CmVipCouponService {
         String startTime = simpleDateFormat.format(date);
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(date);
-        calendar.add(Calendar.MONTH,3);
+        calendar.add(Calendar.MONTH, 3);
         Date time = calendar.getTime();
         String endTime = simpleDateFormat.format(time);
         CmVipCouponPo vipCouponPo = new CmVipCouponPo();
@@ -60,20 +61,20 @@ public class CmVipCouponServiceImpl implements CmVipCouponService {
         }
         // 修改专属优惠券配置中优惠券的有效时间
         calendar.setTime(time);
-        calendar.add(Calendar.MONTH,2);
-        Date times =calendar.getTime();
+        calendar.add(Calendar.MONTH, 2);
+        Date times = calendar.getTime();
         String formatTime = simpleDateFormat.format(times);
         Date startDate = getMinDay(endTime);
         Date endDate = getMaxDay(formatTime);
         CmCouponAssociatePo associatePo = new CmCouponAssociatePo();
         List<CmCouponPo> cmCouponPoList = cmBehaviorRecordMapper.selCoupon();
-        for (CmCouponPo cmCouponPo: cmCouponPoList) {
+        for (CmCouponPo cmCouponPo : cmCouponPoList) {
 
             cmCouponPo.setConfigure(0);
             // 修改优惠券配置属性
             cmBehaviorRecordMapper.updateCoupon(cmCouponPo);
             // 插入专属优惠券配置中优惠券
-            cmCouponPo.setName("超级会员优惠券"+endTime);
+            cmCouponPo.setName("超级会员优惠券" + endTime);
             cmCouponPo.setStartDate(startDate);
             cmCouponPo.setEndDate(endDate);
             cmCouponPo.setConfigure(1);
@@ -98,7 +99,7 @@ public class CmVipCouponServiceImpl implements CmVipCouponService {
         Integer cmVipCouponPoId = cmBehaviorRecordMapper.selSvipCouponById();
         List<CmCouponPo> cmCouponPos = cmBehaviorRecordMapper.selCoupon();
         if (cmVipCouponPoId != 0 && cmVipCouponPoId != null) {
-            for (int i = 0; i < cmCouponPos.size() ; i++) {
+            for (int i = 0; i < cmCouponPos.size(); i++) {
                 relation.setCouponId(cmCouponPos.get(i).getId());
                 relation.setMontId(cmVipCouponPoId.toString());
                 relation.setDelFlag("0");
@@ -135,7 +136,7 @@ public class CmVipCouponServiceImpl implements CmVipCouponService {
             calendar = Calendar.getInstance();
             calendar.setTime(nowDate);
             calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
-            calendar.add(Calendar.DAY_OF_MONTH,1);
+            calendar.add(Calendar.DAY_OF_MONTH, 1);
             return calendar.getTime();
         } catch (ParseException e) {
             e.printStackTrace();

+ 2 - 1
src/main/java/com/caimei365/tools/service/impl/InfoIncludedServiceImpl.java

@@ -16,7 +16,8 @@ import javax.annotation.Resource;
 @Service
 public class InfoIncludedServiceImpl implements InfoIncludedService {
 
-    @Resource private InfoIncludedMapper infoIncludedMapper;
+    @Resource
+    private InfoIncludedMapper infoIncludedMapper;
 
     @Override
     public void inData(InfoIncludedPo infoIncluded) {

+ 10 - 6
src/main/java/com/caimei365/tools/service/impl/ProductServiceImpl.java

@@ -39,12 +39,16 @@ public class ProductServiceImpl implements ProductService {
          * cm_user_search_frequency中keyword为唯一,表中已有添加一次frequency,表中没有则新增,修改时刷新searchTime 最近一次搜索时间
          */
         SearchFrequencyVo sea = new SearchFrequencyVo();
-        Integer id = baseMapper.findKeywordId(keyword);
-        if (null != id) {
-            //已存在改次数,不存在插入
-            baseMapper.updateKeywordTimes(id);
-            sea.setId(id);
-        }else{
+        SearchFrequencyVo id = baseMapper.findKeywordId(keyword);
+        if (id != null) {
+            //已存在改次数,不存在插入 如果加上本次查询,有三次,则立即修改推荐标记,置入推荐列表
+            if (id.getFrequency() >= 2 && id.getRecommendStatus() != 1) {
+                baseMapper.updateKeywordRecommend(id.getId());
+            } else {
+                baseMapper.updateKeywordTimes(id.getId());
+            }
+            sea.setId(id.getId());
+        } else {
             sea.setFrequency(1);
             sea.setKeyword(keyword);
             baseMapper.saveInfo(sea);

+ 16 - 7
src/main/resources/mapper/BaseMapper.xml

@@ -136,8 +136,8 @@
           and trueStatus = #{trueStutas}
     </select>
 
-    <select id="findKeywordId" resultType="java.lang.Integer">
-        select id
+    <select id="findKeywordId" resultType="com.caimei365.tools.model.po.SearchFrequencyVo">
+        select id, frequency, recommendStatus
         from cm_user_search_frequency
         where keyword = #{keyword}
           and delStatus = 1
@@ -145,15 +145,16 @@
     </select>
 
     <select id="findUserNameById" resultType="com.caimei365.tools.model.po.SysUser">
-        select ssr.systemId as id,su.username as username
+        select ssr.systemId as id, su.username as username
         from sys_system_role ssr
-                 left join system_user su on ssr.systemId=su.id
-        where ssr.sysId=#{id}
+                 left join system_user su on ssr.systemId = su.id
+        where ssr.sysId = #{id}
     </select>
 
     <select id="getRoleNamesByUserId" resultType="java.lang.String">
-        SELECT DISTINCT r.role_name FROM system_role r
-        LEFT JOIN system_role_user ru ON r.id = ru.role_id
+        SELECT DISTINCT r.role_name
+        FROM system_role r
+                 LEFT JOIN system_role_user ru ON r.id = ru.role_id
         WHERE ru.user_id = #{userId}
     </select>
 
@@ -204,6 +205,14 @@
         </foreach>
     </update>
 
+    <update id="updateKeywordRecommend">
+        UPDATE cm_user_search_frequency
+        SET frequency       = frequency + 1,
+            recommendStatus = 1,
+            searchtime      = NOW()
+        WHERE id = #{id}
+    </update>
+
     <insert id="saveInfo" parameterType="com.caimei365.tools.model.po.SearchFrequencyVo" useGeneratedKeys="true"
             keyProperty="id">
         insert into cm_user_search_frequency(keyword, frequency, searchTime)