Commit 4b2731a5 by 徐高华

Merge branch 'feature/xgh/2405迭代' into 'master'

Feature/xgh/2405迭代

See merge request !1823
parents e84aaf92 53cc3326
package com.gic.haoban.manage.api.dto;
import java.io.Serializable;
public class CommonDataMQDTO implements Serializable {
/**
* @Fields serialVersionUID : TODO(用一句话描述这个变量表示什么)
*/
private static final long serialVersionUID = -5681421708810402425L;
// 1删除日报定时 2无部门成员修复
private int type;
private Object params;
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public Object getParams() {
return params;
}
public void setParams(Object params) {
this.params = params;
}
}
...@@ -38,6 +38,16 @@ public class ExternalClerkRelatedDTO implements Serializable { ...@@ -38,6 +38,16 @@ public class ExternalClerkRelatedDTO implements Serializable {
private Date updateTime; private Date updateTime;
private Date halfDelTime ;
public Date getHalfDelTime() {
return halfDelTime;
}
public void setHalfDelTime(Date halfDelTime) {
this.halfDelTime = halfDelTime;
}
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
public String getHeadUrl() { public String getHeadUrl() {
......
package com.gic.haoban.manage.api.dto.qdto.hm; package com.gic.haoban.manage.api.dto.qdto.hm;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date;
public class WxUserAddLogQDTO implements Serializable{ public class WxUserAddLogQDTO implements Serializable{
...@@ -20,6 +21,33 @@ public class WxUserAddLogQDTO implements Serializable{ ...@@ -20,6 +21,33 @@ public class WxUserAddLogQDTO implements Serializable{
private String staffName; private String staffName;
private String clerkId; private String clerkId;
private Integer addWay ; private Integer addWay ;
private Long qwAddTime ;
private String friendClerkId ;
private String friendStoreId ;
public String getFriendClerkId() {
return friendClerkId;
}
public void setFriendClerkId(String friendClerkId) {
this.friendClerkId = friendClerkId;
}
public String getFriendStoreId() {
return friendStoreId;
}
public void setFriendStoreId(String friendStoreId) {
this.friendStoreId = friendStoreId;
}
public Long getQwAddTime() {
return qwAddTime;
}
public void setQwAddTime(Long qwAddTime) {
this.qwAddTime = qwAddTime;
}
public Integer getAddWay() { public Integer getAddWay() {
return addWay; return addWay;
......
...@@ -65,6 +65,8 @@ public enum NoticeMessageTypeEnum { ...@@ -65,6 +65,8 @@ public enum NoticeMessageTypeEnum {
CUSTOMER_GET_COUPON(4004, "客户领券通知", NoticeMessageCategoryTypeEnum.CUSTOMER.getType(), "customer_get_coupon", "/pages/route/index?pageType=", "hbapp_customer_detail", "customerGetCoupon", "haobanNotice"), CUSTOMER_GET_COUPON(4004, "客户领券通知", NoticeMessageCategoryTypeEnum.CUSTOMER.getType(), "customer_get_coupon", "/pages/route/index?pageType=", "hbapp_customer_detail", "customerGetCoupon", "haobanNotice"),
CUSTOMER_APPLY_ORDER_REFUND(4005, "客户申请退单通知", NoticeMessageCategoryTypeEnum.CUSTOMER.getType(), "customer_apply_order_refund", "/pages/route/index?pageType=", "hbapp_customer_order_detail", "customerApplyChargebackOrder", "haobanNotice"), CUSTOMER_APPLY_ORDER_REFUND(4005, "客户申请退单通知", NoticeMessageCategoryTypeEnum.CUSTOMER.getType(), "customer_apply_order_refund", "/pages/route/index?pageType=", "hbapp_customer_order_detail", "customerApplyChargebackOrder", "haobanNotice"),
CUSTOMER_SUCCESS_ORDER_REFUND(4006, "客户成功退单通知", NoticeMessageCategoryTypeEnum.CUSTOMER.getType(), "customer_success_order_refund", "/pages/route/index?pageType=", "hbapp_user_bill_detail", "customerChargebackOrderSuccess", "haobanNotice"), CUSTOMER_SUCCESS_ORDER_REFUND(4006, "客户成功退单通知", NoticeMessageCategoryTypeEnum.CUSTOMER.getType(), "customer_success_order_refund", "/pages/route/index?pageType=", "hbapp_user_bill_detail", "customerChargebackOrderSuccess", "haobanNotice"),
FRIEND_DEL_STAFF(4007,"删除好友通知", NoticeMessageCategoryTypeEnum.CUSTOMER.getType(),"friend_del_staff","/pages/route/index?pageType=","hbapp_customer_detail","friendDelStaff","haobanNotice"),
// 订单- 待发货订单提醒 // 订单- 待发货订单提醒
ORDER_TAKE(5000, "待自提订单提醒", NoticeMessageCategoryTypeEnum.ORDER.getType(), "order_take", "/pages/route/index?pageType=", "hbapp_order_verfication", "toBePickUpOrderRemind", "haobanNotice"), ORDER_TAKE(5000, "待自提订单提醒", NoticeMessageCategoryTypeEnum.ORDER.getType(), "order_take", "/pages/route/index?pageType=", "hbapp_order_verfication", "toBePickUpOrderRemind", "haobanNotice"),
......
...@@ -332,4 +332,11 @@ public interface ExternalClerkRelatedApiService { ...@@ -332,4 +332,11 @@ public interface ExternalClerkRelatedApiService {
*/ */
List<ExternalUserClerkDTO> listExternalClerk(String enterpriseId , String memberId) ; List<ExternalUserClerkDTO> listExternalClerk(String enterpriseId , String memberId) ;
/**
* 单向好友数
*/
int halfFriendCount(String wxEnterpriseId , String storeId , String clerkId , String staffId) ;
Page<ExternalClerkRelatedDTO> halfFriendPage(String wxEnterpriseId , String storeId , String clerkId , String staffId,int type, BasePageInfo basePageInfo) ;
} }
package com.gic.haoban.manage.api.service; package com.gic.haoban.manage.api.service;
import com.gic.haoban.manage.api.dto.CommonDataMQDTO;
import com.gic.haoban.manage.api.dto.CommonMQDTO; import com.gic.haoban.manage.api.dto.CommonMQDTO;
import java.util.List; import java.util.List;
...@@ -16,10 +17,14 @@ public interface HaobanCommonMQApiService { ...@@ -16,10 +17,14 @@ public interface HaobanCommonMQApiService {
public void putCommonMessage(CommonMQDTO dto); public void putCommonMessage(CommonMQDTO dto);
public void putDataMessage(CommonDataMQDTO dto);
public void putCommonDelayMessage(CommonMQDTO dto , int delay); public void putCommonDelayMessage(CommonMQDTO dto , int delay);
public void commonHandler(String message); public void commonHandler(String message);
public void commonDataHandler(String message) ;
public void welcomeMQ(String params) ; public void welcomeMQ(String params) ;
public void putToNoticeMemberMQ(String enterpriseId, List<String> memberIdList) ; public void putToNoticeMemberMQ(String enterpriseId, List<String> memberIdList) ;
......
...@@ -120,5 +120,7 @@ public interface HaobanTimerApiService { ...@@ -120,5 +120,7 @@ public interface HaobanTimerApiService {
public void doErrorFriendTimer(String params) ; public void doErrorFriendTimer(String params) ;
public void halfTimer(String wxEnterpriseId) ;
} }
package com.gic.haoban.manage.web.controller;
import com.alibaba.fastjson.JSONObject;
import com.gic.authcenter.commons.util.IgnoreLogin;
import com.gic.commons.util.GlobalVar;
import com.gic.commons.util.HttpClient;
import com.gic.haoban.common.utils.HaobanResponse;
import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
public class QywxCallbackController extends WebBaseController {
private static final Logger logger = LoggerFactory.getLogger(QywxCallbackController.class);
private static final String url = "http://47.94.7.218:8089/wxwork/%s" ;
@RequestMapping("qywx-msg-notice")
@IgnoreLogin
public Object callback(HttpServletRequest request , HttpServletResponse response) throws IOException {
try {
String body = IOUtils.toString(request.getInputStream()) ;
logger.info("企微消息下发={}",body);
JSONObject jsonObject = JSONObject.parseObject(body) ;
int type = jsonObject.getIntValue("type") ;
String uuid = jsonObject.getString("uuid") ;
JSONObject json = jsonObject.getJSONObject("json") ;
this.post(type,uuid,json);
Map<String,String> map = new HashMap<>() ;
map.put("errcode","0") ;
map.put("errmsg","ok") ;
return map ;
}catch (Exception e) {
logger.info("异常",e);
}
return "ok" ;
}
private void post(int type , String uuid , JSONObject json) {
switch (type) {
case 100001 :
this.v100001(uuid,json) ;
break;
case 100002 :
this.v100002(uuid,json) ;
break;
case 100003 :
this.v100003(uuid,json) ;
break;
case 100004 :
this.v100004(uuid,json) ;
break;
case 100005 :
this.close(uuid,json) ;
break;
case 104001 :
this.loginSuccess(uuid,json) ;
break;
case 100012 :
this.v100012(uuid,json) ;
break;
case 100009 :
this.v100009(uuid,json) ;
break;
default:
break;
}
}
private void v100012(String uuid , JSONObject json) {
logger.info("需要二次扫码");
}
private void v100009(String uuid , JSONObject json) {
logger.info("超时未扫码关闭");
}
private void v100001(String uuid , JSONObject json) {
logger.info("用户扫码={}",uuid);
}
private void v100004(String uuid , JSONObject json) {
logger.info("需要输入验证码校验={}",uuid);
}
private void v100002(String uuid , JSONObject json) {
logger.info("验证码校验成功返回={}",uuid);
}
private void loginSuccess(String uuid , JSONObject json) {
logger.info("登录成功={}",uuid);
}
private void close(String uuid , JSONObject json) {
logger.info("退出={}",uuid);
}
private void v100003(String uuid , JSONObject json) {
logger.info("取消登录={}",uuid);
}
@RequestMapping("qywx-init")
@IgnoreLogin
public HaobanResponse init() {
String callbackUrl = GlobalVar.ctxPropertiesMap.get("haoban_service_host")+"/haoban-manage3-operation-web/qywx-msg-notice" ;
String map1 = HttpClient.sendPostJSON(String.format(url,"init") ,"{}","utf-8") ;
logger.info(map1);
JSONObject json = JSONObject.parseObject(map1) ;
String uuid = json.getJSONObject("data").getString("uuid") ;
JSONObject setCallbackUrl = new JSONObject() ;
setCallbackUrl.put("uuid",uuid) ;
setCallbackUrl.put("url",callbackUrl) ;
String map2 = HttpClient.sendPostJSON(String.format(url,"SetCallbackUrl"),setCallbackUrl.toJSONString(),"utf-8") ;
String map3 = HttpClient.sendPostJSON(String.format(url,"getQrCode"),setCallbackUrl.toJSONString(),"utf-8") ;
List<String> list = new ArrayList<>() ;
list.add(map1);
list.add(map2);
list.add(map3);
HaobanResponse resp = new HaobanResponse() ;
resp.setResult(list);
return resp ;
}
}
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
<mvc:interceptor> <mvc:interceptor>
<mvc:mapping path="/**"/> <mvc:mapping path="/**"/>
<mvc:exclude-mapping path="/get-pic-code"/> <mvc:exclude-mapping path="/get-pic-code"/>
<mvc:exclude-mapping path="/qywx-msg-notice"/>
<mvc:exclude-mapping path="/phone-login"/> <mvc:exclude-mapping path="/phone-login"/>
<mvc:exclude-mapping path="/upload-file*"/> <mvc:exclude-mapping path="/upload-file*"/>
<mvc:exclude-mapping path="/upload-file-voice"/> <mvc:exclude-mapping path="/upload-file-voice"/>
......
...@@ -435,4 +435,13 @@ public interface TabHaobanExternalClerkRelatedMapper { ...@@ -435,4 +435,13 @@ public interface TabHaobanExternalClerkRelatedMapper {
* @return * @return
*/ */
String getMemberIdByExternalId(@Param("wxEnterpriseId") String wxEnterpriseId, @Param("externalUserId") String externalUserId); String getMemberIdByExternalId(@Param("wxEnterpriseId") String wxEnterpriseId, @Param("externalUserId") String externalUserId);
int halfFriendCount(@Param("wxEnterpriseId") String wxEnterpriseId, @Param("storeId")String storeId, @Param("clerkId")String clerkId, @Param("staffId")String staffId);
List<TabHaobanExternalClerkRelated> halfFriendPage(@Param("wxEnterpriseId") String wxEnterpriseId, @Param("storeId")String storeId, @Param("clerkId")String clerkId, @Param("staffId")String staffId, @Param("type")int type);
List<TabHaobanExternalClerkRelated> halfDelFriendPage(@Param("wxEnterpriseId") String wxEnterpriseId , @Param("startItem")int startItem);
void updateHalfTime(@Param("id") String id , @Param("delTime") Date delTime) ;
} }
\ No newline at end of file
package com.gic.haoban.manage.service.dao.mapper.content.holo; package com.gic.haoban.manage.service.dao.mapper.content.holo;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Pair;
import cn.hutool.core.lang.TypeReference;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSON;
import cn.hutool.json.JSONUtil;
import com.alibaba.hologres.client.HoloClient; import com.alibaba.hologres.client.HoloClient;
import com.alibaba.hologres.client.HoloConfig; import com.alibaba.hologres.client.HoloConfig;
import com.ctrip.framework.apollo.Config; import com.ctrip.framework.apollo.Config;
...@@ -9,6 +18,12 @@ import org.springframework.beans.factory.DisposableBean; ...@@ -9,6 +18,12 @@ import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.Map;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
/** /**
* @Author MUSI * @Author MUSI
* @Date 2023/9/4 4:11 PM * @Date 2023/9/4 4:11 PM
...@@ -19,22 +34,34 @@ import org.springframework.stereotype.Component; ...@@ -19,22 +34,34 @@ import org.springframework.stereotype.Component;
@Component @Component
public class HoloDataSource implements InitializingBean, DisposableBean { public class HoloDataSource implements InitializingBean, DisposableBean {
HoloClient client; private volatile HoloClient client;
private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
public synchronized void init() {
public synchronized void init() {
try { try {
Config appConfig = ConfigService.getAppConfig(); Config appConfig = ConfigService.getAppConfig();
String holoUrl = appConfig.getProperty("holo.url", ""); String holoUrl = appConfig.getProperty("holo.url", "");
String holoUserName = appConfig.getProperty("holo.username", ""); Pair<String, String> holoAuth = getHoloAuth();
String holoPassword = appConfig.getProperty("holo.password", ""); if (holoAuth == null) {
log.info("holo链接初始化获取授权信息失败");
return;
}
String holoUserName = holoAuth.getKey();
String holoPassword = holoAuth.getValue();
HoloConfig holoConfig = new HoloConfig(); HoloConfig holoConfig = new HoloConfig();
holoConfig.setJdbcUrl(holoUrl); holoConfig.setJdbcUrl(holoUrl);
holoConfig.setUsername(holoUserName); holoConfig.setUsername(holoUserName);
holoConfig.setPassword(holoPassword); holoConfig.setPassword(holoPassword);
holoConfig.setConnectionMaxIdleMs(13000); holoConfig.setConnectionMaxIdleMs(13000);
this.client = new HoloClient(holoConfig); HoloClient newClient = new HoloClient(holoConfig);
this.client.setAsyncCommit(false); newClient.setAsyncCommit(false);
if (this.client != null) {
this.client.close();
this.client = null;
}
this.client = newClient;
log.info("holo链接初始化完成"); log.info("holo链接初始化完成");
}catch (Exception ex) { }catch (Exception ex) {
log.info("初始化client 异常 >>>", ex); log.info("初始化client 异常 >>>", ex);
...@@ -46,6 +73,7 @@ public class HoloDataSource implements InitializingBean, DisposableBean { ...@@ -46,6 +73,7 @@ public class HoloDataSource implements InitializingBean, DisposableBean {
if (client != null) { if (client != null) {
client.close(); client.close();
} }
scheduler.shutdown();
} }
@Override @Override
...@@ -53,13 +81,42 @@ public class HoloDataSource implements InitializingBean, DisposableBean { ...@@ -53,13 +81,42 @@ public class HoloDataSource implements InitializingBean, DisposableBean {
if (client == null) { if (client == null) {
this.init(); this.init();
} }
DateTime now = DateUtil.date();
Date todayTwo = DateUtil.beginOfDay(now).offset(DateField.HOUR_OF_DAY, 2);
if (now.after(todayTwo)) {
todayTwo = DateUtil.offsetDay(todayTwo, 1);
}
scheduler.scheduleAtFixedRate(this::reinitialize, DateUtil.between(now,todayTwo, DateUnit.SECOND,true), 24 * 60 * 60, TimeUnit.SECONDS);
} }
public HoloClient getClient() { public HoloClient getClient() {
if (this.client == null) { if (this.client == null) {
synchronized (this) {
if (this.client == null) {
this.init(); this.init();
} }
}
}
return this.client; return this.client;
} }
// 重新初始化方法
public synchronized void reinitialize() {
this.init();
}
private Pair<String, String> getHoloAuth() {
//{"appId":"ops_key","cluster":"default","namespaceName":"application","configurations":{"aliyun-key":"{\n\"LTAI5tGn2YicKmgcyTiJDV59\":\"iOp7cICESPZIvIjJRtTmLnCd4gT1Qy\"\n}"},"releaseKey":"20240412153514-b260f04ffbe11f4e"}
String result = HttpUtil.get("http://proapollo.gicdev.com:7080/configs/ops_key/default/application?key=aliyun-key",10000);
JSON json = JSONUtil.parse(result);
String authInfo = json.getByPath("configurations.aliyun-key", String.class);
JSON authJson = JSONUtil.parseObj(authInfo);
Map<String, String> map = authJson.toBean(new TypeReference<Map<String, String>>() {});
for (Map.Entry<String, String> entry : map.entrySet()) {
return new Pair<>(entry.getKey(), entry.getValue());
}
return null;
}
} }
...@@ -63,4 +63,11 @@ public interface WxUserAddLogMapper { ...@@ -63,4 +63,11 @@ public interface WxUserAddLogMapper {
*/ */
public List<TabWxUserAddLog> listForPage(WxUserAddLogSearchQDTO qdto); public List<TabWxUserAddLog> listForPage(WxUserAddLogSearchQDTO qdto);
/**
*
* @param externalUseridList
* @return
*/
public List<TabWxUserAddLog> listHalfDelTime(@Param("list")List<String> externalUseridList) ;
} }
\ No newline at end of file
...@@ -51,6 +51,16 @@ public class TabHaobanExternalClerkRelated implements Serializable { ...@@ -51,6 +51,16 @@ public class TabHaobanExternalClerkRelated implements Serializable {
private Integer externalStatus ; private Integer externalStatus ;
private Date halfDelTime ;
public Date getHalfDelTime() {
return halfDelTime;
}
public void setHalfDelTime(Date halfDelTime) {
this.halfDelTime = halfDelTime;
}
public Integer getExternalStatus() { public Integer getExternalStatus() {
return externalStatus; return externalStatus;
} }
......
package com.gic.haoban.manage.service.entity.hm; package com.gic.haoban.manage.service.entity.hm;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date;
/** /**
* *
...@@ -58,6 +59,34 @@ public class TabWxUserAddLog implements Serializable { ...@@ -58,6 +59,34 @@ public class TabWxUserAddLog implements Serializable {
private java.util.Date updateTime; private java.util.Date updateTime;
/**是否所有好友删除 1是0否*/ /**是否所有好友删除 1是0否*/
private Integer allDelFlag; private Integer allDelFlag;
private Long qwAddTime ;
private String friendClerkId ;
private String friendStoreId ;
public String getFriendClerkId() {
return friendClerkId;
}
public void setFriendClerkId(String friendClerkId) {
this.friendClerkId = friendClerkId;
}
public String getFriendStoreId() {
return friendStoreId;
}
public void setFriendStoreId(String friendStoreId) {
this.friendStoreId = friendStoreId;
}
public Long getQwAddTime() {
return qwAddTime;
}
public void setQwAddTime(Long qwAddTime) {
this.qwAddTime = qwAddTime;
}
public void setLogId(Long logId) { public void setLogId(Long logId) {
this.logId = logId; this.logId = logId;
......
...@@ -73,10 +73,10 @@ public class WxUserAddLogServiceImpl implements WxUserAddLogService { ...@@ -73,10 +73,10 @@ public class WxUserAddLogServiceImpl implements WxUserAddLogService {
if (qdto.isDelFlag()) { if (qdto.isDelFlag()) {
TabWxUserAddLog logUser = this.wxUserAddLogMapper.selectNewLog(externalUserid, qdto.getStaffId()); TabWxUserAddLog logUser = this.wxUserAddLogMapper.selectNewLog(externalUserid, qdto.getStaffId());
if(null == logUser) { if(null == logUser) {
log.info("删除好友") ; log.info("删除好友-无加的记录") ;
return ; }else {
}
entity = logUser; entity = logUser;
}
entity.setLogId(UniqueIdUtils.uniqueLong()); entity.setLogId(UniqueIdUtils.uniqueLong());
if(qdto.isDelClerkFlag()) { if(qdto.isDelClerkFlag()) {
entity.setStatusFlag(3); entity.setStatusFlag(3);
...@@ -142,11 +142,14 @@ public class WxUserAddLogServiceImpl implements WxUserAddLogService { ...@@ -142,11 +142,14 @@ public class WxUserAddLogServiceImpl implements WxUserAddLogService {
log.info("会员标签查询null,memberLabelId={}", memberLabelId); log.info("会员标签查询null,memberLabelId={}", memberLabelId);
} }
} }
}
if (null != qdto.getMemberId()) { if (null != qdto.getMemberId()) {
entity.setMemberId(qdto.getMemberId()); entity.setMemberId(qdto.getMemberId());
entity = this.addMemberInfo(qdto.getEnterpriseId(), qdto.getMemberId(), entity); entity = this.addMemberInfo(qdto.getEnterpriseId(), qdto.getMemberId(), entity);
} }
} entity.setQwAddTime(qdto.getQwAddTime());
entity.setFriendClerkId(qdto.getFriendClerkId());
entity.setFriendStoreId(qdto.getFriendStoreId());
this.wxUserAddLogMapper.insert(entity); this.wxUserAddLogMapper.insert(entity);
}catch(Exception e) { }catch(Exception e) {
log.info("异常",e); log.info("异常",e);
......
...@@ -167,6 +167,11 @@ public class ExternalClerkRelatedServiceImpl implements ExternalClerkRelatedServ ...@@ -167,6 +167,11 @@ public class ExternalClerkRelatedServiceImpl implements ExternalClerkRelatedServ
wxUserAddLogQDTO.setExternalUserid(related.getExternalUserId()); wxUserAddLogQDTO.setExternalUserid(related.getExternalUserId());
wxUserAddLogQDTO.setStaffId(related.getStaffId()); wxUserAddLogQDTO.setStaffId(related.getStaffId());
wxUserAddLogQDTO.setClerkId(related.getClerkId()); wxUserAddLogQDTO.setClerkId(related.getClerkId());
if(null != related.getAddTime()) {
wxUserAddLogQDTO.setQwAddTime(related.getAddTime());
}
wxUserAddLogQDTO.setFriendClerkId(related.getClerkId());
wxUserAddLogQDTO.setFriendStoreId(related.getStoreId());
wxUserAddLogService.save(wxUserAddLogQDTO); wxUserAddLogService.save(wxUserAddLogQDTO);
//定制 //定制
addDelFriendEvent(related.getUnionid(), related.getClerkId(), wxEnterpriseId, enterpriseId, related.getMemberId(), related.getStoreId(), 0); addDelFriendEvent(related.getUnionid(), related.getClerkId(), wxEnterpriseId, enterpriseId, related.getMemberId(), related.getStoreId(), 0);
......
...@@ -360,7 +360,8 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ ...@@ -360,7 +360,8 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ
String key = LOCK_KEY + wxEnterpriseId; String key = LOCK_KEY + wxEnterpriseId;
Object cache = RedisUtil.getCache(key); Object cache = RedisUtil.getCache(key);
if (null == cache) { if (null == cache) {
RedisUtil.setCache(key, taskId, 5L, TimeUnit.DAYS); logger.info("设置通讯录缓存={},{}",key,taskId);
RedisUtil.setCache(key, taskId, 3L, TimeUnit.HOURS);
return taskId; return taskId;
} }
return null; return null;
...@@ -387,14 +388,16 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ ...@@ -387,14 +388,16 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ
RedisUtil.setCache(sKey, taskId); RedisUtil.setCache(sKey, taskId);
} }
} }
logger.info("删除通讯录缓存={},{}",key,taskId);
RedisUtil.delCache(key); RedisUtil.delCache(key);
} }
@Override @Override
public String getTaskLock(String wxEnterpriseId) { public String getTaskLock(String wxEnterpriseId) {
String key = LOCK_KEY + wxEnterpriseId; String key = LOCK_KEY + wxEnterpriseId;
logger.info("缓存key={}",key); String v = (String) RedisUtil.getCache(key);
return (String) RedisUtil.getCache(key); logger.info("查询通讯录缓存key={},{}",key,v);
return v ;
} }
@Override @Override
...@@ -410,7 +413,10 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ ...@@ -410,7 +413,10 @@ public class DealSyncOperationApiServiceImpl implements DealSyncOperationApiServ
return syncCheckDTO; return syncCheckDTO;
} }
TabHaobanSyncTask syncTask = syncTaskService.getSyncTask(taskId); TabHaobanSyncTask syncTask = syncTaskService.getSyncTask(taskId);
if(Arrays.asList(4,5,6).contains(syncTask.getStatusFlag())) {
RedisUtil.delCache(sKey);
return syncCheckDTO;
}
/*int status = syncTask.getStatusFlag() ; /*int status = syncTask.getStatusFlag() ;
if(status != 4) { if(status != 4) {
int count = this.preDealService.countByTaskId(taskId) ; int count = this.preDealService.countByTaskId(taskId) ;
......
...@@ -7,6 +7,7 @@ import com.gic.clerk.api.dto.ClerkDTO; ...@@ -7,6 +7,7 @@ import com.gic.clerk.api.dto.ClerkDTO;
import com.gic.clerk.api.service.ClerkService; import com.gic.clerk.api.service.ClerkService;
import com.gic.commons.util.EntityUtil; import com.gic.commons.util.EntityUtil;
import com.gic.commons.util.GICMQClientUtil; import com.gic.commons.util.GICMQClientUtil;
import com.gic.commons.util.PageHelperUtils;
import com.gic.dubbo.entity.ProviderLocalTag; import com.gic.dubbo.entity.ProviderLocalTag;
import com.gic.enterprise.api.dto.StoreDTO; import com.gic.enterprise.api.dto.StoreDTO;
import com.gic.enterprise.api.service.StoreService; import com.gic.enterprise.api.service.StoreService;
...@@ -822,4 +823,30 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA ...@@ -822,4 +823,30 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
log.info("好友={}",JSONObject.toJSONString(retList)); log.info("好友={}",JSONObject.toJSONString(retList));
return retList; return retList;
} }
@Override
public int halfFriendCount(String wxEnterpriseId, String storeId, String clerkId, String staffId) {
return this.tabHaobanExternalClerkRelatedMapper.halfFriendCount(wxEnterpriseId, storeId, clerkId, staffId) ;
}
@Override
public Page<ExternalClerkRelatedDTO> halfFriendPage(String wxEnterpriseId, String storeId, String clerkId, String staffId, int type, BasePageInfo basePageInfo) {
Page<ExternalClerkRelatedDTO> retPage = null ;
try {
PageHelper.startPage(basePageInfo);
List<TabHaobanExternalClerkRelated> list = this.tabHaobanExternalClerkRelatedMapper.halfFriendPage(wxEnterpriseId, storeId, clerkId, staffId, type);
if(CollectionUtils.isNotEmpty(list)) {
for(TabHaobanExternalClerkRelated dto : list) {
if(null == dto.getHalfDelTime()) {
dto.setHalfDelTime(dto.getUpdateTime());
}
}
}
retPage = PageHelperUtils.changePageHelperToCurrentPage(list,
ExternalClerkRelatedDTO.class);
}catch (Exception e) {
log.info("error",e);
}
return retPage;
}
} }
package com.gic.haoban.manage.service.service.out.impl; package com.gic.haoban.manage.service.service.out.impl;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.gic.haoban.manage.api.dto.CommonDataMQDTO;
import com.gic.haoban.manage.service.dao.mapper.TabHaobanExternalClerkRelatedMapper;
import com.gic.haoban.manage.service.service.StaffClerkRelationService; import com.gic.haoban.manage.service.service.StaffClerkRelationService;
import com.gic.commons.util.StringUtil; import com.gic.commons.util.StringUtil;
import com.gic.haoban.manage.api.dto.MemberUnionidWechatAccountQDTO; import com.gic.haoban.manage.api.dto.MemberUnionidWechatAccountQDTO;
...@@ -51,6 +54,8 @@ public class HaobanCommonMQApiServiceImpl implements HaobanCommonMQApiService { ...@@ -51,6 +54,8 @@ public class HaobanCommonMQApiServiceImpl implements HaobanCommonMQApiService {
private StaffClerkRelationService staffClerkRelationService ; private StaffClerkRelationService staffClerkRelationService ;
@Autowired @Autowired
private HaobanMenuService haobanMenuService ; private HaobanMenuService haobanMenuService ;
@Autowired
private TabHaobanExternalClerkRelatedMapper externalClerkRelatedMapper ;
@Override @Override
public void putCommonMessage(CommonMQDTO dto) { public void putCommonMessage(CommonMQDTO dto) {
...@@ -65,6 +70,37 @@ public class HaobanCommonMQApiServiceImpl implements HaobanCommonMQApiService { ...@@ -65,6 +70,37 @@ public class HaobanCommonMQApiServiceImpl implements HaobanCommonMQApiService {
} }
@Override @Override
public void putDataMessage(CommonDataMQDTO dto) {
String message = JSONObject.toJSONString(dto);
log.info("加入好办通用队列params={}", message);
try {
mqClient.sendCommonMessage("haobanDataCommonRouter", message,
"com.gic.haoban.manage.api.service.HaobanCommonMQApiService", "commonDataHandler");
} catch (Exception e) {
log.error("发送MQ异常",e);
}
}
@Override
public void commonDataHandler(String message) {
CommonDataMQDTO dto = JSON.parseObject(message, CommonDataMQDTO.class);
switch (dto.getType()) {
case 1:
String listStr = dto.getParams().toString() ;
JSONArray list = JSONArray.parseArray(listStr) ;
for(int i=0;i<list.size();i++) {
JSONObject json = list.getJSONObject(i) ;
String id = json.getString("id") ;
Date delTime = json.getDate("delTime") ;
this.externalClerkRelatedMapper.updateHalfTime(id,delTime);
}
break;
default:
break;
}
}
@Override
public void putCommonDelayMessage(CommonMQDTO dto, int delay) { public void putCommonDelayMessage(CommonMQDTO dto, int delay) {
String message = JSONObject.toJSONString(dto); String message = JSONObject.toJSONString(dto);
log.info("加入好办延时通用队列params={}", message); log.info("加入好办延时通用队列params={}", message);
...@@ -75,6 +111,7 @@ public class HaobanCommonMQApiServiceImpl implements HaobanCommonMQApiService { ...@@ -75,6 +111,7 @@ public class HaobanCommonMQApiServiceImpl implements HaobanCommonMQApiService {
} }
} }
@Override @Override
public void commonHandler(String message) { public void commonHandler(String message) {
log.info("接收好办通用队列params={}", message); log.info("接收好办通用队列params={}", message);
......
package com.gic.haoban.manage.service.service.out.impl; package com.gic.haoban.manage.service.service.out.impl;
import com.alibaba.fastjson.JSONObject;
import com.gic.haoban.manage.api.dto.CommonDataMQDTO;
import com.gic.haoban.manage.api.service.HaobanCommonMQApiService;
import com.gic.haoban.manage.service.dao.mapper.TabHaobanExternalClerkRelatedMapper;
import com.gic.haoban.manage.service.dao.mapper.hm.WxUserAddLogMapper;
import com.gic.haoban.manage.service.entity.TabHaobanExternalClerkRelated;
import com.gic.haoban.manage.service.entity.hm.TabWxUserAddLog;
import com.gic.haoban.manage.service.service.QywxErrorLogService; import com.gic.haoban.manage.service.service.QywxErrorLogService;
import com.gic.haoban.manage.service.service.chat.GroupChatDataService; import com.gic.haoban.manage.service.service.chat.GroupChatDataService;
import com.gic.haoban.manage.service.util.DingUtils;
import com.gic.haoban.manage.service.util.HBQwMonitorUtils; import com.gic.haoban.manage.service.util.HBQwMonitorUtils;
import com.gic.redis.data.util.RedisUtil;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.joda.time.DateTime;
import org.redisson.api.RMap;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -14,8 +29,12 @@ import com.gic.haoban.manage.service.service.StaffDepartmentRelatedService; ...@@ -14,8 +29,12 @@ import com.gic.haoban.manage.service.service.StaffDepartmentRelatedService;
import com.gic.haoban.manage.service.service.chat.GroupChatService; import com.gic.haoban.manage.service.service.chat.GroupChatService;
import com.gic.haoban.manage.service.service.hm.HmQrcodeTempService; import com.gic.haoban.manage.service.service.hm.HmQrcodeTempService;
import java.util.*;
import java.util.stream.Collectors;
@Service("haobanTimerApiService") @Service("haobanTimerApiService")
public class HaobanTimerApiServiceImpl implements HaobanTimerApiService { public class HaobanTimerApiServiceImpl implements HaobanTimerApiService {
private static final Logger log = LogManager.getLogger(HaobanTimerApiService.class);
@Autowired @Autowired
private HmQrcodeTempService hmQrcodeTempService; private HmQrcodeTempService hmQrcodeTempService;
...@@ -31,6 +50,12 @@ public class HaobanTimerApiServiceImpl implements HaobanTimerApiService { ...@@ -31,6 +50,12 @@ public class HaobanTimerApiServiceImpl implements HaobanTimerApiService {
private GroupChatDataService groupChatDataService ; private GroupChatDataService groupChatDataService ;
@Autowired @Autowired
private QywxErrorLogService qywxErrorLogService ; private QywxErrorLogService qywxErrorLogService ;
@Autowired
private TabHaobanExternalClerkRelatedMapper externalClerkRelatedMapper ;
@Autowired
private WxUserAddLogMapper wxUserAddLogMapper ;
@Autowired
private HaobanCommonMQApiService haobanCommonMQApiService ;
@Override @Override
...@@ -102,4 +127,55 @@ public class HaobanTimerApiServiceImpl implements HaobanTimerApiService { ...@@ -102,4 +127,55 @@ public class HaobanTimerApiServiceImpl implements HaobanTimerApiService {
public void doErrorFriendTimer(String params) { public void doErrorFriendTimer(String params) {
this.qywxErrorLogService.doFriendTimer(params); this.qywxErrorLogService.doFriendTimer(params);
} }
@Override
public void halfTimer(String wxEnterpriseId) {
log.info("开始单向数据={}",wxEnterpriseId);
int pageSize = 1000 ;
int pageNum = 0;
RMap<String, String> mapCache = RedisUtil.getRedisClient().getMap("halfTimer_wxenterpriseId");
while (true) {
List<TabHaobanExternalClerkRelated> list = this.externalClerkRelatedMapper.halfDelFriendPage(wxEnterpriseId,pageNum*pageSize);
List<String> idList = new ArrayList<>() ;
if(CollectionUtils.isNotEmpty(list)) {
pageNum++;
for(TabHaobanExternalClerkRelated dto : list) {
if(StringUtils.isNotBlank(dto.getExternalUserId())) {
idList.add(dto.getExternalUserId()) ;
}else {
this.externalClerkRelatedMapper.updateHalfTime(dto.getExternalClerkRelatedId(),dto.getUpdateTime());
}
}
if(CollectionUtils.isNotEmpty(idList)) {
List<TabWxUserAddLog> logList= this.wxUserAddLogMapper.listHalfDelTime(idList);
Map<String, Date> map = new HashMap<>() ;
if(CollectionUtils.isNotEmpty(logList)) {
map = logList.stream().collect(Collectors.toMap(TabWxUserAddLog::getExternalUserid, o -> o.getCreateTime(), (k1, k2) -> k1));
}
List<JSONObject> jsonList = new ArrayList<>() ;
for(TabHaobanExternalClerkRelated dto : list) {
JSONObject json = new JSONObject() ;
json.put("id",dto.getExternalClerkRelatedId()) ;
if(null != map.get(dto.getExternalUserId())) {
//this.externalClerkRelatedMapper.updateHalfTime(dto.getExternalClerkRelatedId(),map.get(dto.getExternalUserId()));
json.put("delTime",map.get(dto.getExternalUserId())) ;
}else {
// this.externalClerkRelatedMapper.updateHalfTime(dto.getExternalClerkRelatedId(),dto.getUpdateTime());
json.put("delTime",dto.getUpdateTime()) ;
}
jsonList.add(json) ;
}
CommonDataMQDTO data = new CommonDataMQDTO() ;
data.setType(1);
data.setParams(jsonList);
this.haobanCommonMQApiService.putDataMessage(data);
}
}else {
break;
}
}
mapCache.put(wxEnterpriseId,"1") ;
DingUtils.send("halfTimer告警,wxEnterpriseId="+wxEnterpriseId, null, false);
log.info("结束单向数据={}",wxEnterpriseId);
}
} }
...@@ -4,6 +4,8 @@ import java.util.*; ...@@ -4,6 +4,8 @@ import java.util.*;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.gic.haoban.manage.api.enums.NoticeMessageTypeEnum;
import com.gic.haoban.manage.api.util.notify.NoticeMessageUtil;
import com.gic.haoban.manage.service.service.*; import com.gic.haoban.manage.service.service.*;
import com.gic.haoban.manage.service.util.EventUtils; import com.gic.haoban.manage.service.util.EventUtils;
import com.gic.haoban.manage.service.util.HBQwMonitorUtils; import com.gic.haoban.manage.service.util.HBQwMonitorUtils;
...@@ -247,8 +249,25 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA ...@@ -247,8 +249,25 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
wxUserAddLogQDTO.setStaffId(related.getStaffId()); wxUserAddLogQDTO.setStaffId(related.getStaffId());
wxUserAddLogQDTO.setClerkId(related.getClerkId()); wxUserAddLogQDTO.setClerkId(related.getClerkId());
wxUserAddLogQDTO.setDelClerkFlag(true); wxUserAddLogQDTO.setDelClerkFlag(true);
if(null != related.getAddTime()) {
wxUserAddLogQDTO.setQwAddTime(related.getAddTime());
}
wxUserAddLogQDTO.setFriendClerkId(related.getClerkId());
wxUserAddLogQDTO.setFriendStoreId(related.getStoreId());
if(!memberUnionidRelatedDTO.getSuiteid().equals("selfSuiteId")) {
wxUserAddLogService.save(wxUserAddLogQDTO); wxUserAddLogService.save(wxUserAddLogQDTO);
if(StringUtils.isNotBlank(related.getMemberId())) {
log.info("发送好友删成员通知,staffId={}",related.getStaffId());
// 发送通知
Map<String, String> map = new HashMap<String, String>();
map.put("memberName", related.getExternalName());
//参数
JSONObject jsonObject = new JSONObject();
jsonObject.put("memberId",related.getMemberId()) ;
int messageType = NoticeMessageTypeEnum.FRIEND_DEL_STAFF.getType();
NoticeMessageUtil.sendNoticeMessageByStaff(enterpriseId,related.getStaffId(),related.getClerkId(),messageType,related.getMemberId(),map,jsonObject);
}
}
addDelFriendEvent(related.getUnionid(), related.getClerkId(), wxEnterpriseId, enterpriseId, related.getMemberId(), related.getStoreId(), 0); addDelFriendEvent(related.getUnionid(), related.getClerkId(), wxEnterpriseId, enterpriseId, related.getMemberId(), related.getStoreId(), 0);
} }
...@@ -658,6 +677,11 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA ...@@ -658,6 +677,11 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
wxUserAddLogQDTO.setStaffName(staffName); wxUserAddLogQDTO.setStaffName(staffName);
wxUserAddLogQDTO.setClerkId(hyClerkId); wxUserAddLogQDTO.setClerkId(hyClerkId);
wxUserAddLogQDTO.setAddWay(dto.getAddWay()); wxUserAddLogQDTO.setAddWay(dto.getAddWay());
if(StringUtils.isNotBlank(dto.getAddCreateTime())) {
wxUserAddLogQDTO.setQwAddTime(Long.valueOf(createTime));
}
wxUserAddLogQDTO.setFriendClerkId(staffClerkRelationDTO.getClerkId());
wxUserAddLogQDTO.setFriendStoreId(staffClerkRelationDTO.getStoreId());
this.wxUserAddLogService.save(wxUserAddLogQDTO); this.wxUserAddLogService.save(wxUserAddLogQDTO);
RedisUtil.unlock(lockKey); RedisUtil.unlock(lockKey);
if(StringUtils.isNotBlank(memberId)) { if(StringUtils.isNotBlank(memberId)) {
...@@ -746,6 +770,9 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA ...@@ -746,6 +770,9 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
Date firstTime = new Date(); Date firstTime = new Date();
if (CollectionUtils.isNotEmpty(memberList)){ if (CollectionUtils.isNotEmpty(memberList)){
for (TabHaobanExternalClerkRelated a : memberList){ for (TabHaobanExternalClerkRelated a : memberList){
if(null == a.getAddTime()) {
continue;
}
Date addTime = new Date(a.getAddTime() * 1000L); Date addTime = new Date(a.getAddTime() * 1000L);
if ((a.getStatusFlag() == 1 || a.getStatusFlag() == 3 || a.getStatusFlag() == 4) && opTime.before(addTime)){ if ((a.getStatusFlag() == 1 || a.getStatusFlag() == 3 || a.getStatusFlag() == 4) && opTime.before(addTime)){
opTime= addTime; opTime= addTime;
......
...@@ -22,12 +22,13 @@ ...@@ -22,12 +22,13 @@
<result column="self_external_userid" property="selfExternalUserid"/> <result column="self_external_userid" property="selfExternalUserid"/>
<result column="add_time" property="addTime" jdbcType="INTEGER"/> <result column="add_time" property="addTime" jdbcType="INTEGER"/>
<result column="external_status" property="externalStatus" /> <result column="external_status" property="externalStatus" />
<result column="half_del_time" property="halfDelTime" />
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
external_clerk_related_id, wx_enterprise_id, enterprise_id, store_id, member_id, external_clerk_related_id, wx_enterprise_id, enterprise_id, store_id, member_id,
unionid, head_url,external_name, add_create_time, member_unionid_related_id, clerk_id, staff_id, unionid, head_url,external_name, add_create_time, member_unionid_related_id, clerk_id, staff_id,
relation_key, status_flag, create_time, update_time,external_user_id ,self_external_userid,add_time , external_status relation_key, status_flag, create_time, update_time,external_user_id ,self_external_userid,add_time , external_status , half_del_time
</sql> </sql>
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String"> <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String">
...@@ -313,7 +314,7 @@ ...@@ -313,7 +314,7 @@
from tab_haoban_external_clerk_related from tab_haoban_external_clerk_related
where staff_id = #{staffId,jdbcType=VARCHAR} where staff_id = #{staffId,jdbcType=VARCHAR}
and external_user_id = #{externalUserid} and external_user_id = #{externalUserid}
and status_flag = #{statusFlag} and status_flag = #{statusFlag} order by update_time desc
</select> </select>
...@@ -804,8 +805,11 @@ ...@@ -804,8 +805,11 @@
</update> </update>
<update id="updateExternalStatusById"> <update id="updateExternalStatusById">
update tab_haoban_external_clerk_related set external_status = #{status} , update_time=now() where update tab_haoban_external_clerk_related set external_status = #{status} , update_time=now()
external_clerk_related_id = #{id} <if test="status==3">
, half_del_time = now()
</if>
where external_clerk_related_id = #{id}
</update> </update>
<select id="getMemberForExternalId" resultMap="BaseResultMap"> <select id="getMemberForExternalId" resultMap="BaseResultMap">
...@@ -893,4 +897,34 @@ ...@@ -893,4 +897,34 @@
limit 1 limit 1
</select> </select>
<select id="halfFriendCount" resultType="java.lang.Integer">
select count(*) from tab_haoban_external_clerk_related where wx_enterprise_id = #{wxEnterpriseId} and status_flag in (1,3,4)
and staff_id = #{staffId} and clerk_id=#{clerkId} and store_id = #{storeId}
and external_status = 3
</select>
<select id="halfFriendPage" resultMap="BaseResultMap">
select <include refid="Base_Column_List"/> from tab_haoban_external_clerk_related
where wx_enterprise_id = #{wxEnterpriseId} and status_flag in (1,3,4)
and staff_id = #{staffId} and clerk_id=#{clerkId} and store_id = #{storeId} and external_status = 3
<if test="type==1">
and member_id is not null
</if>
<if test="type==2">
and member_id is null
</if>
</select>
<select id="halfDelFriendPage" resultMap="BaseResultMap">
select <include refid="Base_Column_List"/> from tab_haoban_external_clerk_related
where wx_enterprise_id = #{wxEnterpriseId} and status_flag in (1,3,4) and external_status = 3
and half_del_time is null limit ${startItem}, 1000
</select>
<update id="updateHalfTime">
update tab_haoban_external_clerk_related set
half_del_time = #{delTime}
where external_clerk_related_id = #{id}
</update>
</mapper> </mapper>
\ No newline at end of file
...@@ -34,6 +34,9 @@ ...@@ -34,6 +34,9 @@
<result column="create_time" property="createTime"/> <result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/> <result column="update_time" property="updateTime"/>
<result column="all_del_flag" property="allDelFlag"/> <result column="all_del_flag" property="allDelFlag"/>
<result column="qw_add_time" property="qwAddTime" />
<result column="friend_clerk_id" property="friendClerkId" />
<result column="friend_store_id" property="friendStoreId" />
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">
log_id , log_id ,
...@@ -66,7 +69,7 @@ ...@@ -66,7 +69,7 @@
member_label_name, member_label_name,
create_time, create_time,
update_time, update_time,
all_del_flag all_del_flag , qw_add_time , friend_clerk_id , friend_store_id
</sql> </sql>
<!-- ===================== 新增 ======================== --> <!-- ===================== 新增 ======================== -->
<insert id="insert" <insert id="insert"
...@@ -103,7 +106,7 @@ ...@@ -103,7 +106,7 @@
create_time, create_time,
update_time, update_time,
add_time, add_time,
all_del_flag) all_del_flag , qw_add_time , friend_clerk_id , friend_store_id)
VALUES (#{logId,jdbcType=BIGINT}, VALUES (#{logId,jdbcType=BIGINT},
#{wxEnterpriseId,jdbcType=VARCHAR}, #{wxEnterpriseId,jdbcType=VARCHAR},
#{enterpriseId,jdbcType=CHAR}, #{enterpriseId,jdbcType=CHAR},
...@@ -135,7 +138,7 @@ ...@@ -135,7 +138,7 @@
now(), now(),
now(), now(),
now(), now(),
#{allDelFlag,jdbcType=INTEGER}) #{allDelFlag,jdbcType=INTEGER} , #{qwAddTime} , #{friendClerkId} , #{friendStoreId})
]]> ]]>
</insert> </insert>
...@@ -204,4 +207,15 @@ ...@@ -204,4 +207,15 @@
</if> </if>
and status_flag = #{statusFlag} order by create_time ${createTimeOrder} and status_flag = #{statusFlag} order by create_time ${createTimeOrder}
</select> </select>
<select id="listHalfDelTime" resultMap="result-map-tabHaobanWxUserAddLog">
select
<include refid="Base_Column_List"/>
from tab_haoban_wx_user_add_log where status_flag = 3 and external_userid in
<foreach collection="list" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
order by create_time desc
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -4,6 +4,7 @@ import cn.hutool.crypto.SecureUtil; ...@@ -4,6 +4,7 @@ import cn.hutool.crypto.SecureUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.gic.clerk.api.dto.AuthorizedUser; import com.gic.clerk.api.dto.AuthorizedUser;
import com.gic.commons.util.DateUtil; import com.gic.commons.util.DateUtil;
import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.enterprise.api.dto.EnterpriseDTO; import com.gic.enterprise.api.dto.EnterpriseDTO;
import com.gic.enterprise.api.service.EnterpriseService; import com.gic.enterprise.api.service.EnterpriseService;
import com.gic.haoban.base.api.common.pojo.dto.WebLoginDTO; import com.gic.haoban.base.api.common.pojo.dto.WebLoginDTO;
...@@ -29,6 +30,9 @@ import org.springframework.web.multipart.MultipartFile; ...@@ -29,6 +30,9 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.HashSet; import java.util.HashSet;
...@@ -113,4 +117,23 @@ public class UploadController extends WebBaseController { ...@@ -113,4 +117,23 @@ public class UploadController extends WebBaseController {
} }
} }
@RequestMapping("copy-image-url")
public RestResponse<Object> imgUploadFee(String filetype , String fileUrl , @RequestParam(defaultValue = "0") int videoFlag) throws Exception {
WebLoginDTO login = AuthWebRequestUtil.getLoginUser();
String enterpriseId = login.getEnterpriseId() ;
EnterpriseDTO en = this.enterpriseService.getEnterpriseById(enterpriseId) ;
URL url = new URL(fileUrl);
URLConnection connection = url.openConnection();
connection.setConnectTimeout(1000 * 10);
connection.setReadTimeout(1000 * 10);
InputStream inputStream = connection.getInputStream();
CloudFileTypeEnum type = CloudFileTypeEnum.IMAGE ;
if(videoFlag==1) {
type = CloudFileTypeEnum.VIDEO ;
}
CloudFileInfo uploadInfo = CloudFileUtil.uploadFile(inputStream, filetype, type, en.getFactoryCode(), CloudFileBusinessOptEnum.COMMON) ;
logger.info("图片={}",JSONObject.toJSONString(uploadInfo));
return RestResponse.successResult(uploadInfo);
}
} }
...@@ -88,6 +88,22 @@ public class GicOrderController { ...@@ -88,6 +88,22 @@ public class GicOrderController {
@Autowired @Autowired
private EvaluateDataApiService evaluateDataApiService; private EvaluateDataApiService evaluateDataApiService;
// 1 虚拟商品; 2实物商品 3优惠券
// -1 全部 1 2 待发货 3已发货 4完成 关闭 0
@RequestMapping("list-member-integral-order")
public RestResponse<Object> listMemberIntegralOrder(String enterpriseId, String memberId,
@RequestParam(defaultValue = "2") Integer type,
@RequestParam(defaultValue = "-1") int status, BasePageInfo pageInfo) {
ListOrderManageQDTO qdto = new ListOrderManageQDTO();
qdto.setEnterpriseId(enterpriseId);
qdto.setOrderStep(status+"");
qdto.setGoodsType(type);
qdto.setMemberId(memberId);
qdto.setBusinessType(2);
logger.info("积分商城订单查询,qdto={}", JSON.toJSONString(qdto));
return this.orderListSelect(qdto, pageInfo, false);
}
// 发货订单列表 (0全部,待发货2+待收货3,部分发货7) // 发货订单列表 (0全部,待发货2+待收货3,部分发货7)
@RequestMapping("list-order") @RequestMapping("list-order")
public RestResponse<Object> orderList(String enterpriseId, String storeId, String clerkId, String search, public RestResponse<Object> orderList(String enterpriseId, String storeId, String clerkId, String search,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment