ApiDeliveryServiceImpl.java 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632
  1. package com.ydd.app.service.impl;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.ydd.api.DeliveryService;
  5. import com.ydd.app.QueryAmountEntityUtils;
  6. import com.ydd.app.service.ApiDeliveryService;
  7. import com.ydd.common.enums.DeliveryTypeEnums;
  8. import com.ydd.common.utils.StringUtils;
  9. import com.ydd.ecloud.core.utils.JsonMapper;
  10. import com.ydd.module.domain.*;
  11. import com.ydd.module.dto.DeliveryDto;
  12. import com.ydd.module.dto.DeliveryInfo;
  13. import com.ydd.module.dto.MemberConfigDto;
  14. import com.ydd.module.enums.BindStatusEnum;
  15. import com.ydd.module.enums.IsDeleteEnum;
  16. import com.ydd.module.enums.StatusEnum;
  17. import com.ydd.module.expection.CustomAppException;
  18. import com.ydd.module.service.*;
  19. import com.ydd.system.service.ISysConfigService;
  20. import com.ydd.third.common.dto.*;
  21. import com.ydd.third.common.huolalaresponse.TokenResponse;
  22. import com.ydd.third.common.vo.ResObject;
  23. import com.ydd.third.common.vo.callback.ShansongTokenVo;
  24. import com.ydd.third.common.vo.huolalavo.HCityInfo;
  25. import com.ydd.third.common.vo.huolalavo.HPoiSearch;
  26. import com.ydd.third.common.vo.huolalavo.Haddress;
  27. import com.ydd.third.common.vo.shop.AmountResultVo;
  28. import com.ydd.third.common.vo.shop.QueryAmount;
  29. import lombok.RequiredArgsConstructor;
  30. import lombok.extern.slf4j.Slf4j;
  31. import org.springframework.beans.factory.annotation.Autowired;
  32. import org.springframework.stereotype.Service;
  33. import org.springframework.transaction.annotation.Transactional;
  34. import java.math.BigDecimal;
  35. import java.util.List;
  36. /**
  37. * Project:lb-server
  38. * Class:ApiDeliveryServiceImpl
  39. * Description:TODO
  40. * Time:2021/3/3 10:03
  41. *
  42. * @author zoe
  43. */
  44. @Slf4j
  45. @Service
  46. @RequiredArgsConstructor(onConstructor_ = @Autowired)
  47. public class ApiDeliveryServiceImpl implements ApiDeliveryService {
  48. private final ISysConfigService iSysConfigService;
  49. private final IDspDeliveryService iDspDeliveryService;
  50. private final IMemberConfigService iMemberConfigService;
  51. private final IShopDeliveryService iShopDeliveryService;
  52. private final IMemberService iMemberService;
  53. private final IMerchantService iMerchantService;
  54. private final DeliveryService client;
  55. private final IShopService iShopService;
  56. private final IHuoLaLaCityService iHuoLaLaCityService;
  57. @Override
  58. public List<DeliveryDto> list(Long loginId) {
  59. Member member = iMemberService.getById(loginId);
  60. List<DeliveryDto> list = iShopDeliveryService.findList(member.getMerchantId());
  61. // 查询余额
  62. for (DeliveryDto l : list){
  63. DeliveryInfo delivery = new DeliveryInfo();
  64. delivery.setThirdShopId(l.getThirdShopId());
  65. delivery.setShopId(l.getThirdShopId());
  66. delivery.setAuthToken(l.getAuthToken());
  67. delivery.setPhone(l.getAccount());
  68. delivery.setType(l.getType());
  69. // 达达或者达达优质的门店编号
  70. if (DeliveryTypeEnums.DADA.getType().equals(l.getType()) || DeliveryTypeEnums.DADA_YZ.getType().equals(l.getType())){
  71. ShopDelivery delivery1 = iShopDeliveryService.getDadaShopNo(member.getMerchantId(),l.getDeliveryId());
  72. if (delivery1 != null){
  73. if (DeliveryTypeEnums.DADA.getType().equals(l.getType())){
  74. l.setShopNo(delivery1.getDadaShopNo());
  75. }
  76. if (DeliveryTypeEnums.DADA_YZ.getType().equals(l.getType())){
  77. l.setShopNo(delivery1.getDadaYzShopNo());
  78. }
  79. }
  80. }
  81. DspDelivery dspDelivery = iDspDeliveryService.findOne(l.getType());
  82. QueryAmount queryAmount = QueryAmountEntityUtils.queryAmount(delivery, member.getMerchantId(),1);
  83. ResObject<AmountResultVo> amountRes = client.queryAmount(queryAmount);
  84. if (amountRes.getCode() == 0) {
  85. // 更新余额
  86. AmountResultVo vo = amountRes.getData();
  87. ShopDelivery shopDelivery = iShopDeliveryService.getOne(new QueryWrapper<ShopDelivery>().eq("merchant_id", member.getMerchantId()).eq("delivery_id", dspDelivery.getId())
  88. .eq("deleted", IsDeleteEnum.NORMAL.status).isNull("shop_id").eq("bind_status",1));
  89. if (shopDelivery != null){
  90. shopDelivery.setBalance(vo.getBalanceAmount());
  91. iShopDeliveryService.updateById(shopDelivery);
  92. }
  93. }
  94. }
  95. List<DeliveryDto> deliveryList = iDspDeliveryService.floorList();
  96. List<DeliveryDto> dadaList = iShopDeliveryService.findBindList(member.getMerchantId());
  97. for (DeliveryDto dada : dadaList){
  98. DspDelivery dspDelivery = iDspDeliveryService.getById(dada.getDeliveryId());
  99. if (!dspDelivery.getType().equals(DeliveryTypeEnums.DADA.getType())
  100. && !dspDelivery.getType().equals(DeliveryTypeEnums.DADA_YZ.getType())
  101. && !dspDelivery.getType().equals(DeliveryTypeEnums.SHUN_FENG.getType())){
  102. continue;
  103. }
  104. list.add(dada);
  105. }
  106. deliveryList.removeAll(list);
  107. for (DeliveryDto dto : deliveryList){
  108. if (dto.getType().equals(DeliveryTypeEnums.MEI_TUAN.getType()) ||
  109. dto.getType().equals(DeliveryTypeEnums.FENG_NIAO.getType()) ||
  110. dto.getType().equals(DeliveryTypeEnums.FENG_NIAO_KA.getType()) ||
  111. dto.getType().equals(DeliveryTypeEnums.HUO_LA_LA.getType())){
  112. continue;
  113. }
  114. dto.setBindStatus(BindStatusEnum.UNBIND.getStatus());
  115. list.add(dto);
  116. }
  117. return list;
  118. }
  119. @Override
  120. @Transactional(rollbackFor = Exception.class)
  121. public void release(Long loginId, Integer id,String sfId) {
  122. ShopDelivery shopDelivery = iShopDeliveryService.getById(id);
  123. DspDelivery delivery =iDspDeliveryService.getById(shopDelivery.getDeliveryId());
  124. if (delivery.getType().equals(DeliveryTypeEnums.AIPT.getType())){
  125. AiptUnBindDto dto = unBind(id,loginId);
  126. }else {
  127. if (delivery.getType().equals(DeliveryTypeEnums.SHUN_FENG.getType()) ||
  128. delivery.getType().equals(DeliveryTypeEnums.DADA.getType())||
  129. delivery.getType().equals(DeliveryTypeEnums.DADA_YZ.getType()) ||
  130. delivery.getType().equals(DeliveryTypeEnums.MEI_TUAN_ZB.getType())||
  131. delivery.getType().equals(DeliveryTypeEnums.MEI_TUAN_SG_ZB.getType())){
  132. iShopDeliveryService.removeById(id);
  133. }
  134. if(DeliveryTypeEnums.SHAN_SONG.getType().equals(delivery.getType())){
  135. //解除绑定
  136. ResObject res = client.cancelToken(shopDelivery.getAuthToken());
  137. if (res.getCode() == 0){
  138. iShopDeliveryService.removeById(id);
  139. }
  140. log.info("===闪送解除绑定结果===》"+ JsonMapper.nonEmptyMapper().toJson(res));
  141. }
  142. if (DeliveryTypeEnums.KUAI_FU.getType().equals(delivery.getType())){
  143. log.info("===快服解除绑定===》");
  144. iShopDeliveryService.removeById(id);
  145. }
  146. }
  147. }
  148. /**
  149. * 爱跑腿-解除绑定
  150. * @param id 商家绑定平台ID
  151. * @param loginId
  152. */
  153. @Override
  154. public AiptUnBindDto unBind(Integer id,Long loginId) {
  155. ShopDelivery shopDelivery = iShopDeliveryService.getById(id);
  156. if (shopDelivery != null){
  157. //解除绑定
  158. AiptUnBindDto bindDto = client.unBind(shopDelivery.getAccount());
  159. if (bindDto.getCode().equals(1) && bindDto.getState().equals("Success")){
  160. iShopDeliveryService.removeById(id);
  161. }
  162. log.info("===解除绑定结果===》"+ JsonMapper.nonEmptyMapper().toJson(bindDto));
  163. return bindDto;
  164. }else {
  165. AiptUnBindDto bindDto = new AiptUnBindDto();
  166. bindDto.setState("Fail");
  167. bindDto.setInfo("该运力不存在");
  168. return bindDto;
  169. }
  170. }
  171. @Override
  172. public String explain() {
  173. return iSysConfigService.selectConfigByKey("BINDING_PROCESS");
  174. }
  175. @Override
  176. public List<DeliveryDto> floorList(Long loginId) {
  177. return iDspDeliveryService.floorList();
  178. }
  179. @Override
  180. public MemberConfigDto findDetail(Long loginId) {
  181. return iMemberConfigService.findDetail(loginId);
  182. }
  183. @Override
  184. @Transactional(rollbackFor = Exception.class)
  185. public void saveConfig(Long loginId, MemberConfigDto config) {
  186. MemberConfig memberConfig = iMemberConfigService.getOne(new QueryWrapper<MemberConfig>().eq("member_id",loginId));
  187. if (memberConfig == null){
  188. memberConfig = new MemberConfig();
  189. memberConfig.setMemberId(loginId);
  190. }
  191. memberConfig.setAddPriceTime(config.getAddPriceTime());
  192. memberConfig.setGuaranteeDeliveryIds(config.getGuaranteeDeliveryIds());
  193. memberConfig.setGuaranteeOrderTime(config.getGuaranteeOrderTime());
  194. memberConfig.setOpenGuarantee(config.getOpenGuarantee());
  195. memberConfig.setOpenTipSwitch(config.getOpenTipSwitch());
  196. memberConfig.setTipAmount(config.getTipAmount());
  197. memberConfig.setTipRemark(config.getTipRemark());
  198. iMemberConfigService.saveOrUpdate(memberConfig);
  199. }
  200. @Override
  201. public void status(Long loginId, Integer id, Integer preferredDelivery) {
  202. ShopDelivery delivery = iShopDeliveryService.getById(id);
  203. if (delivery == null){
  204. throw new CustomAppException("绑定运力不存在!");
  205. }
  206. if (preferredDelivery.equals(StatusEnum.SHOW.status)){
  207. iShopDeliveryService.updateStatus(delivery.getMerchantId());
  208. }
  209. delivery.setPreferredDelivery(preferredDelivery);
  210. iShopDeliveryService.updateById(delivery);
  211. }
  212. /**
  213. * 绑定运力平台
  214. * @param loginId
  215. * @param deliveryId
  216. * @param sfId
  217. * @param dadaName
  218. * @return
  219. */
  220. @Override
  221. public String bind(Long loginId, Long deliveryId,String sfId,String dadaName) {
  222. Member member = iMemberService.getById(loginId);
  223. ShopDelivery shopDelivery = iShopDeliveryService.getOne(new QueryWrapper<ShopDelivery>().eq("merchant_id",member.getMerchantId()).eq("delivery_id",deliveryId).isNull("shop_id"));
  224. if (member.getMerchantId() == null){
  225. throw new CustomAppException("请先申请成为商家!");
  226. }
  227. Merchant merchant = iMerchantService.getById(member.getMerchantId());
  228. if (merchant == null){
  229. throw new CustomAppException("商家信息异常,请联系管理员!");
  230. }
  231. DspDelivery delivery = iDspDeliveryService.getById(deliveryId);
  232. if (shopDelivery != null && shopDelivery.getBindStatus().equals(BindStatusEnum.BIND)){
  233. throw new CustomAppException("已绑定成功!");
  234. }
  235. // if (shopDelivery != null && delivery.getType().equals(DeliveryTypeEnums.SHUN_FENG.getType()) && shopDelivery.getBindStatus().equals(BindStatusEnum.BIND)){
  236. // throw new CustomAppException("已绑定成功!");
  237. // }
  238. // if (shopDelivery != null && delivery.getType().equals(DeliveryTypeEnums.DADA.getType()) && shopDelivery.getBindStatus().equals(BindStatusEnum.BIND)){
  239. // throw new CustomAppException("已绑定成功!");
  240. // }
  241. // if (shopDelivery != null && delivery.getType().equals(DeliveryTypeEnums.DADA_YZ.getType()) && shopDelivery.getBindStatus().equals(BindStatusEnum.BIND)){
  242. // throw new CustomAppException("已绑定成功!");
  243. // }
  244. // if (shopDelivery != null && delivery.getType().equals(DeliveryTypeEnums.KUAI_FU.getType()) && shopDelivery.getBindStatus().equals(BindStatusEnum.BIND)){
  245. // throw new CustomAppException("已绑定成功!");
  246. // }
  247. String url = null;
  248. if (delivery.getType().equals(DeliveryTypeEnums.SHAN_SONG.getType())){
  249. url = client.shansongAuthUrl(merchant.getCode());
  250. }
  251. if (delivery.getType().equals(DeliveryTypeEnums.FENG_NIAO.getType())){
  252. url = client.fengniaoAuthUrl();
  253. }
  254. if (delivery.getType().equals(DeliveryTypeEnums.AIPT.getType())){
  255. url = client.aptAuthUrl(merchant.getCode());
  256. }
  257. if (delivery.getType().equals(DeliveryTypeEnums.HUO_LA_LA.getType())){
  258. url = client.hllAuthUrl();
  259. }
  260. if (delivery.getType().equals(DeliveryTypeEnums.KUAI_FU.getType())){
  261. url = client.kfAuthUrl(merchant.getCode());
  262. }
  263. if (delivery.getType().equals(DeliveryTypeEnums.MEI_TUAN_ZB.getType())){
  264. shopDelivery = new ShopDelivery();
  265. shopDelivery.setAccount("sssss");
  266. shopDelivery.setMerchantId(merchant.getId());
  267. shopDelivery.setDeliveryId(delivery.getId());
  268. shopDelivery.setBindStatus(BindStatusEnum.BIND.status);
  269. iShopDeliveryService.save(shopDelivery);
  270. }
  271. if (delivery.getType().equals(DeliveryTypeEnums.MEI_TUAN_SG_ZB.getType())){
  272. shopDelivery = new ShopDelivery();
  273. shopDelivery.setAccount("sssss");
  274. shopDelivery.setMerchantId(merchant.getId());
  275. shopDelivery.setDeliveryId(delivery.getId());
  276. shopDelivery.setBindStatus(BindStatusEnum.BIND.status);
  277. iShopDeliveryService.save(shopDelivery);
  278. }
  279. if (StringUtils.isBlank(sfId) && (delivery.getType().equals(DeliveryTypeEnums.DADA.getType()) || delivery.getType().equals(DeliveryTypeEnums.DADA_YZ.getType()))){
  280. Integer type = 0;
  281. if (delivery.getType().equals(DeliveryTypeEnums.DADA_YZ.getType())){
  282. type = 1;
  283. }
  284. JSONObject jsonObject = client.partyTicket(type);
  285. if (jsonObject.getString("status").equals("success")){
  286. url = client.getPartyOauth(jsonObject.getString("result"),type,merchant.getCode());
  287. }else {
  288. throw new CustomAppException(jsonObject.getString("msg"));
  289. }
  290. }
  291. if (delivery.getType().equals(DeliveryTypeEnums.SHUN_FENG.getType()) || delivery.getType().equals(DeliveryTypeEnums.DADA.getType()) || delivery.getType().equals(DeliveryTypeEnums.DADA_YZ.getType())){
  292. if (StringUtils.isNotBlank(sfId)){
  293. if (shopDelivery == null){
  294. shopDelivery = new ShopDelivery();
  295. shopDelivery.setAccount("sssss");
  296. if (StringUtils.isNotBlank(dadaName)){
  297. shopDelivery.setAccount(dadaName);
  298. }
  299. shopDelivery.setBalance(new BigDecimal("0"));
  300. shopDelivery.setThirdShopId(sfId);
  301. shopDelivery.setMerchantId(merchant.getId());
  302. shopDelivery.setDeliveryId(delivery.getId());
  303. shopDelivery.setBindStatus(BindStatusEnum.CHECK.status);
  304. iShopDeliveryService.save(shopDelivery);
  305. }else {
  306. // 更新
  307. shopDelivery.setThirdShopId(sfId);
  308. shopDelivery.setBindStatus(BindStatusEnum.CHECK.status);
  309. shopDelivery.setAccount("sssss");
  310. if (StringUtils.isNotBlank(dadaName)){
  311. shopDelivery.setAccount(dadaName);
  312. }
  313. iShopDeliveryService.updateById(shopDelivery);
  314. }
  315. }
  316. }
  317. return url;
  318. }
  319. /**
  320. * 填写达达/达达优质门店编号
  321. * @param loginId
  322. * @param deliveryId 运力
  323. * @param shopNo 达达/优质门店编号
  324. */
  325. @Override
  326. public void updateDadaShopNo(Long loginId, Long deliveryId, String shopNo) {
  327. Member member = iMemberService.getById(loginId);
  328. ShopDelivery shopDelivery = iShopDeliveryService.getOne(new QueryWrapper<ShopDelivery>().eq("merchant_id",member.getMerchantId()).eq("delivery_id",deliveryId).isNull("shop_id"));
  329. DspDelivery dspDelivery = iDspDeliveryService.getById(deliveryId);
  330. getBalance(shopDelivery,dspDelivery,member.getMerchantId(),deliveryId,shopNo);
  331. }
  332. /**
  333. * 查询达达余额,并且更新达达门店编号
  334. * @param shopDelivery
  335. * @param dspDelivery
  336. * @param merchantId
  337. * @param deliveryId
  338. * @param shopNo
  339. */
  340. public void getBalance(ShopDelivery shopDelivery,DspDelivery dspDelivery,Long merchantId,Long deliveryId,String shopNo){
  341. QueryAmount queryAmount = new QueryAmount();
  342. queryAmount.setIsDirectDelivery(0);
  343. queryAmount.setLbClient(DeliveryTypeEnums.DADA.getName());
  344. if (DeliveryTypeEnums.DADA_YZ.getType().equals(dspDelivery.getType())){
  345. queryAmount.setIsDirectDelivery(1);
  346. queryAmount.setLbClient(DeliveryTypeEnums.DADA_YZ.getName());
  347. }
  348. shopDelivery.setBindStatus(BindStatusEnum.BIND.status);
  349. // 查询余额
  350. queryAmount.setMerchantId(shopDelivery.getThirdShopId());
  351. ResObject<AmountResultVo> res = client.queryAmount(queryAmount);
  352. if(res.getCode().intValue()==0){
  353. BigDecimal balanceAmount = res.getData().getBalanceAmount();
  354. shopDelivery.setBalance(balanceAmount);
  355. }
  356. iShopDeliveryService.updateById(shopDelivery);
  357. iShopDeliveryService.updateDaDaShopNo(dspDelivery.getType(),merchantId,deliveryId,shopNo);
  358. }
  359. @Override
  360. @Transactional(rollbackFor = Exception.class)
  361. public void bindCallBack(ShansongTokenVo tokenVo) {
  362. DspDelivery delivery = iDspDeliveryService.findOne(DeliveryTypeEnums.SHAN_SONG.getType());
  363. Merchant merchant = iMerchantService.getOne(new QueryWrapper<Merchant>().eq("code",tokenVo.getShopId()));
  364. if(merchant!=null){
  365. ShopDelivery shopDelivery = new ShopDelivery();
  366. //绑定闪送目前只能拿到授权token
  367. //TODO
  368. shopDelivery.setAccount("sssss");
  369. // shopDelivery.setBalance(new BigDecimal("12.03"));
  370. shopDelivery.setThirdShopId(tokenVo.getShopId());
  371. shopDelivery.setMerchantId(merchant.getId());
  372. shopDelivery.setBindStatus(BindStatusEnum.BIND.status);
  373. shopDelivery.setDeliveryId(delivery.getId());
  374. shopDelivery.setAuthToken(tokenVo.getAccessToken());
  375. //获取余额
  376. try {
  377. QueryAmount queryAmount = new QueryAmount();
  378. queryAmount.setAccessToken(tokenVo.getAccessToken());
  379. queryAmount.setIsShansongSH(true);
  380. queryAmount.setLbClient(DeliveryTypeEnums.SHAN_SONG.getName());
  381. ResObject<AmountResultVo> res = client.queryAmount(queryAmount);
  382. if (res.getCode() == 0){
  383. AmountResultVo vo = res.getData();
  384. shopDelivery.setBalance(vo.getBalanceAmount());
  385. }
  386. } catch (Exception e) {
  387. e.printStackTrace();
  388. }
  389. shopDelivery.setRefreshToken(tokenVo.getRefreshToken());
  390. shopDelivery.setExpiresIn(tokenVo.getExpireIn());
  391. iShopDeliveryService.save(shopDelivery);
  392. }
  393. }
  394. /**
  395. * 爱跑腿绑定回调
  396. * @param aiptAuthDto
  397. */
  398. @Override
  399. @Transactional(rollbackFor = Exception.class)
  400. public void bindAipt(AiptAuthDto aiptAuthDto) {
  401. DspDelivery delivery = iDspDeliveryService.findOne(DeliveryTypeEnums.AIPT.getType());
  402. Merchant merchant = iMerchantService.getOne(new QueryWrapper<Merchant>().eq("code",aiptAuthDto.getUnique_id()));
  403. System.out.println("爱跑腿绑定回调商户---"+merchant.getId());
  404. if(merchant!=null){
  405. ShopDelivery shopDelivery = iShopDeliveryService.getByMerchantIdAndDeliveryId(merchant.getId(),delivery.getId());
  406. if (shopDelivery == null){
  407. shopDelivery = new ShopDelivery();
  408. shopDelivery.setAccount(aiptAuthDto.getPhone());
  409. shopDelivery.setThirdShopId(aiptAuthDto.getUnique_id());
  410. shopDelivery.setMerchantId(merchant.getId());
  411. if ("bind".equals(aiptAuthDto.getState())){
  412. shopDelivery.setBindStatus(BindStatusEnum.BIND.status);
  413. }else {
  414. shopDelivery.setBindStatus(BindStatusEnum.UNBIND.status);
  415. }
  416. shopDelivery.setDeliveryId(delivery.getId());
  417. //获取余额
  418. try {
  419. QueryAmount queryAmount = new QueryAmount();
  420. queryAmount.setPhone(aiptAuthDto.getPhone());
  421. queryAmount.setLbClient(DeliveryTypeEnums.AIPT.getName());
  422. ResObject<AmountResultVo> res = client.queryAmount(queryAmount);
  423. if (res.getCode() == 0){
  424. AmountResultVo vo = res.getData();
  425. shopDelivery.setBalance(vo.getBalanceAmount());
  426. }
  427. } catch (Exception e) {
  428. e.printStackTrace();
  429. }
  430. iShopDeliveryService.save(shopDelivery);
  431. }
  432. }
  433. }
  434. /**
  435. * 绑定快服回调
  436. * @param kfAuthDto
  437. */
  438. @Override
  439. public void bindKf(KfAuthDto kfAuthDto) {
  440. DspDelivery delivery = iDspDeliveryService.findOne(DeliveryTypeEnums.KUAI_FU.getType());
  441. Merchant merchant = iMerchantService.getOne(new QueryWrapper<Merchant>().eq("code",kfAuthDto.getMerchantCode()));
  442. if(merchant==null){
  443. log.info("快服绑定商家为空");
  444. return;
  445. }
  446. ShopDelivery shopDelivery = iShopDeliveryService.getByThirdShopIdAndMerchantId(merchant.getId(),kfAuthDto.getOpenid());
  447. if (shopDelivery == null){
  448. shopDelivery = new ShopDelivery();
  449. shopDelivery.setThirdShopId(kfAuthDto.getOpenid());
  450. shopDelivery.setMerchantId(merchant.getId());
  451. shopDelivery.setBindStatus(BindStatusEnum.BIND.status);
  452. shopDelivery.setDeliveryId(delivery.getId());
  453. shopDelivery.setAuthToken(kfAuthDto.getAccess_token());
  454. // 表示该商家是首次绑定,不是yes则是下过订单后的账户
  455. shopDelivery.setAccount("yes");
  456. iShopDeliveryService.save(shopDelivery);
  457. }
  458. }
  459. /**
  460. * 达达授权绑定
  461. * @param sourceId 三方门店ID
  462. * @param merchantCode 商家code
  463. * @param type
  464. * @param shopNo 门店编号,App账户会返回
  465. */
  466. @Override
  467. public void bindDaDa(String sourceId, String merchantCode, Integer type,String shopNo) {
  468. DspDelivery delivery = iDspDeliveryService.findOne(type);
  469. Merchant merchant = iMerchantService.getOne(new QueryWrapper<Merchant>().eq("code",merchantCode));
  470. if(merchant==null){
  471. log.info("达达绑定商家为空");
  472. return;
  473. }
  474. ShopDelivery shopDelivery = iShopDeliveryService.getOne(new QueryWrapper<ShopDelivery>().eq("merchant_id",merchant.getId()).
  475. eq("delivery_id",delivery.getId()).eq("deleted",0).isNull("shop_id"));
  476. if (shopDelivery == null){
  477. shopDelivery = new ShopDelivery();
  478. }
  479. shopDelivery.setThirdShopId(sourceId);
  480. shopDelivery.setMerchantId(merchant.getId());
  481. shopDelivery.setBindStatus(BindStatusEnum.WAIT_INFO.status);
  482. shopDelivery.setDeliveryId(delivery.getId());
  483. shopDelivery.setAccount("sssss");
  484. iShopDeliveryService.saveOrUpdate(shopDelivery);
  485. if (StringUtils.isNotBlank(shopNo)){
  486. shopDelivery.setBindStatus(BindStatusEnum.BIND.status);
  487. // 更新门店编号,同时查询余额
  488. getBalance( shopDelivery, delivery,merchant.getId(), delivery.getId(), shopNo);
  489. }
  490. }
  491. @Override
  492. public boolean bindUserApply(String mobile, String ip) {
  493. ResObject<BindUserApplyResponse> resObject = client.bindUserApply(mobile,ip);
  494. if(resObject.getCode()!=0){
  495. return false;
  496. }
  497. return true;
  498. }
  499. @Override
  500. public String bindUserSubmit(Long memberId,String mobile, String validateCode, String cityName) {
  501. log.info("绑定用户请求:memberId:{}",memberId);
  502. ResObject<BindUserSubmitResponse> resObject = client.bindUserSubmit(mobile,validateCode,cityName);
  503. if(resObject.getCode()==0){
  504. BindUserSubmitResponse response = resObject.getData();
  505. Member member = iMemberService.getById(memberId);
  506. DspDelivery delivery = iDspDeliveryService.findOne(DeliveryTypeEnums.UUPT.getType());
  507. Merchant merchant = iMerchantService.getById(member.getMerchantId());
  508. ShopDelivery shopDelivery = new ShopDelivery();
  509. shopDelivery.setAccount(mobile);
  510. ResObject<GetBalanceDetailResponse> res = client.getBalance(response.getOpenid());
  511. if(res.getCode().intValue()==0){
  512. String accountMoney = res.getData().getAccountMoney();
  513. shopDelivery.setBalance(new BigDecimal(accountMoney));
  514. }
  515. shopDelivery.setThirdShopId(response.getOpenid());
  516. shopDelivery.setMerchantId(merchant.getId());
  517. shopDelivery.setBindStatus(BindStatusEnum.BIND.status);
  518. shopDelivery.setDeliveryId(delivery.getId());
  519. iShopDeliveryService.save(shopDelivery);
  520. return "ok";
  521. }
  522. return resObject.getMsg();
  523. }
  524. @Override
  525. public String cancelBind(Long memberId,String mobile) {
  526. Member member = iMemberService.getById(memberId);
  527. DspDelivery delivery = iDspDeliveryService.findOne(DeliveryTypeEnums.UUPT.getType());
  528. ShopDelivery shopDelivery = iShopDeliveryService.getOne(new QueryWrapper<ShopDelivery>().eq("merchant_id",member.getMerchantId()).
  529. eq("delivery_id",delivery.getId()).isNull("shop_id"));
  530. log.info("uupt 解除绑定开始:"+JSONObject.toJSONString(shopDelivery));
  531. if(shopDelivery!=null&&shopDelivery.getAccount().equals(mobile)&&StringUtils.isNotBlank(shopDelivery.getThirdShopId())){
  532. String openId = shopDelivery.getThirdShopId();
  533. ResObject<CancelBindResponse> resObject = client.cancelBind(openId);
  534. if(resObject.getCode()==0){
  535. CancelBindResponse response = resObject.getData();
  536. log.info("uupt 解除绑定返回:"+JSONObject.toJSONString(response));
  537. // ShopDelivery shopDelivery1 = new ShopDelivery();
  538. // shopDelivery1.setBindStatus(BindStatusEnum.UNBIND.status);
  539. // iShopDeliveryService.update(shopDelivery1,new UpdateWrapper<ShopDelivery>().eq("third_shop_id",openId));
  540. iShopDeliveryService.removeById(shopDelivery.getId());
  541. return "ok";
  542. }
  543. return resObject.getMsg();
  544. }else{
  545. return "用户不存在" ;
  546. }
  547. }
  548. @Override
  549. public void bindHuoLaLa(TokenResponse tokenResponse) {
  550. DspDelivery delivery = iDspDeliveryService.findOne(DeliveryTypeEnums.HUO_LA_LA.getType());
  551. Merchant merchant = iMerchantService.findByMobile(tokenResponse.getAuthMobile());
  552. if (merchant==null){
  553. log.info("货拉拉商户绑定未找到,手机号为"+tokenResponse.getAuthMobile());
  554. }
  555. ShopDelivery shopDelivery = iShopDeliveryService.getByMerchantIdAndDeliveryId(merchant.getId(),delivery.getId());
  556. if (shopDelivery==null){
  557. shopDelivery=new ShopDelivery();
  558. shopDelivery.setMerchantId(merchant.getId());
  559. shopDelivery.setRefreshToken(tokenResponse.getRefreshToken());
  560. shopDelivery.setAuthToken(tokenResponse.getAccessToken());
  561. shopDelivery.setExpiresIn(tokenResponse.getExpires().getTime());
  562. shopDelivery.setDeliveryId(delivery.getId());
  563. shopDelivery.setBindStatus(BindStatusEnum.BIND.getStatus());
  564. iShopDeliveryService.save(shopDelivery);
  565. }
  566. }
  567. @Override
  568. public String findCity(String cityName) {
  569. HuoLaLaCity city = iHuoLaLaCityService.findCity(cityName);
  570. if (city!=null){
  571. return city.getCityId()+"";
  572. }else{
  573. return "";
  574. }
  575. }
  576. @Override
  577. public HCityInfo getCityInfo(String cityId) {
  578. HCityInfo cityInfo = iHuoLaLaCityService.getCityInfo(cityId);
  579. return cityInfo;
  580. }
  581. @Override
  582. public List<Haddress> poiSearch(HPoiSearch hPoiSearch) {
  583. List<Haddress> list = client.poiSearch(hPoiSearch);
  584. return list;
  585. }
  586. }