master
kira 6 years ago
parent 791ec028fe
commit de7b91a0eb

@ -27,5 +27,8 @@ public interface SysCustomerServiceMapper {
void update(JSONObject record); void update(JSONObject record);
void onoff(@Param("managerId") String managerId, @Param("status") int status); void onoff(@Param("managerId") String managerId, @Param("status") int status);
@AutoSql(type = SqlType.SELECT)
List<JSONObject> findAllWithDetail();
} }

@ -21,6 +21,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
@ -110,4 +111,28 @@ public class OpenimClient {
throw new ServerErrorException("System error"); throw new ServerErrorException("System error");
} }
} }
public static void main(String[] args) {
String appkey = "24980715";
String secret = "60b1ba680a6f27ffc701f10b6d5be00e";
String url = "https://eco.taobao.com/router/rest";
TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret);
OpenimUsersAddRequest req = new OpenimUsersAddRequest();
List<Userinfos> list2 = new ArrayList<Userinfos>();
Userinfos obj3 = new Userinfos();
list2.add(obj3);
obj3.setNick("king");
obj3.setIconUrl("https://ss0.baidu.com/73t1bjeh1BF3odCf/it/u=1948403834,955109320&fm=85&s=0D06E5134AD145F30C8D6D680300303A");
obj3.setUserid("kira1");
obj3.setPassword("xxxxxx");
req.setUserinfos(list2);
OpenimUsersAddResponse rsp = null;
try {
rsp = client.execute(req);
} catch (ApiException e) {
e.printStackTrace();
}
System.out.println(rsp.getBody());
}
} }

