From 3fd4bb1b37257ff046693f90751f15c4b27e61e7 Mon Sep 17 00:00:00 2001 From: Caps <452713115@qq.com> Date: Thu, 23 Apr 2020 14:50:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A5=BD=E5=8F=8B=E6=8E=A5=E5=8F=A3=E5=9B=9E?= =?UTF-8?q?=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kiisoo/ic/customer/CustomerService.java | 137 ++++++++++++++++++ .../controller/SynchronousController.java | 21 +++ .../ic/synchronous/entity/TurnBackDTO.java | 117 +++++++++++++++ .../ic/synchronous/entity/VipDataDTO.java | 91 ++++++++++++ .../ic/synchronous/entity/WxDataDTO.java | 50 +++++++ 5 files changed, 416 insertions(+) create mode 100644 src/main/java/com/kiisoo/ic/synchronous/entity/TurnBackDTO.java create mode 100644 src/main/java/com/kiisoo/ic/synchronous/entity/VipDataDTO.java create mode 100644 src/main/java/com/kiisoo/ic/synchronous/entity/WxDataDTO.java diff --git a/src/main/java/com/kiisoo/ic/customer/CustomerService.java b/src/main/java/com/kiisoo/ic/customer/CustomerService.java index 6c2c87f..6f41319 100644 --- a/src/main/java/com/kiisoo/ic/customer/CustomerService.java +++ b/src/main/java/com/kiisoo/ic/customer/CustomerService.java @@ -1,8 +1,11 @@ package com.kiisoo.ic.customer; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; +import com.kiisoo.ic.common.utils.httpClientUtil.HttpClientUtil; import com.kiisoo.ic.constants.Constants; import com.kiisoo.ic.customer.bean.CustomerDTO; import com.kiisoo.ic.customer.bean.CustomerModifyDTO; @@ -21,12 +24,15 @@ import com.kiisoo.ic.store.entity.PoiStoreStaff; import com.kiisoo.ic.store.mapper.PoiStoreDOMapper; import com.kiisoo.ic.store.mapper.PoiStoreStaffDOMapper; import com.kiisoo.ic.store.service.PoiStoreService; +import com.kiisoo.ic.synchronous.entity.TurnBackDTO; +import com.kiisoo.ic.synchronous.entity.VipDataDTO; import com.kiisoo.ic.system.enums.RoleEnum; import com.kiisoo.ic.webappmy.vo.StafferInfoVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDate; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; @@ -68,6 +74,11 @@ public class CustomerService { this.poiStoreStaffDOMapper = poiStoreStaffDOMapper; } + /** + * token + */ + private final static String TOKEN = "BOSIDENG"; + /** * 绑定客户的关系 * @param customerDTO 传输实体 @@ -130,6 +141,131 @@ public class CustomerService { opCustomerDOMapper.update(opCustomer,wrapper1); } + /** + * 好友添加回调通知 + * @param turnBackDTOS 数据实体 + * @return 是否成功 + */ + @Transactional(rollbackFor = Exception.class) + public void turnBack(TurnBackDTO turnBackDTOS){ + //客户信息 + QueryWrapper customerWrapper = new QueryWrapper<>(); + customerWrapper.eq("wechat_uni_id",turnBackDTOS.getWx_data().getUnit_id()).last("limit 1"); + OpCustomer opCustomer = opCustomerDOMapper.selectOne(customerWrapper); + //店铺信息 + QueryWrapper poiWrapper = new QueryWrapper<>(); + poiWrapper.eq("code",turnBackDTOS.getShop_code()).last("limit 1"); + PoiStore poiStore = poiStoreDOMapper.selectOne(poiWrapper); + //导购信息 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("staff_code",turnBackDTOS.getEa_code()).eq("store_code",turnBackDTOS.getShop_code()).last("limit 1"); + PoiStoreStaff poiStoreStaff = poiStoreStaffDOMapper.selectOne(wrapper); + if(poiStoreStaff == null || poiStore == null){ + return; + } + + //做插入使用 --如果没有客户信息就先创建客户信息如果有就判断是否有客户导购得关系,如果没有就添加有就不管 + OpCustomer insertCustomer = new OpCustomer(); + insertCustomer.setWechatUniId(turnBackDTOS.getWx_data().getUnit_id()); + insertCustomer.setName(turnBackDTOS.getName()); + if(null != opCustomer){ + //存在--1.处理客户导购关系。 + sellerCustomerRelation(opCustomer,turnBackDTOS.getEa_code(),poiStore.getId(),poiStoreStaff.getUserId()); + }else { + insertCustomer.setCreateBy(Constants.SYS_OPERATION); + //不存在 + opCustomerDOMapper.insert(insertCustomer); + //添加关系 + sellerCustomerRelation(insertCustomer,turnBackDTOS.getEa_code(),poiStore.getId(),poiStoreStaff.getUserId()); + } + + //处理客户vip的关系 + if(turnBackDTOS.getVip_data() != null){ + //有vip数据就不需要重新请求bsd的vip接口 + vipCheck(turnBackDTOS); + //查询是否有这个vip如果有就绑定关系如果没有就先添加vip然后再绑定关系 + }else { + //需要请求bsd的vip接口获取vip数据 + JSONObject jsonObject2 = JSON.parseObject(HttpClientUtil.httpGet("http://vtest.bsd.cn/BSD_WXAPP/miniProgram/getMemberDtlByUnionId?token=" + TOKEN + "&unionId=" + turnBackDTOS.getWx_data().getUnit_id()).getMessage()); + VipDataDTO vipDataDTO = new VipDataDTO(); + vipDataDTO.setBirthday(jsonObject2.getDate("birthday")); + vipDataDTO.setName(jsonObject2.getString("memberName")); + vipDataDTO.setPhone(jsonObject2.getString("mobileNo")); + vipDataDTO.setRegister_time(String.valueOf(LocalDate.now())); + vipData(vipDataDTO,turnBackDTOS.getWx_data().getUnit_id()); + } + } + + /** + * 添加会员数据 + * @param vipDataDTO + */ + private void vipData(VipDataDTO vipDataDTO, String unionId){ + OpCustomer opCustomer = new OpCustomer(vipDataDTO.getName(),vipDataDTO.getPhone()); + opCustomer.setUpdateBy(Constants.SYS_OPERATION); + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("phone",vipDataDTO.getPhone()).eq("name",vipDataDTO.getName()); + OpVip opVip = opVipDOMapper.selectOne(wrapper); + if(opVip == null){ + //数据库没有这个数据--新建数据 + OpVip opVip1 = new OpVip(); + opVip1.setStatus(1L); + opVip1.setPhone(vipDataDTO.getPhone()); + opVip1.setName(vipDataDTO.getName()); + opVip1.setBirthday(vipDataDTO.getBirthday()); + opVip1.setRegisterTime(new Date(vipDataDTO.getRegister_time())); + opVip1.setCreateTime(new Date()); + opVip1.setUpdateTime(new Date()); + opVip1.setCreateBy(Constants.SYS_OPERATION); + opVip1.setUpdateBy(Constants.SYS_OPERATION); + opVipDOMapper.insert(opVip1); + //有vip信息就绑定信息 + opCustomer.setMemberId(opVip1.getId()); + }else { + //有vip信息就绑定信息 + opCustomer.setMemberId(opVip.getId()); + } + QueryWrapper wrapper1 = new QueryWrapper<>(); + wrapper1.eq("wechat_uni_id",unionId); + opCustomerDOMapper.update(opCustomer,wrapper1); + } + + /** + * vip数据检验 + * @param turnBackDTO vip数据 + */ + private void vipCheck(TurnBackDTO turnBackDTO){ + OpCustomer opCustomer = new OpCustomer(turnBackDTO.getName(),turnBackDTO.getPhone()); + opCustomer.setUpdateBy(Constants.SYS_OPERATION); + + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("phone",turnBackDTO.getVip_data().getPhone()).eq("name",turnBackDTO.getVip_data().getName()); + OpVip opVip = opVipDOMapper.selectOne(wrapper); + if(opVip == null){ + //数据库没有这个数据--新建数据 + OpVip opVip1 = new OpVip(); + opVip1.setStatus(1L); + opVip1.setPhone(turnBackDTO.getVip_data().getPhone()); + opVip1.setName(turnBackDTO.getVip_data().getName()); + opVip1.setBirthday(turnBackDTO.getVip_data().getBirthday()); + opVip1.setRegisterTime(new Date(turnBackDTO.getVip_data().getRegister_time())); + opVip1.setCreateTime(new Date()); + opVip1.setUpdateTime(new Date()); + opVip1.setCreateBy(Constants.SYS_OPERATION); + opVip1.setUpdateBy(Constants.SYS_OPERATION); + opVipDOMapper.insert(opVip1); + //有vip信息就绑定信息 + opCustomer.setMemberId(opVip1.getId()); + }else { + //有vip信息就绑定信息 + opCustomer.setMemberId(opVip.getId()); + } + QueryWrapper wrapper1 = new QueryWrapper<>(); + wrapper1.eq("wechat_uni_id",turnBackDTO.getWx_data().getUnit_id()); + opCustomerDOMapper.update(opCustomer,wrapper1); + } + /** * 处理客户和导购的关系 * @param opCustomer 客户的数据信息 @@ -276,4 +412,5 @@ public class CustomerService { } return results; } + } \ No newline at end of file diff --git a/src/main/java/com/kiisoo/ic/synchronous/controller/SynchronousController.java b/src/main/java/com/kiisoo/ic/synchronous/controller/SynchronousController.java index 952623f..9231069 100644 --- a/src/main/java/com/kiisoo/ic/synchronous/controller/SynchronousController.java +++ b/src/main/java/com/kiisoo/ic/synchronous/controller/SynchronousController.java @@ -1,8 +1,11 @@ package com.kiisoo.ic.synchronous.controller; +import com.kiisoo.ic.customer.CustomerService; import com.kiisoo.ic.store.entity.PoiStore; +import com.kiisoo.ic.synchronous.entity.TurnBackDTO; import com.kiisoo.ic.utils.DataImportUtil; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -20,6 +23,13 @@ import java.util.List; @Slf4j public class SynchronousController { + private final CustomerService customerService; + + @Autowired + public SynchronousController(CustomerService customerService) { + this.customerService = customerService; + } + /** * 导入店铺接口 * @return @@ -49,4 +59,15 @@ public class SynchronousController { public String addSeller(@RequestBody List PoiStores){ return DataImportUtil.succ(1); } + + /** + * 好友添加回调通知 + * @return 是否成功 + */ + @RequestMapping(value = "/ics/customer",method = RequestMethod.POST) + @ResponseBody + public String turnBack(@RequestBody TurnBackDTO turnBackDTOS){ + customerService.turnBack(turnBackDTOS); + return DataImportUtil.succ(1); + } } diff --git a/src/main/java/com/kiisoo/ic/synchronous/entity/TurnBackDTO.java b/src/main/java/com/kiisoo/ic/synchronous/entity/TurnBackDTO.java new file mode 100644 index 0000000..d3cee0a --- /dev/null +++ b/src/main/java/com/kiisoo/ic/synchronous/entity/TurnBackDTO.java @@ -0,0 +1,117 @@ +package com.kiisoo.ic.synchronous.entity; + +import java.util.Date; + +/** + * @ClassName: TurnBackDTO + * @Description: + * @Auther: Caps + * @Date: 2020/4/23 0023 10:08 + * @Version: + */ +public class TurnBackDTO { + + /** + * 店铺code + */ + private String shop_code; + + /** + * 推广员编码 + */ + private String ea_code; + + /** + * 推广类型 1、内部推广 2、客户推广 + */ + private int type; + + /** + * 客户名称 + */ + private String name; + + /** + * 客户手机号 + */ + private String phone; + + /** + * 加入时间 + */ + private Date join_time; + + /** + * 微信id对象 + */ + private WxDataDTO wx_data; + + /** + * 会员信息 + */ + private VipDataDTO vip_data; + + public String getShop_code() { + return shop_code; + } + + public void setShop_code(String shop_code) { + this.shop_code = shop_code; + } + + public String getEa_code() { + return ea_code; + } + + public void setEa_code(String ea_code) { + this.ea_code = ea_code; + } + + public int getType() { + return type; + } + + public void setType(int type) { + this.type = type; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public Date getJoin_time() { + return join_time; + } + + public void setJoin_time(Date join_time) { + this.join_time = join_time; + } + + public WxDataDTO getWx_data() { + return wx_data; + } + + public void setWx_data(WxDataDTO wx_data) { + this.wx_data = wx_data; + } + + public VipDataDTO getVip_data() { + return vip_data; + } + + public void setVip_data(VipDataDTO vip_data) { + this.vip_data = vip_data; + } +} diff --git a/src/main/java/com/kiisoo/ic/synchronous/entity/VipDataDTO.java b/src/main/java/com/kiisoo/ic/synchronous/entity/VipDataDTO.java new file mode 100644 index 0000000..afc75e3 --- /dev/null +++ b/src/main/java/com/kiisoo/ic/synchronous/entity/VipDataDTO.java @@ -0,0 +1,91 @@ +package com.kiisoo.ic.synchronous.entity; + +import java.util.Date; + +/** + * @ClassName: VipDataDTO + * @Description: + * @Auther: Caps + * @Date: 2020/4/23 0023 10:11 + * @Version: + */ +public class VipDataDTO { + + /** + * 会员名称 + */ + private String name; + + /** + * 会员手机号 + */ + private String phone; + + /** + * 生日 + */ + private Date birthday; + + /** + * 性别 1、男2、女 0、未知 + */ + private int sex; + + /** + * 会员等级 + */ + private String level; + + /** + * 注册时间 + */ + private String register_time; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public Date getBirthday() { + return birthday; + } + + public void setBirthday(Date birthday) { + this.birthday = birthday; + } + + public int getSex() { + return sex; + } + + public void setSex(int sex) { + this.sex = sex; + } + + public String getLevel() { + return level; + } + + public void setLevel(String level) { + this.level = level; + } + + public String getRegister_time() { + return register_time; + } + + public void setRegister_time(String register_time) { + this.register_time = register_time; + } +} diff --git a/src/main/java/com/kiisoo/ic/synchronous/entity/WxDataDTO.java b/src/main/java/com/kiisoo/ic/synchronous/entity/WxDataDTO.java new file mode 100644 index 0000000..367d101 --- /dev/null +++ b/src/main/java/com/kiisoo/ic/synchronous/entity/WxDataDTO.java @@ -0,0 +1,50 @@ +package com.kiisoo.ic.synchronous.entity; + +/** + * @ClassName: WxDataDTO + * @Description: + * @Auther: Caps + * @Date: 2020/4/23 0023 10:10 + * @Version: + */ +public class WxDataDTO { + + /** + * unit_id + */ + private String unit_id; + + /** + * open_id + */ + private String open_id; + + /** + * user_id + */ + private String user_id; + + public String getUnit_id() { + return unit_id; + } + + public void setUnit_id(String unit_id) { + this.unit_id = unit_id; + } + + public String getOpen_id() { + return open_id; + } + + public void setOpen_id(String open_id) { + this.open_id = open_id; + } + + public String getUser_id() { + return user_id; + } + + public void setUser_id(String user_id) { + this.user_id = user_id; + } +}