Răsfoiți Sursa

Merge branch 'master' of http://116.63.33.55/git/zfjyjgfwpt

ljh 3 ani în urmă
părinte
comite
4fac68c87b

+ 1 - 21
VirtualInterface/getUnofficialEntrustClinchNumList.json

@@ -2,7 +2,7 @@
   "type": "success",
   "data": {
     "msg": "成功",
-    "count": 10,
+    "count": 5,
     "data": [
       {
         "DWQCH": "李成",
@@ -23,26 +23,6 @@
       {
         "DWQCH": "李成",
         "FYSL": 451
-      },
-      {
-        "DWQCH": "李成",
-        "FYSL": 451
-      },
-      {
-        "DWQCH": "李成",
-        "FYSL": 451
-      },
-      {
-        "DWQCH": "李成",
-        "FYSL": 451
-      },
-      {
-        "DWQCH": "李成",
-        "FYSL": 451
-      },
-      {
-        "DWQCH": "李成",
-        "FYSL": 451
       }
     ]
   }

+ 63 - 0
src/main/java/com/jd/zfjyjgfwpt/controller/FrontController.java

@@ -14,6 +14,7 @@ import com.jd.zfjyjgfwpt.configer.TrialConfigs;
 import com.jd.zfjyjgfwpt.entity.ApiResponse;
 import com.jd.zfjyjgfwpt.entity.PagingInfo;
 import com.jd.zfjyjgfwpt.entity.PagingResponse;
+import com.jd.zfjyjgfwpt.entity.TradeRecord;
 import com.jd.zfjyjgfwpt.entity.ykb.TrialSession;
 import com.jd.zfjyjgfwpt.service.CaptchaService;
 import com.jd.zfjyjgfwpt.service.FrontServiceI;
@@ -815,4 +816,66 @@ public class FrontController extends BaseController {
         final PagingResponse<Object> pagingResponse = service.getCompanyStoreInfoListById(params);
         writeJson(pagingResponse);
     }
+
+    @PostMapping("appraise")
+    public void appraise(TradeRecord tradeRec, String phone, String verifyCode, Integer satisfaction, String content) {
+        if (Blank.isEmpty(phone, verifyCode, satisfaction, content) || tradeRec.isEmpty()) {
+            sendJson(false, ConstString.REQUEST_WRONGPARAMS, null);
+            return;
+        }
+
+        // 校验验证码
+        String storeCode = Convert.toStr(redisTemplate.opsForValue().get(projectConfig.getRedisSavePhoneNumPrefix() + phone));
+        if (!verifyCode.equals(storeCode)) {
+            sendJson(false, "输入的验证码不正确!", null);
+            return;
+        }
+
+        Map<String, Object> map = new HashMap<>();
+        map.put("phone", phone);
+        map.put("satisfaction", satisfaction);
+        map.put("content", content);
+
+        sendJson(service.appraise(map, tradeRec), "", null);
+    }
+
+    /**
+     *
+     * @param tradeRec type=2时,id=tradeRec.id,name=tradeRec.address(非必须)
+     * @param phone
+     * @param verifyCode
+     * @param content
+     * @param type 投诉类型(0:公司,1:经纪人,2:交易记录)
+     * @param id 被投诉方ID(type=0:社会统一信用代码;type=1:从业人员编号)
+     * @param name 被投诉方名称(type=0:公司名称;type=1:经纪人名称)
+     */
+    @PostMapping("complaint")
+    public void complaint(TradeRecord tradeRec, String phone, String verifyCode, String content, Integer type, String respondentId, String respondentName) {
+        if (Blank.isEmpty(phone, verifyCode, content, type)) {
+            sendJson(false, ConstString.REQUEST_WRONGPARAMS, null);
+            return;
+        }
+
+        if ((type == 2 && tradeRec.isEmpty()) || (type != 2 && Blank.isEmpty(respondentId, respondentName))) {
+            sendJson(false, ConstString.REQUEST_WRONGPARAMS, null);
+            return;
+        }
+
+        // 校验验证码
+        String storeCode = Convert.toStr(redisTemplate.opsForValue().get(projectConfig.getRedisSavePhoneNumPrefix() + phone));
+        if (!verifyCode.equals(storeCode)) {
+            sendJson(false, "输入的验证码不正确!", null);
+            return;
+        }
+
+        Map<String, Object> map = new HashMap<>();
+        map.put("phone", phone);
+        map.put("content", content);
+        map.put("type", type);
+        map.put("id", respondentId);
+        map.put("name", respondentName);
+
+        sendJson(service.complaint(map, tradeRec), "", null);
+
+    }
 }

