package com.huiju.estateagents.service.impl;
import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.huiju.estateagents.base.ResponseBean;
import com.huiju.estateagents.common.CommConstant;
import com.huiju.estateagents.common.DateUtils;
import com.huiju.estateagents.common.MD5Utils;
import com.huiju.estateagents.common.StringUtils;
import com.huiju.estateagents.entity.*;
import com.huiju.estateagents.mapper.*;
import com.huiju.estateagents.service.ITaPersonService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
* 人员表 服务实现类
*
*
* @author jobob
* @since 2019-05-10
*/
@Service
public class TaPersonServiceImpl extends ServiceImpl implements ITaPersonService {
@Autowired
TaPersonMapper taPersonMapper;
@Autowired
TaPersonSignMapper taPersonSignMapper;
@Autowired
TaUvMapper taUvMapper;
@Autowired
TaFavorMapper taFavorMapper;
@Autowired
TaPersonBuildingMapper taPersonBuildingMapper;
@Autowired
TaRecommendCustomerMapper taRecommendCustomerMapper;
@Autowired
TaChatMapper taChatMapper;
@Autowired
private TdPointsRulesMapper tdPointsRulesMapper;
@Autowired
private TaPointsRecordsMapper taPointsRecordsMapper;
@Override
public TaPerson mergePersonWxInfo(WxMaUserInfo userInfo) {
// 先查询是否存在用户
String openid = userInfo.getOpenId();
List persons = taPersonMapper.getPersonByOpenId(openid);
if (null == persons || persons.size() != 1) {
// // 没有则插入新记录
// person = new TaPerson();
// person.setMiniOpenid(openid);
// person.setNickname(userInfo.getNickName());
// person.setAvatarurl(userInfo.getAvatarUrl());
// person.setStatus(CommConstant.STATUS_NORMAL);
// person.setCreateDate(LocalDateTime.now());
// person.setIsSignup(CommConstant.STATUS_NORMAL);
//
// if (taPersonMapper.insert(person) > 0) {
// return person;
// }
return null;
} else {
// 否则更新
TaPerson person = persons.get(0);
UpdateWrapper wrapper = new UpdateWrapper<>();
wrapper.eq("mini_openid", openid);
wrapper.set("nickname", userInfo.getNickName());
wrapper.set("avatarurl", userInfo.getAvatarUrl());
taPersonMapper.update(person, wrapper);
person.setAvatarurl(userInfo.getAvatarUrl());
person.setNickname(userInfo.getNickName());
return person;
}
}
@Override
public TaPerson updatePersonPhone(String miniOpenid, String phone) {
// 先查询是否存在用户
TaPerson person = null;
List taPersons = getPersonsByOpenId(miniOpenid);
if (null != taPersons && taPersons.size() > 0) {
person = taPersons.get(0);
}
if (null == person) {
// 发生了未知错误
return null;
}
// if (null == phone || "".equals(phone)) {
// return null;
// }
String tel = person.getTel();
UpdateWrapper wrapper = new UpdateWrapper<>();
wrapper.set("phone", phone);
wrapper.set("person_type",CommConstant.PERSON_ESTATE_AGENT);
// wrapper.set(null == tel || "".equals(tel), "tel", phone);
wrapper.eq("mini_openid", miniOpenid);
// wrapper.eq("person_type",null);
wrapper.isNull("person_type");
taPersonMapper.update(new TaPerson(), wrapper);
person.setPhone(phone);
if (null == tel || "".equals(tel)){
person.setTel(phone);
}
//查看是否领取过授权积分
QueryWrapper taPointsRecordsQueryWrapper = new QueryWrapper<>();
taPointsRecordsQueryWrapper.eq("change_type",CommConstant.POINTS_AUTHORIZE);
taPointsRecordsQueryWrapper.like("change_params","%\""+person.getPersonId()+"\"%");
List taPointsRecordsList = taPointsRecordsMapper.selectList(taPointsRecordsQueryWrapper);
if (taPointsRecordsList.size() < 0){
//发放积分
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("rule_id",2);
queryWrapper.eq("status",CommConstant.STATUS_NORMAL);
TdPointsRules tdPointsRules = tdPointsRulesMapper.selectOne(queryWrapper);
if (null != tdPointsRules) {
//插入积分消费流水表
TaPointsRecords taPointsRecords = new TaPointsRecords();
taPointsRecords.setPersonId(person.getPersonId());
taPointsRecords.setPersonName(com.huiju.estateagents.common.StringUtils.ifNull(person.getName(),person.getNickname()));
taPointsRecords.setPersonType(person.getPersonType());
taPointsRecords.setPointsAmount(tdPointsRules.getPointsAmount());
taPointsRecords.setChangeType(CommConstant.POINTS_AUTHORIZE);
JSONObject jsonObject = new JSONObject();
jsonObject.put("person_id",person.getPersonId());
taPointsRecords.setChangeParams(jsonObject.toJSONString());
taPointsRecords.setCreateDate(LocalDateTime.now());
taPointsRecords.setStatus(CommConstant.STATUS_NORMAL);
taPointsRecordsMapper.insert(taPointsRecords);
//添加积分
UpdateWrapper taPersonwrapper = new UpdateWrapper<>();
wrapper.eq("person_id", person.getPersonId());
wrapper.setSql("points = IFNULL(points, 0) + " + String.valueOf(tdPointsRules.getPointsAmount()));
taPersonMapper.update(new TaPerson(), taPersonwrapper);
}
}
return person;
}
@Override
public IPage