@ -7,6 +7,7 @@ import au.com.royalpay.payment.manage.merchants.core.ClientManager;
import au.com.royalpay.payment.manage.openim.beans.OpenimUserVO; import au.com.royalpay.payment.manage.openim.beans.OpenimUserVO;
import au.com.royalpay.payment.manage.openim.core.CustomerServiceService; import au.com.royalpay.payment.manage.openim.core.CustomerServiceService;
import au.com.royalpay.payment.manage.openim.core.OpenimApi; import au.com.royalpay.payment.manage.openim.core.OpenimApi;
import au.com.royalpay.payment.tools.connections.mpsupport.MpWechatApi;
import au.com.royalpay.payment.tools.connections.mpsupport.MpWechatApiProvider; import au.com.royalpay.payment.tools.connections.mpsupport.MpWechatApiProvider;
import au.com.royalpay.payment.tools.connections.mpsupport.beans.TemplateMessage; import au.com.royalpay.payment.tools.connections.mpsupport.beans.TemplateMessage;
import au.com.royalpay.payment.tools.exceptions.BadRequestException; import au.com.royalpay.payment.tools.exceptions.BadRequestException;
@ -16,15 +17,17 @@ import com.alibaba.fastjson.JSONObject;
import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.BoundListOperations;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -47,10 +50,14 @@ public class CustomerServiceServiceImpl implements CustomerServiceService {
private SysCustomerServiceMapper sysCustomerServiceMapper; private SysCustomerServiceMapper sysCustomerServiceMapper;
@Resource @Resource
private MpWechatApiProvider mpWechatApiProvider; private MpWechatApiProvider mpWechatApiProvider;
private final Map<String,Long> unReadMap = new HashMap<>(); @Resource
private StringRedisTemplate stringRedisTemplate;
private final String REDIS_UNREADMSG_PREFIX = "REDIS_UNREADMSG_PREFIX";
private final String REDIS_UNREADMSG_SEND_PREFIX = "REDIS_UNREADMSG_SEND_PREFIX";
@Value("${im.openim.appkey}") @Value("${im.openim.appkey}")
private String appkey; private String appkey;
@Override @Override
public JSONObject checkAndSave(JSONObject account) { public JSONObject checkAndSave(JSONObject account) {
JSONObject client = null; JSONObject client = null;
@ -139,39 +146,56 @@ public class CustomerServiceServiceImpl implements CustomerServiceService {
@Override @Override
public void addUnreadMsg(JSONObject params) { public void addUnreadMsg(JSONObject params) {
String key = params.getString("uid"); String uid = params.getString("uid");
if(unReadMap.containsKey(key)) { String tuid = params.getString("tuid");
unReadMap.put(key, unReadMap.get(key) + 1); if (StringUtils.isEmpty(uid) || StringUtils.isEmpty(tuid)) {
}else { return;
unReadMap.put(key,1L);
} }
BoundListOperations<String, String> ops = stringRedisTemplate.boundListOps("REDIS_UNREADMSG_PREFIX" + tuid);
for (int i = 0; i < ops.size(); i++) {
String jStr = ops.index(i);
if (jStr.contains(uid)) {
JSONObject record = JSONObject.parseObject(jStr);
record.put("unreadMsg", record.getIntValue("unreadMsg") + 1);
ops.set(i, record.toJSONString());
return;
}
}
params.put("unreadMsg", 1);
ops.rightPush(params.toJSONString());
} }
@Override @Override
public void sendUnreadWxMsg() { public void sendUnreadWxMsg() {
unReadMap.entrySet().parallelStream().forEach(p->{ List<JSONObject> servants = sysCustomerServiceMapper.findAllWithDetail();
JSONObject account = clientAccountMapper.findByUsername(p.getKey()); MpWechatApi paymentApi = mpWechatApiProvider.getNewPaymentApi();
if(StringUtils.isNotEmpty(account.getString("wx_openid"))){ servants.parallelStream().forEach(p -> {
// TemplateMessage msg = initAccountMsg(tradeInfo, client.getString("short_name"), time, String.valueOf(counts), openId, paymentApi.getTemplateId("transaction-daily")); p.getString("user_id");
// MpWechatApi paymentApi = mpWechatApiProvider.getNewPaymentApi(); BoundListOperations<String, String> ops = stringRedisTemplate.boundListOps("REDIS_UNREADMSG_PREFIX" + p.getString("user_id"));
// paymentApi.sendTemplateMessage(msg); if (ops.size() < 1) {
} return;
p.getKey(); }
int clients = 0;
int unreadMsg = 0;
for (int i = 0; i < ops.size(); i++) {
clients++;
unreadMsg += JSONObject.parseObject(ops.index(i)).getIntValue("unreadMsg");
}
TemplateMessage msg = initUnreadMsg(unreadMsg, clients, p.getString("wx_openid"), paymentApi.getTemplateId("commission"));
paymentApi.sendTemplateMessage(msg);
stringRedisTemplate.delete("REDIS_UNREADMSG_PREFIX" + p.getString("user_id"));
}); });
} }
private TemplateMessage initAccountMsg(JSONObject tradeInfo, String short_name, String time, String clientCounts, String openId, String templateId) { private TemplateMessage initUnreadMsg(int unreadMsg, int clients, String openId, String templateId) {
TemplateMessage msg = new TemplateMessage(openId, templateId, null); TemplateMessage msg = new TemplateMessage(openId, templateId, null);
String detail = "收款总额:" + tradeInfo.getBigDecimal("total") + "$, 收款笔数:" + tradeInfo.getString("orders") + ", 付款人数:" + tradeInfo.getString("customers"); msg.put("first", "你好,你有" + unreadMsg + "个未读消息", "#000000");
msg.put("first", "每日交易汇总数据(" + tradeInfo.getString("trade_date") + ")", "#000000"); msg.put("keyword1", "商户", "#000000");
msg.put("keyword1", short_name, "#000000"); msg.put("keyword2", "问题咨询", "#000000");
msg.put("keyword2", time, "#000000"); msg.put("keyword3", DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss"), "#000000");
msg.put("keyword3", clientCounts + "家", "#000000"); msg.put("keyword4", "你有" + clients + "个商户咨询待处理", "#0000ff");
msg.put("keyword4", detail, "#0000ff"); msg.put("remark", "", "#000000");
msg.put("remark", "详情请查看商户后台、APP或皇家支付小程序", "#000000");
msg.setMiniprogram("wx54445a7c56432d57", "/pages/welcome/welcome");
return msg; return msg;
} }

@ -11,4 +11,9 @@
set status = #{status} set status = #{status}
where manager_id = #{managerId} where manager_id = #{managerId}
</update> </update>
<select id="findAllWithDetail" resultType="com.alibaba.fastjson.JSONObject">
select s.user_id,s.onoff,m.* from
sys_customer_service s left join sys_managers m
on s.manager_id = m.manager_id
</select>
</mapper> </mapper>

@ -12,8 +12,8 @@
container: document.getElementById('J_demo'), container: document.getElementById('J_demo'),
width: 700, width: 700,
height: 500, height: 500,
uid: 'imuser123', uid: 'kira1',
appkey: 24960261, appkey: 24980715,
credential: 'xxxxxx', credential: 'xxxxxx',
touid: 'dalong', touid: 'dalong',
logo: 'http://img.alicdn.com/tps/i3/TB12LD9IFXXXXb3XpXXSyFWJXXX-82-82.png', logo: 'http://img.alicdn.com/tps/i3/TB12LD9IFXXXXb3XpXXSyFWJXXX-82-82.png',

Loading…
Cancel
Save