+ 2 - 2
src/main/java/com/jd/zfjyjgfwpt/controller/MailController.java

@@ -27,13 +27,13 @@ public class MailController extends BaseController {
      * @return
      */
     @PostMapping("sendMail")
-    void sendMail(Mail mail, String brokerName) {
+    void sendMail(Mail mail, String brokerName, String brokerId) {
         if (!mail.paramVerify()) {
             writeJson(SendUtil.send(false, ConstString.REQUEST_WRONGPARAMS, null));
             return;
         }
 
-        Mail res = mailService.sendMail(mail, brokerName);
+        Mail res = mailService.sendMail(mail, brokerName, brokerId);
 
         if (Blank.isNotEmpty(res)) {
             writeJson(SendUtil.send(true, "", res));

+ 136 - 0
src/main/java/com/jd/zfjyjgfwpt/entity/TradeRecord.java

@@ -0,0 +1,136 @@
+package com.jd.zfjyjgfwpt.entity;
+
+import com.jd.zfjyjgfwpt.util.Blank;
+
+import java.io.Serializable;
+import java.util.Date;
+
+public class TradeRecord implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * id
+     */
+    private Integer id;
+
+    /**
+     * 交易记录ID
+     */
+    private String recordId;
+
+    /**
+     * 经纪人ID(从业人员编号)
+     */
+    private String brokerId;
+
+    /**
+     * 经纪人姓名
+     */
+    private String brokerName;
+
+    /**
+     * 公司ID(社会统一信用代码)
+     */
+    private String companyId;
+
+    /**
+     * 公司名称
+     */
+    private String companyName;
+
+    /**
+     * 交易房源地址
+     */
+    private String address;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    public boolean isEmpty() {
+        if (Blank.isEmpty(recordId, brokerId, brokerName, companyId, companyName, address)) {
+            return true;
+        }
+        return false;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getRecordId() {
+        return recordId;
+    }
+
+    public void setRecordId(String recordId) {
+        this.recordId = recordId;
+    }
+
+    public String getBrokerId() {
+        return brokerId;
+    }
+
+    public void setBrokerId(String brokerId) {
+        this.brokerId = brokerId;
+    }
+
+    public String getBrokerName() {
+        return brokerName;
+    }
+
+    public void setBrokerName(String brokerName) {
+        this.brokerName = brokerName;
+    }
+
+    public String getCompanyId() {
+        return companyId;
+    }
+
+    public void setCompanyId(String companyId) {
+        this.companyId = companyId;
+    }
+
+    public String getCompanyName() {
+        return companyName;
+    }
+
+    public void setCompanyName(String companyName) {
+        this.companyName = companyName;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    @Override
+    public String toString() {
+        return "TradeRecord{" +
+                "id=" + id +
+                ", recordId='" + recordId + '\'' +
+                ", brokerId='" + brokerId + '\'' +
+                ", brokerName='" + brokerName + '\'' +
+                ", companyId='" + companyId + '\'' +
+                ", companyName='" + companyName + '\'' +
+                ", address='" + address + '\'' +
+                ", createTime=" + createTime +
+                '}';
+    }
+}

+ 13 - 0
src/main/java/com/jd/zfjyjgfwpt/entity/UserInfo.java

@@ -17,6 +17,11 @@ public class UserInfo implements Serializable {
     private String phone;
 
     /**
+     * 经纪人ID,被留言时
+     */
+    private String brokerId;
+
+    /**
      * 姓名
      */
     private String name;
@@ -67,6 +72,14 @@ public class UserInfo implements Serializable {
         this.phone = phone;
     }
 
+    public String getBrokerId() {
+        return brokerId;
+    }
+
+    public void setBrokerId(String brokerId) {
+        this.brokerId = brokerId;
+    }
+
     public String getName() {
         return name;
     }

+ 47 - 0
src/main/java/com/jd/zfjyjgfwpt/mapper/FrontMapper.java

@@ -0,0 +1,47 @@
+package com.jd.zfjyjgfwpt.mapper;
+
+import com.jd.zfjyjgfwpt.entity.TradeRecord;
+import com.jd.zfjyjgfwpt.entity.UserInfo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Map;
+
+public interface FrontMapper {
+
+    /**
+     * 统计交易记录数量
+     * @param phone
+     * @param recordId
+     * @return
+     */
+    TradeRecord selectAppraise(@Param("recordId") String recordId);
+
+    /**
+     * 根据被投诉方及手机号查询投诉次数
+     * @param phone
+     * @param id
+     * @return
+     */
+    Integer countComplaint(@Param("phone") String phone, @Param("id") String id);
+
+    /**
+     * 保存交易记录
+     * @param tradeRecord
+     * @return
+     */
+    Boolean saveTradeRecord(TradeRecord tradeRecord);
+
+    /**
+     * 购房评价
+     * @param map
+     * @return
+     */
+    Boolean saveAppraise(@Param("map") Map<String, Object> map);
+
+    /**
+     * 保存投诉
+     * @param map
+     * @return
+     */
+    Boolean saveComplaint(@Param("map") Map<String, Object> map);
+}

+ 16 - 0
src/main/java/com/jd/zfjyjgfwpt/service/FrontServiceI.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.jd.zfjyjgfwpt.entity.ApiResponse;
 import com.jd.zfjyjgfwpt.entity.PagingInfo;
 import com.jd.zfjyjgfwpt.entity.PagingResponse;
+import com.jd.zfjyjgfwpt.entity.TradeRecord;
 import org.springframework.lang.NonNull;
 
 import java.util.Map;
@@ -145,4 +146,19 @@ public interface FrontServiceI {
     PagingResponse<Object> getCurrLoginPersonListingList(Map<String, Object> params);
 
     PagingResponse<Object> getCompanyStoreInfoListById(Map<String, Object> params);
+
+    /**
+     * 评价
+     * @param map
+     * @return
+     */
+    Boolean appraise(Map<String, Object> map, TradeRecord tradeRecord);
+
+    /**
+     * 投诉
+     * @param map
+     * @param tradeRec
+     * @return
+     */
+    Boolean complaint(Map<String, Object> map, TradeRecord tradeRec);
 }

+ 1 - 1
src/main/java/com/jd/zfjyjgfwpt/service/MailService.java

@@ -12,7 +12,7 @@ public interface MailService {
      * @param mail
      * @return
      */
-    Mail sendMail(Mail mail, String brokerName);
+    Mail sendMail(Mail mail, String brokerName, String brokerId);
 
     /**
      * 是否有新消息

+ 46 - 4
src/main/java/com/jd/zfjyjgfwpt/service/impl/FrontServiceImpl.java

@@ -11,10 +11,8 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.jd.zfjyjgfwpt.configer.ProjectConfig;
 import com.jd.zfjyjgfwpt.configer.RemoteUrlConstants;
-import com.jd.zfjyjgfwpt.entity.ApiResponse;
-import com.jd.zfjyjgfwpt.entity.PagingInfo;
-import com.jd.zfjyjgfwpt.entity.PagingResponse;
-import com.jd.zfjyjgfwpt.entity.UserInfo;
+import com.jd.zfjyjgfwpt.entity.*;
+import com.jd.zfjyjgfwpt.mapper.FrontMapper;
 import com.jd.zfjyjgfwpt.service.CaptchaService;
 import com.jd.zfjyjgfwpt.service.FrontCommonService;
 import com.jd.zfjyjgfwpt.service.FrontServiceI;
@@ -28,6 +26,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.io.File;
@@ -54,6 +53,9 @@ public class FrontServiceImpl implements FrontServiceI {
     @Resource
     private FrontCommonService frontCommonService;
 
+    @Resource
+    private FrontMapper frontMapper;
+
     private String loadLocalJsonFile(String fileName) {
         File file = new File(String.format("VirtualInterface\\%s.json", fileName));
         String jsonResult = FileUtil.readUtf8String(file);
@@ -806,4 +808,44 @@ public class FrontServiceImpl implements FrontServiceI {
         logger.info("response body: {}", resObj.toJSONString());
         return PagingResponse.success(count, jsonArr.toJavaList(Object.class));
     }
+
+    @Override
+    @Transactional
+    public Boolean appraise(Map<String, Object> map, TradeRecord tradeRecord) {
+        TradeRecord resObj = frontMapper.selectAppraise(tradeRecord.getRecordId());
+        // 无记录,保存
+        if (resObj == null) {
+            Boolean res = frontMapper.saveTradeRecord(tradeRecord);
+            if (res) {
+                map.put("tradeRecordId", tradeRecord.getId());
+                return frontMapper.saveAppraise(map);
+            }
+        }
+
+        // 有记录说明,已经评价过
+        return false;
+    }
+
+    @Override
+    public Boolean complaint(Map<String, Object> map, TradeRecord tradeRec) {
+        Integer type = Convert.toInt(map.get("type"));
+        if (type == 2) {
+            TradeRecord res = frontMapper.selectAppraise(tradeRec.getRecordId());
+            if (res == null) {
+                frontMapper.saveTradeRecord(tradeRec);
+            } else {
+                tradeRec = res;
+            }
+            map.put("id", tradeRec.getId());
+            map.put("name", tradeRec.getAddress());
+            return frontMapper.saveComplaint(map);
+        } else if (type == 0 || type == 1) {
+            Integer res = frontMapper.countComplaint(Convert.toStr(map.get("phone")), Convert.toStr(map.get("id")));
+            if (res > 0) {
+                return false;
+            }
+            return frontMapper.saveComplaint(map);
+        }
+        return false;
+    }
 }

+ 2 - 1
src/main/java/com/jd/zfjyjgfwpt/service/impl/MailServiceImpl.java

@@ -27,11 +27,12 @@ public class MailServiceImpl implements MailService {
     private FrontCommonService frontCommonService;
 
     @Override
-    public Mail sendMail(Mail mail, String brokerName) {
+    public Mail sendMail(Mail mail, String brokerName, String brokerId) {
         // 保存用户信息
         UserInfo userInfo = new UserInfo();
         userInfo.setPhone(mail.getToUser());
         userInfo.setName(brokerName);
+        userInfo.setBrokerId(brokerId);
         frontCommonService.saveUserInfo(userInfo);
 
         String sessionId = mailMapper.searchSessionId(mail.getFromUser(), mail.getToUser());

+ 2 - 2
src/main/resources/mapper/FrontCommonlMapper.xml

@@ -13,8 +13,8 @@
 
 	<insert id="saveUserInfo">
 		INSERT INTO
-		    user_user_info(phone, name, identification_num, category, wechat_num, address, create_time, update_time)
-			VALUES (#{phone}, #{name}, #{identificationNum}, #{category}, #{wechatNum}, #{address}, now(), now())
+		    user_user_info(phone, broker_id, name, identification_num, category, wechat_num, address, create_time, update_time)
+			VALUES (#{phone}, #{brokerId}, #{name}, #{identificationNum}, #{category}, #{wechatNum}, #{address}, now(), now())
 	</insert>
 
 	<update id="updateUserInfo">

+ 47 - 0
src/main/resources/mapper/FrontMapper.xml

@@ -0,0 +1,47 @@
+<?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.jd.zfjyjgfwpt.mapper.FrontMapper">
+
+    <!-- 查询评价 -->
+    <select id="selectAppraise" resultType="com.jd.zfjyjgfwpt.entity.TradeRecord">
+        SELECT
+            id, record_id, broker_id, broker_name, company_id, company_name, address, create_time
+        FROM
+            grade_trade_record
+        WHERE
+            record_id = #{recordId}
+    </select>
+
+    <select id="countComplaint" resultType="int">
+        SELECT
+            count(1)
+        FROM
+            grade_complaint
+        WHERE
+            phone = #{phone}
+            AND respondent_id = #{id}
+    </select>
+
+    <!-- 保存交易记录 -->
+    <insert id="saveTradeRecord" parameterType="com.jd.zfjyjgfwpt.entity.TradeRecord" useGeneratedKeys="true" keyProperty="id">
+        INSERT INTO grade_trade_record (record_id, broker_id, broker_name, company_id, company_name, address, create_time)
+        VALUES
+            ( #{recordId}, #{brokerId}, #{brokerName},
+             #{companyId}, #{companyName}, #{address}, now())
+    </insert>
+
+    <!-- 保存购房评价 -->
+    <insert id="saveAppraise">
+        INSERT INTO grade_broker_appraise(trade_record_id, phone, satisfaction, content, create_time)
+        VALUES
+            ( #{map.tradeRecordId}, #{map.phone}, #{map.satisfaction}, #{map.content}, now())
+    </insert>
+
+    <!-- 保存投诉 -->
+    <insert id="saveComplaint">
+        INSERT INTO grade_complaint(phone, content, type, respondent_id, respondent_name, create_time)
+        VALUES
+        ( #{map.phone}, #{map.content}, #{map.type}, #{map.id}, #{map.name}, now())
+    </insert>
+
+</mapper>